2017-01-22 12 views
0

Возможно ли обнаружить iBeacons на устройствах с Android-железом (Raspberry Pi 3)?Обнаружение iBeacons на устройствах с Android-железом (Raspberry Pi 3)

Я пытаюсь подписаться на радиомаяки Bluetooth Low Energy (BLE) с помощью Nearby Messages API. Мое приложение подписывается на сообщения ibeacon в foreground, но зарегистрированные iBeacons не будут обнаружены.

Everythings работает нормально, но при запуске я получаю сообщение:

E/BluetoothAdapter: Bluetooth binder is null

ли кто-нибудь имеет опыт работы с обнаружением IBeacon на Android-устройствах вещи (Raspberry Pi 3)?

ответ

0

Я подозреваю, что у вас проблемы с проверкой на устройства BLE на малине Pi 3, используя рядом. Возможно, проблема связана с интерфейсом драйвера Android с встроенным чипом Bluetooth LE.

Рядом находится жесткий API для устранения неполадок, поскольку он является высоким и непрозрачным. Я бы попытался использовать API-интерфейсы сканирования низкого уровня, чтобы узнать, сможете ли вы улучшить обмен сообщениями об ошибках. Вы можете попробовать запустить мое простое приложение BLE packet counter. Он делает сканирование, как это и просто регистрирует подсчет результатов:

private BluetoothAdapter mBluetoothAdapter; 
private boolean mScanning; 
private Handler mHandler; 
private long mAdvertisementCount = 0; 
private BluetoothAdapter.LeScanCallback mLeScanCallback = 
     new BluetoothAdapter.LeScanCallback() { 
      @Override 
      public void onLeScan(final BluetoothDevice device, int rssi, 
           byte[] scanRecord) { 
       mAdvertisementCount++; 
       Log.d(TAG, ""+mAdvertisementCount); 
      } 
     }; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final BluetoothManager bluetoothManager = 
      (BluetoothManager) getSystemService(this.BLUETOOTH_SERVICE); 
    mBluetoothAdapter = bluetoothManager.getAdapter(); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    mBluetoothAdapter.startLeScan(mLeScanCallback); 
} 

protected void onPause() { 
    super.onPause(); 
    mBluetoothAdapter.stopLeScan(mLeScanCallback); 
} 

Если запустить этот код вы можете увидеть, если вы получаете какие-либо ошибки низкого уровня в журналах, и если счетчик увеличивается в присутствии маяк.

1

Обновление: С момента выпуска предварительного просмотра Android Things 3 теперь доступны Bluetooth и BLE.

Bluetooth отключен в текущей версии Android-вещей, ожидается, что он будет включен в ближайшее время.