Profils Bluetooth

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 classe BluetoothHeadset 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:

  1. Obtenez l'adaptateur par défaut, comme décrit dans la section Configuration Bluetooth.
  2. Configurez un BluetoothProfile.ServiceListener. Cet écouteur informe les clients BluetoothProfile lorsqu'ils sont connectés au service ou déconnectés de celui-ci.
  3. 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 de BluetoothHeadset.
  4. Dans onServiceConnected(), obtenez un handle pour l'objet proxy de profil.
  5. 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:

  1. Obtenez une référence à l'objet de proxy BluetoothHealth. Comme pour les casques standards et les appareils à profil A2DP, vous devez appeler getProfileProxy() avec un BluetoothProfile.ServiceListener et le type de profil HEALTH pour établir une connexion avec l'objet proxy de profil.

  2. Créez un BluetoothHealthCallback et enregistrez une configuration d'application (BluetoothHealthAppConfiguration) qui agit en tant que récepteur d'état.

  3. Établissez une connexion avec un appareil de santé.

  4. 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.

  5. 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.