web-dev-qa-db-fra.com

Balayage de balises Android BLE

Bluetooth LE a été ajouté à Android 4.3, mais il semble qu’il n’existe aucun mode d’analyse en arrière-plan qui puisse réveiller une application une fois qu’elle s’est enregistrée pour être notifiée via un ULE BLE disponible à proximité. 

Cela semble être possible via iOS7 et l'API iBeacons. Est-ce que quelqu'un sait s'il existe une telle fonctionnalité dans Android 4.3 ou s'il existe une bonne solution de contournement pour analyser périodiquement l'environnement BLE à la recherche de périphériques BLE? 

http://developer.Android.com/guide/topics/connectivity/bluetooth-le.html

http://techcrunch.com/2013/09/11/estimote-details-ios-7-ibeacon-support-for-its-contextual-proximity-shopping-devices/

14
Sven Haiges

Je pense qu'il existe une solution de contournement comme ci-dessous: Vous devez implémenter un service et créer un thread en boucle while pour appeler le mBluetoothAdapter.startLeScan (mLeScanCallback), puis vous pouvez vérifier s'il est déclenché par un périphérique spécifique et poursuivre la recherche. UUID spécifique.

10
dull_boy

Directement à partir de l'exemple Android, vous pouvez utiliser un gestionnaire:

private void scanLeDevice(final boolean enable) {
        if (enable) {
            // Stops scanning after a pre-defined scan period.
            mHandler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    mScanning = false;
                    mBluetoothAdapter.stopLeScan(mLeScanCallback);
                    invalidateOptionsMenu();
                }
            }, SCAN_PERIOD);

            mScanning = true;
            mBluetoothAdapter.startLeScan(mLeScanCallback);
        } else {
            mScanning = false;
            mBluetoothAdapter.stopLeScan(mLeScanCallback);
        }
        invalidateOptionsMenu();
    }
1
JackAW

D'après mon expérience, il est préférable de créer un service qui continue à fonctionner. L'important est de ne rechercher que les balises qui vous intéressent, sinon vous perdrez beaucoup de temps à analyser les messages des balises.

Cette bibliothèque peut vous aider à rechercher uniquement les iBeacons qui vous intéressent: https://github.com/inthepocket/ibeacon-scanner-Android

En outre, lorsque l'analyse est impossible (Bluetooth désactivé, emplacement désactivé, autorisation révoquée), vous devez redémarrer l'analyse chaque fois que toutes les conditions requises sont remplies. Vous aurez besoin ici d'écouteurs de diffusion.

Conditions pour pouvoir scanner:

  • Avoir une puce Bluetooth LE:.

  • Avoir Bluetooth sur: tout.

  • Avoir l'emplacement sur: Android 6+.

  • Avoir l'autorisation d'exécution de l'emplacement: Android 6+.

  • Début maximal 5 analyses en 30 secondes: Android 7+.

0
Elias