Android BLE Beacon scan

Bluetooth LE был добавлен в Android 4.3, но, похоже, нет режима фонового сканирования, который бы пробуждал приложение после его регистрации, чтобы получать уведомление через доступный ULEID BLE в непосредственной близости.

Это, по-видимому, возможно через API iOS7 и iBeacons. Кто-нибудь знает, есть ли такая функция в Android 4.3 или есть ли хороший обход для периодического сканирования среды BLE для устройств 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/

Ответы

Ответ 1

Я думаю, что есть обходное решение, как показано ниже: Вам необходимо внедрить службу и создать поток для цикла while, чтобы вызвать mBluetoothAdapter.startLeScan(mLeScanCallback), затем вы можете проверить, запускаться ли с помощью определенного устройства и далее искать определенный UUID.

Ответ 2

Непосредственно из примера Android вы можете использовать обработчик:

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();
    }

Ответ 3

По моему опыту, лучше всего создать службу, которая будет работать. Важно только проверять, какие маяки вас интересуют, в противном случае вы будете тратить много сообщений о симуляции силового синтаксического анализа.

Эта библиотека может помочь вам выполнить сканирование только для интересующих вас iBeons: https://github.com/inthepocket/ibeacon-scanner-android

Кроме того, если сканирование невозможно (из-за отключения Bluetooth, "Отключить местоположение", разрешение отменено), вам нужно перезапустить сканирование каждый раз, когда все необходимые условия будут выполнены снова, здесь вам понадобятся широковещательные слушатели.

Условия сканирования:

  • У вас есть чип Bluetooth LE: любой.

  • Включите Bluetooth: any.

  • Местоположение: Android 6 +.

  • У вас есть разрешение на размещение в режиме реального времени: Android 6 +.

  • Максимальный запуск 5 сканирует через 30 секунд: Android 7 +.