2013-09-19 4 views
14

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

ответ

10

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

+0

Я собираюсь реализовать именно это. Но вместо того, чтобы запускать непрерывную службу, я, вероятно, создаю широковещательный приемник и разбужу его каждые 1 минуту. Я использовал это, прежде чем Geofences были официально добавлены в игровые сервисы. Проблема с этим заключается в том, что информация/сканирование не распространяются среди приложений, и это будет менее эффективно. Но должен работать. –

+4

Ваше предложение в порядке и может быть использовано в некоторых случаях, но это скорее своего рода наивная реализация. Проблема с этим подходом, безусловно, будет потребляемой мощностью. Обратите внимание на эту строку на странице документации BLE «Чтобы найти устройства BLE, вы используете метод startLeScan(). Этот параметр принимает параметр BluetoothAdapter.LeScanCallback в качестве параметра. Вы должны реализовать этот обратный вызов, потому что так возвращаются результаты сканирования. интенсивно заряжается батареей ... «Я думаю, что есть, вероятно, лучшие способы сделать это что-то вроде регистрации для системных событий, таких как API геообложения – PSIXO

+5

+1 Для напоминания о документах, говорящих о том, что он интенсивно заряжен батареей. Вы также можете подключиться к устройству, которое еще не получила рекламу, и установить autoConnect в 'true'.(BluetoothDevice может быть создан следующим образом: «BluetoothAdapter.getDefaultAdapter(). GetRemoteDevice (« 20: 00: A0: 60: DD: 05 »);') Однако он подключается только при запуске сканирования. Кажется, что пока не происходит какого-либо фонового сканирования. Может быть, они добавят это позже. – OneWorld

1

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

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

Знаете ли вы, может быть, если я смогу обнаружить iBeacons с этим кодом или мне нужны дополнительные библиотеки? –

0

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

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

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

условия, чтобы иметь возможность сканировать:

  • Есть чип Bluetooth LE: любая.

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

  • Удаленное местоположение: Android 6+.

  • Наличие разрешения на временное размещение: Android 6+.

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

Смежные вопросы