Обнаружение iBeacons на устройствах Android (Raspberry Pi 3)

Можно ли обнаружить iBeacons на устройствах Android (Raspberry Pi 3)?

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

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

E/BluetoothAdapter: Bluetooth binder is null

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


person capke    schedule 22.01.2017    source источник


Ответы (3)


Обновление. После выпуска предварительной версии 3 для разработчиков Android Things теперь доступны Bluetooth и BLE.

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

person shalafi    schedule 22.01.2017

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

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

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

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

person davidgyoung    schedule 22.01.2017

Согласно примечаниям к выпуску: https://developer.android.com/things/preview/releases.html

Известные проблемы

  • API-интерфейсы Bluetooth в настоящее время отключены.
person Blundell    schedule 22.01.2017