Panduan ini membahas cara merutekan audio untuk perangkat Bluetooth menggunakan Telecom API dan menetapkan koneksi untuk panggilan VoIP. Baca panduan Mem-build aplikasi panggilan sebelum melanjutkan.
Dengan menggunakan class ConnectionService
dan Connection
, Anda dapat mengakses
status audio dan daftar perangkat Bluetooth yang tersedia, serta dapat mengarahkan
audio ke perangkat Bluetooth yang dipilih.
Koneksi dan ConnectionService VoIP
Buat class VoIPConnection
yang diperluas dari
Connection
. Class ini mengontrol status panggilan saat ini. Sebagai
status panduan Membuat aplikasi panggilan, jadikan aplikasi ini dikelola sendiri dan setel mode audio untuk aplikasi
VIP.
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); } }
Selanjutnya, tampilkan instance class ini di
ConnectionService
saat
panggilan masuk atau keluar terjadi.
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(); } }
Pastikan manifes mengarah dengan benar ke class VoIPConnectionService
.
<service android:name=".voip.TelegramConnectionService" android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE">
<intent-filter>
<action android:name="android.telecom.ConnectionService"/>
</intent-filter>
</service>
Dengan class Connection
dan
ConnectionService
kustom ini, Anda
dapat mengontrol perangkat dan jenis pemilihan rute audio yang ingin digunakan selama
panggilan.
Mendapatkan status audio saat ini
Untuk mendapatkan status audio saat ini, panggil
getCallAudioState()
.
getCallAudioState()
ditampilkan jika perangkat sedang streaming menggunakan Bluetooth, Earpiece, Wired, atau
Speaker.
mAudioState = connection.getCallAudioState()
Saat Status Diubah
Berlangganan perubahan di CallAudioState dengan mengganti
onCallAudioStateChanged()
.
Hal ini akan memberi tahu Anda jika ada perubahan pada status.
Kotlin
fun onCallAudioStateChanged(audioState: CallAudioState) { mAudioState = audioState }
Java
@Override public void onCallAudioStateChanged(CallAudioState audioState) { mAudioState = audioState; }
Mendapatkan perangkat saat ini
Dapatkan perangkat yang aktif saat ini menggunakan
CallAudioState.getActiveBluetoothDevice()
.
Fungsi ini menampilkan perangkat Bluetooth aktif.
Kotlin
val activeDevice: BluetoothDevice = mAudioState.getActiveBluetoothDevice()
Java
BluetoothDevice activeDevice = mAudioState.getActiveBluetoothDevice();
Dapatkan perangkat Bluetooth
Dapatkan daftar perangkat Bluetooth yang tersedia untuk pemilihan rute audio panggilan menggunakan
CallAudioState.getSupportedBluetoothDevices()
.
Kotlin
val availableBluetoothDevices: Collection= mAudioState.getSupportedBluetoothDevices()
Java
CollectionavailableBluetoothDevices = mAudioState.getSupportedBluetoothDevices();
Merutekan audio panggilan
Menggunakan API level 28 dan yang lebih tinggi (direkomendasikan)
Rutekan audio panggilan ke perangkat Bluetooth yang tersedia menggunakan
requestBluetoothAudio(BluetoothDevice)
:
requestBluetoothAudio(availableBluetoothDevices[0]);
Menggunakan API level 23 dan yang lebih tinggi
Aktifkan
ROUTE_BLUETOOTH
tanpa menentukan perangkat menggunakan
setAudioRoute(int)
.
Pemilihan rute default ini dilakukan ke perangkat Bluetooth yang aktif saat ini di Android 9 dan yang lebih baru.
setAudioRoute(CallAudioState.ROUTE_BLUETOOTH);