Telecom API'yi kullanarak aramaları yönetme

Bu kılavuzda, Telecom API'yi açıp şunun için bağlantıyı ayarlayın: VoIP aramaları Şunu okuyun: Telefon araması uygulaması oluşturma rehberi inceleyin.

ConnectionService kullanarak Connection sınıfta ses durumunu ve kullanılabilir Bluetooth cihazlarının listesini görebilir, sesi, seçilen Bluetooth cihazına ekleyin.

VoIP Bağlantısı ve Bağlantı Hizmeti

Şundan başlayan bir VoIPConnection sınıfı oluştur: Connection Bu sınıf, mevcut görüşmenin durumunu kontrol eder. Telefon araması uygulaması oluşturma rehberi bunu kendi kendine yönetilen bir uygulama yapın ve bir VoIP için ses modunu ayarlayın bir uygulamadır.

Kotlin

class VoIPConnection : Connection() {
  init {
    setConnectionProperties(PROPERTY_SELF_MANAGED)
    setAudioModeIsVoip(true)
  }
}

Java

public class VoIPConnection extends Connection {
  public VoIPConnection() {
    setConnectionProperties(PROPERTY_SELF_MANAGED);
    setAudioModeIsVoip(true);
  }
}

Sonra, şurada bu sınıfın bir örneğini döndürün: Şu durumda ConnectionService: sırasında görünür.

Kotlin

class VoIPConnectionService : ConnectionService() {
  override fun onCreateOutgoingConnection(
    connectionManagerPhoneAccount: PhoneAccountHandle,
    request: ConnectionRequest,
  ): Connection {
    return VoIPConnection()
  }
}

Java

public class VoIPConnectionService extends ConnectionService {
  @Override
  public Connection onCreateOutgoingConnection(PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request) {
    return new VoIPConnection();
  }
}

Manifestin VoIPConnectionService sınıfını doğru şekilde işaret ettiğinden emin olun.

<service android:name=".voip.TelegramConnectionService" android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE">
  <intent-filter>
    <action android:name="android.telecom.ConnectionService"/>
  </intent-filter>
</service>

Bu özel Connection ve ConnectionService sınıfta sırasında hangi cihaz türünü ve ne tür bir ses yönlendirmesi kullanmak istediğinizi çağrısına bir tıklama URL'si eklemeniz gerekir.

Sesin mevcut durumunu al

Mevcut ses durumunu öğrenmek için şunu arayın: getCallAudioState(). getCallAudioState() Bluetooth, Kulaklık, Kablolu veya Kablolu Hoparlör.

mAudioState = connection.getCallAudioState()

Durum Değiştirildiğinde

Geçersiz kılarak CallAudioState'teki değişikliklere abone olun onCallAudioStateChanged(). Bu uyarı, eyaletteki herhangi bir değişiklik konusunda sizi uyarır.

Kotlin

fun onCallAudioStateChanged(audioState: CallAudioState) {
  mAudioState = audioState
}

Java

@Override
public void onCallAudioStateChanged(CallAudioState audioState) {
  mAudioState = audioState;
}

Geçerli cihazı al

Geçerli etkin cihazı al: CallAudioState.getActiveBluetoothDevice(). Bu işlev, etkin Bluetooth cihazını döndürür.

Kotlin

val activeDevice: BluetoothDevice = mAudioState.getActiveBluetoothDevice()

Java

BluetoothDevice activeDevice = mAudioState.getActiveBluetoothDevice();

Bluetooth cihazları al

CallAudioState.getSupportedBluetoothDevices().

Kotlin

val availableBluetoothDevices: Collection =
  mAudioState.getSupportedBluetoothDevices()

Java

Collection availableBluetoothDevices = mAudioState.getSupportedBluetoothDevices();

Arama sesini yönlendir

Arama sesini, kullanılabilir bir Bluetooth cihazına yönlendirmek için kullanın: requestBluetoothAudio(BluetoothDevice):

requestBluetoothAudio(availableBluetoothDevices[0]);

API düzeyi 23 ve üstünü kullanıyorsanız

Etkinleştir ROUTE_BLUETOOTH cihazı belirtmeden setAudioRoute(int). Bu ayar varsayılan olarak Android 9 ve sonraki sürümleri çalıştıran mevcut, etkin Bluetooth cihazlara yönlendirilir.

setAudioRoute(CallAudioState.ROUTE_BLUETOOTH);