在使用 Android BLE 的 startScan() 函数时,有时会出现无法回调的问题。这通常是因为未正确设置 BluetoothAdapter.LeScanCallback 对象或未获取适当的权限所致。
以下是修改代码来解决此问题的示例:
确定已经在 AndroidManifest.xml 文件中添加了以下权限:
在您的 Activity 或 Fragment 中的 onCreate() 方法中设置 BluetoothAdapter.LeScanCallback 对象:
private BluetoothAdapter.LeScanCallback leScanCallback = new BluetoothAdapter.LeScanCallback() { @Override public void onLeScan(final BluetoothDevice device, final int rssi, final byte[] scanRecord) { // Do something with the result here. Log.d(TAG, "Device found: " + device.getAddress()); } };
确保您调用了您的 BluetoothAdapter 对象的 startLeScan() 方法,并在其中传递 BluetoothAdapter.LeScanCallback 对象。
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); bluetoothAdapter.startLeScan(leScanCallback);
通过这些修改,您现在应该能够正常接收到 startScan() 函数的回调。