Android Publicité d'un appareil BLE


Exemple

Vous pouvez utiliser la publicité Bluetooth LE pour diffuser des paquets de données sur tous les appareils à proximité sans avoir à établir au préalable une connexion. Gardez à l'esprit qu'il existe une limite stricte de 31 octets de données publicitaires. La publicité de votre appareil est également la première étape pour permettre aux autres utilisateurs de se connecter à vous.

Comme tous les appareils ne prennent pas en charge la publicité Bluetooth LE, la première étape consiste à vérifier que votre appareil dispose de toutes les conditions requises pour le prendre en charge. Ensuite, vous pouvez initialiser un objet BluetoothLeAdvertiser et avec cela, vous pouvez lancer des opérations publicitaires:

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && bluetoothAdapter.isMultipleAdvertisementSupported())
        {
            BluetoothLeAdvertiser advertiser = bluetoothAdapter.getBluetoothLeAdvertiser();

            AdvertiseData.Builder dataBuilder = new AdvertiseData.Builder();
           //Define a service UUID according to your needs                
           dataBuilder.addServiceUuid(SERVICE_UUID);
            dataBuilder.setIncludeDeviceName(true);


             AdvertiseSettings.Builder settingsBuilder = new AdvertiseSettings.Builder();
             settingsBuilder.setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_POWER);
             settingsBuilder.setTimeout(0);

             //Use the connectable flag if you intend on opening a Gatt Server
             //to allow remote connections to your device.
             settingsBuilder.setConnectable(true);

            AdvertiseCallback advertiseCallback=new AdvertiseCallback() {
            @Override
            public void onStartSuccess(AdvertiseSettings settingsInEffect) {
                super.onStartSuccess(settingsInEffect);
                Log.i(TAG, "onStartSuccess: ");
            }

            @Override
            public void onStartFailure(int errorCode) {
                super.onStartFailure(errorCode);
                Log.e(TAG, "onStartFailure: "+errorCode );
            }
          };
advertising.startAdvertising(settingsBuilder.build(),dataBuilder.build(),advertiseCallback);
        }