Intereting Posts
Android: как работает приложение Protector? Разница между кодом до и после super () Изменение скорости перехода ViewPager и setCurrentItem Передвиньте sherlock панели действий с помощью меню навигации ящика Android Studio: как удалить / фильтровать варианты сборки для отладки и выпуска buildTypes по умолчанию и сохранить только те, которые используют пользовательские типы buildTypes? Phonegap – поддержка push-уведомления Служба GeoCoder недоступна Вспышка внутри Android WebView – Как автоматически установить полноэкранный режим? Как программно читать дату создания Android-приложения Android? Android Eclipse Plugin «reset adb» дает ошибку «Ошибка Adb connection: EOF», а не блокировку, но что это такое? Что такое исключение NullPointerException и как его исправить? Следуйте за местоположением пользователя на MapView React Native AirBnb. Местоположение SDK не найдено. Определите местоположение с помощью sdk.dir в файле local.properties или с переменной окружения ANDROID_HOME Android: как конвертировать весь ImageView в Bitmap? Как удалить определенное разрешение при создании приложения Android с помощью градиента?

Android BLE Beacon scan

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

Это, по-видимому, возможно с помощью iOS7 и iBeacons API. Кто-нибудь знает, есть ли такая функция в Android 4.3 или есть ли хороший обход для периодического сканирования среды BLE для устройств BLE?

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

Estimote Details iOS 7 iBeacon Support For Its Contextual Proximity Shopping Devices

Solutions Collecting From Web of "Android BLE Beacon scan"

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

Непосредственно из примера 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(); } 

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

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

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

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

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

  • Есть Bluetooth на: любой.

  • Место нахождения на: Android 6+.

  • Имеют разрешение на время выполнения: Android 6+.

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