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
CollectionavailableBluetoothDevices = mAudioState.getSupportedBluetoothDevices();
Görüşme sesini yönlendirme
API düzeyi 28 ve üstünü kullanma (önerilir)
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);