Ce guide explique comment router le contenu audio des appareils Bluetooth à l'aide des API Telecom et définissez la connexion pour Appels VoIP Consultez les Guide Créer une application d'appel avant de continuer.
En utilisant ConnectionService
et Connection
, vous pouvez accéder
l'état audio et la liste des périphériques Bluetooth disponibles, et peut acheminer
vers un appareil Bluetooth sélectionné.
Connexion et service de connexion VoIP
Créez une classe VoIPConnection
qui s'étend de
Connection
Cette classe contrôle l'état de l'appel en cours. En tant que
Guide Créer une application d'appel
s'effectue en tant qu'application autogérée et définissez le mode audio
application.
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); } }
Ensuite, renvoyez une instance de cette classe dans
ConnectionService
lorsqu'un
entrant ou sortant.
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(); } }
Assurez-vous que le fichier manifeste pointe correctement vers la classe 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>
Avec ces Connection
personnalisés et
ConnectionService
cours, vous
vous pouvez contrôler l'appareil et le type de routage audio à utiliser
.
Obtenir l'état actuel de l'audio
Pour obtenir l'état actuel de l'audio, appelez
getCallAudioState()
getCallAudioState()
apparaît si l'appareil diffuse du contenu en streaming via le Bluetooth, un écouteur, un câble ou
Enceinte :
mAudioState = connection.getCallAudioState()
Modification de l'état activé
S'abonner aux modifications de CallAudioState en remplaçant
onCallAudioStateChanged()
Vous êtes ainsi averti en cas de changement de l'état.
Kotlin
fun onCallAudioStateChanged(audioState: CallAudioState) { mAudioState = audioState }
Java
@Override public void onCallAudioStateChanged(CallAudioState audioState) { mAudioState = audioState; }
Obtenir l'appareil actuel
Obtenir l'appareil actif actuel à l'aide de
CallAudioState.getActiveBluetoothDevice()
Cette fonction renvoie l'appareil Bluetooth actif.
Kotlin
val activeDevice: BluetoothDevice = mAudioState.getActiveBluetoothDevice()
Java
BluetoothDevice activeDevice = mAudioState.getActiveBluetoothDevice();
Obtenir des appareils Bluetooth
Obtenez la liste des appareils Bluetooth disponibles pour le routage des appels via
CallAudioState.getSupportedBluetoothDevices()
Kotlin
val availableBluetoothDevices: Collection= mAudioState.getSupportedBluetoothDevices()
Java
CollectionavailableBluetoothDevices = mAudioState.getSupportedBluetoothDevices();
Rediriger l'audio de l'appel
Utiliser le niveau d'API 28 ou supérieur (recommandé)
Rediriger l'appel audio vers un appareil Bluetooth disponible via
requestBluetoothAudio(BluetoothDevice)
:
requestBluetoothAudio(availableBluetoothDevices[0]);
Avec le niveau d'API 23 ou supérieur
Activer
ROUTE_BLUETOOTH
sans spécifier l'appareil à l'aide de
setAudioRoute(int)
Ce paramètre de routage s'effectue par défaut vers les appareils Bluetooth actifs sous Android 9 ou version ultérieure.
setAudioRoute(CallAudioState.ROUTE_BLUETOOTH);