Telecom API'yi kullanarak aramaları yönetme

Bu kılavuzda, Telecom API'yi kullanarak Bluetooth cihazlar için sesin nasıl yönlendirileceği ve VoIP çağrıları için bağlantının nasıl ayarlanacağı ele alınmaktadır. Devam etmeden önce Telefon araması uygulaması oluşturma kılavuzunu okuyun.

ConnectionService ve Connection sınıflarını kullanarak ses durumuna ve kullanılabilir Bluetooth cihazlarının listesine erişebilir, sesi belirli bir Bluetooth cihaza yönlendirebilirsiniz.

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

Connection tarihini kapsayan bir VoIPConnection sınıfı oluşturun. Bu sınıf, mevcut görüşmenin durumunu kontrol eder. Çağrı uygulaması oluşturma kılavuzunda belirtildiği gibi, bunu kendi kendine yönetilen bir uygulama yapın ve bir VoIP uygulaması için ses modunu ayarlayın.

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);
  }
}

Ardından, gelen veya giden bir çağrı gerçekleştiğinde ConnectionService içinde bu sınıfın bir örneğini döndürün.

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();
  }
}

Manifest'in VoIPConnectionService sınıfını doğru bir şekilde gösterdiğ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ıfları sayesinde, görüşme sırasında hangi cihazı ve hangi ses yönlendirme türünü kullanmak istediğinizi kontrol edebilirsiniz.

Sesin geçerli durumunu öğrenme

Sesin geçerli durumunu öğrenmek için getCallAudioState() numaralı telefonu arayın. getCallAudioState() cihazda Bluetooth, Kulaklık, Kablolu veya Hoparlör ile akış yapılıyorsa döndürülür.

mAudioState = connection.getCallAudioState()

Durumu Değiştirildi

onCallAudioStateChanged() değerini geçersiz kılarak CallAudioState'teki değişikliklere abone olun. Bu, durumda herhangi bir değişiklik olduğunda sizi uyarır.

Kotlin

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

Java

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

Geçerli cihazı al

CallAudioState.getActiveBluetoothDevice() ile etkin durumdaki geçerli cihazı edinin. Bu işlev, etkin Bluetooth cihazını döndürür.

Kotlin

val activeDevice: BluetoothDevice = mAudioState.getActiveBluetoothDevice()

Java

BluetoothDevice activeDevice = mAudioState.getActiveBluetoothDevice();

Bluetooth cihazları edinme

CallAudioState.getSupportedBluetoothDevices() ile arama ses yönlendirmesi için kullanılabilecek Bluetooth cihazların listesini alın.

Kotlin

val availableBluetoothDevices: Collection =
  mAudioState.getSupportedBluetoothDevices()

Java

Collection availableBluetoothDevices = mAudioState.getSupportedBluetoothDevices();

Görüşme sesini yönlendirme

Arama sesini, requestBluetoothAudio(BluetoothDevice) kullanarak kullanılabilir bir Bluetooth cihazına yönlendirin:

requestBluetoothAudio(availableBluetoothDevices[0]);

API düzeyi 23 ve üstünü kullanma

setAudioRoute(int) kullanarak cihazı belirtmeden ROUTE_BLUETOOTH özelliğini etkinleştirin. 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);