Panduan ini membahas cara merutekan audio untuk perangkat Bluetooth menggunakan Telecom API dan menyetel koneksi untuk Panggilan VoIP. Baca Panduan Membuat aplikasi panggilan sebelum melanjutkan.
Dengan menggunakan ConnectionService
dan Connection
, Anda dapat mengakses
status audio dan daftar perangkat Bluetooth yang tersedia, serta dapat merutekan
audio ke perangkat Bluetooth yang dipilih.
Koneksi VoIP dan Layanan Koneksi
Buat class VoIPConnection
yang diperluas dari
Connection
. Class ini mengontrol status panggilan saat ini. Sebagai
Panduan Membuat aplikasi panggilan
status, jadikan aplikasi ini dikelola sendiri dan setel mode audio untuk VoIP
aplikasi.
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); } }
Berikutnya, tampilkan instance class ini di
ConnectionService
jika
akan terjadi panggilan masuk
atau keluar.
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 Connection
dan kustom ini
ConnectionService
kelas, Anda
dapat mengontrol perangkat dan jenis perutean audio yang ingin Anda gunakan selama
panggilan telepon.
Mendapatkan status audio saat ini
Untuk mendapatkan status audio saat ini, panggil
getCallAudioState()
getCallAudioState()
akan dikembalikan jika perangkat melakukan streaming menggunakan Bluetooth, Earphone, Berkabel, atau
Pembicara.
mAudioState = connection.getCallAudioState()
Saat Status Diubah
Berlangganan perubahan di CallAudioState dengan mengganti
onCallAudioStateChanged()
Tindakan ini akan memberi tahu Anda tentang setiap perubahan 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 akan menampilkan perangkat Bluetooth yang aktif.
Kotlin
val activeDevice: BluetoothDevice = mAudioState.getActiveBluetoothDevice()
Java
BluetoothDevice activeDevice = mAudioState.getActiveBluetoothDevice();
Dapatkan perangkat Bluetooth
Dapatkan daftar perangkat Bluetooth yang tersedia untuk perutean 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 level API 23 dan yang lebih tinggi
Aktifkan
ROUTE_BLUETOOTH
tanpa menentukan
perangkat yang menggunakan
setAudioRoute(int)
.
Secara default, pemilihan rute ini akan dilakukan ke perangkat Bluetooth aktif saat ini di Android 9 dan yang lebih baru.
setAudioRoute(CallAudioState.ROUTE_BLUETOOTH);