0

是否可以在 android-things 设备(Raspberry Pi 3)上检测 iBeacons?

我尝试使用Nearby Messages API 订阅蓝牙低功耗 (BLE) 信标消息。我的应用在前台订阅了 iBeacon 消息,但不会检测到已注册的 iBeacon。

Everythings 工作正常,但在开始时我收到此消息:

E/BluetoothAdapter: Bluetooth binder is null

有人对 Android 设备(Raspberry Pi 3)上的 iBeacon 检测有经验吗?

4

3 回答 3

1

更新:自 Android Things 开发者预览版 3 发布以来,蓝牙和 BLE 现已推出。

蓝牙在当前版本的Android things中是禁用的,预计在不久的将来会包含在内。

于 2017-01-22T18:51:37.093 回答
0

根据发行说明:https ://developer.android.com/things/preview/releases.html

已知的问题

  • 蓝牙 API 当前已禁用。
于 2017-01-22T19:17:10.713 回答
0

我怀疑您在使用 Nearby 扫描 Raspberry Pi 3 上的 BLE 设备时遇到问题。这可能是 Android 的驱动程序接口与板载蓝牙 LE 芯片的问题。

Nearby 是一个难以排除故障的 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);
}

如果您运行此代码,您可以查看日志中是否有任何低级错误,以及在存在信标时计数器是否增加。

于 2017-01-22T13:28:36.340 回答