Configurer le Bluetooth

Avant que votre application puisse communiquer via Bluetooth ou Bluetooth à basse consommation, vous devez vérifier que le Bluetooth est pris en charge sur l'appareil et, le cas échéant, vous assurer qu'il est activé. Notez que cette vérification n'est nécessaire que si l'attribut android:required dans l'entrée du fichier manifeste <uses-feature.../> est défini sur false.

Si le Bluetooth n'est pas pris en charge, vous devez désactiver correctement toutes les fonctionnalités Bluetooth. Si le Bluetooth est compatible, mais désactivé, vous pouvez demander à l'utilisateur d'activer le Bluetooth sans quitter votre application.

La première étape consiste à ajouter les autorisations Bluetooth à votre fichier manifeste pour pouvoir utiliser les API suivantes.

Une fois les autorisations en place, la configuration du Bluetooth s'effectue en deux étapes à l'aide de BluetoothAdapter:

  1. Obtenez le BluetoothAdapter.

    Le BluetoothAdapter est requis pour toutes les activités Bluetooth. BluetoothAdapter représente l'adaptateur Bluetooth propre de l'appareil (la radio Bluetooth). Pour obtenir un BluetoothAdapter, vous devez d'abord disposer d'un Context. Utilisez ce contexte pour obtenir une instance du service système BluetoothManager. En appelant BluetoothManager#getAdapter, vous obtenez un objet BluetoothAdapter. Si getAdapter() renvoie une valeur nulle, l'appareil n'est pas compatible avec le Bluetooth.

    Par exemple :

    Kotlin

    val bluetoothManager: BluetoothManager = getSystemService(BluetoothManager::class.java)
    val bluetoothAdapter: BluetoothAdapter? = bluetoothManager.getAdapter()
    if (bluetoothAdapter == null) {
      // Device doesn't support Bluetooth
    }
    

    Java

    BluetoothManager bluetoothManager = getSystemService(BluetoothManager.class);
    BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter();
    if (bluetoothAdapter == null) {
      // Device doesn't support Bluetooth
    }
    
  2. Activez le Bluetooth.

    Vous devez ensuite vous assurer que le Bluetooth est activé. Appelez isEnabled() pour vérifier si le Bluetooth est actuellement activé. Si cette méthode renvoie la valeur "false", le Bluetooth est désactivé. Pour demander l'activation du Bluetooth, appelez startActivityForResult() en transmettant une action d'intent ACTION_REQUEST_ENABLE. Cet appel envoie une demande d'activation du Bluetooth via les paramètres système (sans arrêter votre application).

    Par exemple :

    Kotlin

    if (bluetoothAdapter?.isEnabled == false) {
      val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
      startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT)
    }
    

    Java

    if (!bluetoothAdapter.isEnabled()) {
      Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
      startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
    }
    

Une boîte de dialogue s'affiche pour demander à l'utilisateur l'autorisation d'activer le Bluetooth, comme illustré dans la figure 1. Si l'utilisateur accorde l'autorisation, le système commence à activer le Bluetooth, et le curseur revient à votre application une fois que le processus est terminé (ou échoue).


Figure 1 : Boîte de dialogue d'activation du Bluetooth.

La constante REQUEST_ENABLE_BT transmise à startActivityForResult() est un entier défini localement qui doit être supérieur ou égal à 0. Le système vous transmet cette constante dans votre implémentation onActivityResult() en tant que paramètre requestCode.

Si l'activation du Bluetooth aboutit, votre activité reçoit le code de résultat RESULT_OK dans le rappel onActivityResult(). Si le Bluetooth n'a pas été activé en raison d'une erreur (ou si l'utilisateur a répondu "Refuser"), le code de résultat est RESULT_CANCELED.

Si vous le souhaitez, votre application peut également écouter l'intent de diffusion ACTION_STATE_CHANGED, que le système diffuse chaque fois que l'état du Bluetooth change. Cette diffusion contient les champs supplémentaires EXTRA_STATE et EXTRA_PREVIOUS_STATE, contenant respectivement les nouveaux et les anciens états Bluetooth. Les valeurs possibles de ces champs supplémentaires sont STATE_TURNING_ON, STATE_ON, STATE_TURNING_OFF et STATE_OFF. Écouter cette diffusion peut être utile si votre application doit détecter les modifications d'exécution apportées à l'état du Bluetooth.

Remarque:L'activation de la visibilité active automatiquement le Bluetooth. Si vous prévoyez d'activer systématiquement la visibilité des appareils avant d'effectuer une activité Bluetooth, vous pouvez ignorer l'étape 2 des étapes précédentes.

Une fois le Bluetooth activé sur l'appareil, vous pouvez utiliser à la fois les modes Bluetooth classique et Bluetooth à basse consommation.

Avec le Bluetooth classique, vous pouvez rechercher des appareils Bluetooth et vous y connecter.

Pour le Bluetooth à basse consommation, vous pouvez rechercher des appareils BLE, vous connecter à un serveur GATT et transférer des données BLE.