L'API Bluetooth prend en charge l'utilisation de profils Bluetooth. Un profil Bluetooth est une spécification d'interface sans fil pour la communication Bluetooth entre des appareils, comme le profil mains libres. Pour qu'un appareil mobile se connecte à un casque sans fil, les deux appareils doivent être compatibles avec le profil mains libres.
L'API Bluetooth fournit des implémentations pour les profils Bluetooth suivants:
- Casque : Le profil Casque est compatible avec les casques Bluetooth à utiliser avec les téléphones mobiles. Android fournit la classe
BluetoothHeadset
, qui est un proxy permettant de contrôler le service de casque Bluetooth. Cela inclut les profils casque Bluetooth et mains libres (v1.5). La classeBluetoothHeadset
est compatible avec les commandes AT. Pour plus d'informations à ce sujet, consultez la section Commandes AT spécifiques aux fournisseurs. - A2DP : Le profil A2DP (Advanced Audio Distribution Profile) définit la manière dont un contenu audio de haute qualité peut être diffusé d'un appareil à un autre via une connexion Bluetooth. Android fournit la classe
BluetoothA2dp
, qui est un proxy permettant de contrôler le service Bluetooth A2DP. - Appareil de santé. Android est compatible avec le Bluetooth Health Device Profile (HDP). Cela vous permet de créer des applications qui utilisent le Bluetooth pour communiquer avec les appareils de santé compatibles avec le Bluetooth, tels que les cardiofréquencemètres, les tensiomètres, les thermomètres, les balances, etc. Pour obtenir la liste des appareils compatibles et des codes de spécialisation de données correspondants, consultez Spécialisations des données d'appareil HDP du Bluetooth.
Ces valeurs sont également référencées dans la spécification ISO/IEEE 11073-20601 [7] sous le nom
MDC_DEV_SPEC_PROFILE_*
dans l'annexe des codes de nomenclature. Pour en savoir plus sur le HDP, consultez le profil des appareils de santé.
Pour utiliser un profil, procédez comme suit:
- Obtenez l'adaptateur par défaut, comme décrit dans la section Configuration Bluetooth.
- Configurez un
BluetoothProfile.ServiceListener
. Cet écouteur informe les clientsBluetoothProfile
lorsqu'ils sont connectés au service ou déconnectés de celui-ci. - Utilisez
getProfileProxy()
pour établir une connexion à l'objet proxy de profil associé au profil. Dans l'exemple suivant, l'objet de proxy de profil est une instance deBluetoothHeadset
. - Dans
onServiceConnected()
, obtenez un handle pour l'objet proxy de profil. - Une fois que vous disposez de l'objet de proxy de profil, utilisez-le pour surveiller l'état de la connexion et effectuer d'autres opérations pertinentes pour ce profil.
L'extrait de code suivant montre comment se connecter à un objet proxy BluetoothHeadset
pour contrôler le profil Headset:
Kotlin
var bluetoothHeadset: BluetoothHeadset? = null // Get the default adapter val bluetoothAdapter: BluetoothAdapter? = BluetoothAdapter.getDefaultAdapter() private val profileListener = object : BluetoothProfile.ServiceListener { override fun onServiceConnected(profile: Int, proxy: BluetoothProfile) { if (profile == BluetoothProfile.HEADSET) { bluetoothHeadset = proxy as BluetoothHeadset } } override fun onServiceDisconnected(profile: Int) { if (profile == BluetoothProfile.HEADSET) { bluetoothHeadset = null } } } // Establish connection to the proxy. bluetoothAdapter?.getProfileProxy(context, profileListener, BluetoothProfile.HEADSET) // ... call functions on bluetoothHeadset // Close proxy connection after use. bluetoothAdapter?.closeProfileProxy(BluetoothProfile.HEADSET, bluetoothHeadset)
Java
BluetoothHeadset bluetoothHeadset; // Get the default adapter BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); private BluetoothProfile.ServiceListener profileListener = new BluetoothProfile.ServiceListener() { public void onServiceConnected(int profile, BluetoothProfile proxy) { if (profile == BluetoothProfile.HEADSET) { bluetoothHeadset = (BluetoothHeadset) proxy; } } public void onServiceDisconnected(int profile) { if (profile == BluetoothProfile.HEADSET) { bluetoothHeadset = null; } } }; // Establish connection to the proxy. bluetoothAdapter.getProfileProxy(context, profileListener, BluetoothProfile.HEADSET); // ... call functions on bluetoothHeadset // Close proxy connection after use. bluetoothAdapter.closeProfileProxy(bluetoothHeadset);
Commandes AT spécifiques au fournisseur
Les applications peuvent s'inscrire pour recevoir des diffusions système de commandes AT prédéfinies spécifiques au fournisseur envoyées par des casques (comme une commande Plantronics + XEVENT). Par exemple, une application peut recevoir des annonces qui indiquent le niveau de batterie d'un appareil connecté, et peut avertir l'utilisateur ou prendre d'autres mesures si nécessaire. Créez un broadcast receiver pour l'intent ACTION_VENDOR_SPECIFIC_HEADSET_EVENT
afin de gérer les commandes AT spécifiques au fournisseur pour le casque.
Profil de l'appareil de santé
Android est compatible avec le Bluetooth Health Device Profile (HDP). L'API Bluetooth Health inclut les classes BluetoothHealth
, BluetoothHealthCallback
et BluetoothHealthAppConfiguration
, qui sont décrites dans la section Classes et interfaces de clés.
Lorsque vous utilisez l'API Bluetooth Health, il est utile de comprendre ces concepts clés de HDP:
- Source
- Un appareil de santé, tel qu'une balance de poids, un glucomètre ou un thermomètre, qui transmet des données médicales à un appareil connecté, tel qu'un téléphone ou une tablette Android.
- Lavabo
- Appareil connecté qui reçoit les données médicales. Dans une application HDP, le récepteur est représenté par un objet
BluetoothHealthAppConfiguration
. - Enregistrements
- Processus utilisé pour enregistrer un récepteur afin de communiquer avec un appareil de santé particulier.
- Création d'un lien
- Processus utilisé pour ouvrir un canal entre un appareil de santé (source) et un appareil connecté (récepteur).
Créer une application HDP
Voici les étapes de base à suivre pour créer une application HDP:
Obtenez une référence à l'objet de proxy
BluetoothHealth
. Comme pour les casques standards et les appareils à profil A2DP, vous devez appelergetProfileProxy()
avec unBluetoothProfile.ServiceListener
et le type de profilHEALTH
pour établir une connexion avec l'objet proxy de profil.Créez un
BluetoothHealthCallback
et enregistrez une configuration d'application (BluetoothHealthAppConfiguration
) qui agit en tant que récepteur d'état.Établissez une connexion avec un appareil de santé.
Une fois connecté à un appareil de santé, vous pouvez lire et écrire des données sur cet appareil à l'aide du descripteur de fichier. Les données reçues doivent être interprétées à l'aide d'un gestionnaire de l'état qui met en œuvre les spécifications IEEE 11073.
Lorsque vous avez terminé, fermez le canal de santé et annulez l'enregistrement de l'application. Le canal se ferme également en cas d'inactivité prolongée.