0

android-things デバイス (Raspberry Pi 3) で iBeacons を検出することは可能ですか?

Nearby Messages APIを使用して Bluetooth Low Energy (BLE) ビーコン メッセージをサブスクライブしようとしています。私のアプリはforegroundでibeacon メッセージをサブスクライブしますが、登録された iBeacon が検出されません。

すべて正常に動作しますが、開始時に次のメッセージが表示されます。

E/BluetoothAdapter: Bluetooth binder is null

Android デバイス (Raspberry Pi 3) での iBeacon 検出の経験がある人はいますか?

4

3 に答える 3

0

Nearby を使用して Raspberry Pi 3 で BLE デバイスをスキャンする際に問題が発生していると思われます。オンボードの Bluetooth LE チップに対する Android のドライバー インターフェイスに問題がある可能性があります。

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 に答える