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