我懷疑在使用「附近」功能掃描Raspberry Pi 3上的BLE設備時遇到問題。這可能是Android的板載藍牙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);
}
如果你運行這段代碼,你可以,如果你在日誌中得到任何低級失誤看,如果在存在計數器增加一座燈塔。