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.

KotlinJava
class VoIPConnection : Connection() {
 
init {
    setConnectionProperties
(PROPERTY_SELF_MANAGED)
    setAudioModeIsVoip
(true)
 
}
}
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.

KotlinJava
class VoIPConnectionService : ConnectionService() {
 
override fun onCreateOutgoingConnection(
    connectionManagerPhoneAccount
: PhoneAccountHandle,
    request
: ConnectionRequest,
 
): Connection {
   
return VoIPConnection()
 
}
}
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.

KotlinJava
fun onCallAudioStateChanged(audioState: CallAudioState) {
  mAudioState
= audioState
}
@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.

KotlinJava
val activeDevice: BluetoothDevice = mAudioState.getActiveBluetoothDevice()
BluetoothDevice activeDevice = mAudioState.getActiveBluetoothDevice();

Bluetooth cihazları al

CallAudioState.getSupportedBluetoothDevices().

KotlinJava
val availableBluetoothDevices: Collection
Collection

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