我正在开发一个演示应用程序来扫描Blutooth Le设备。但startLeScan()返回null。我没有得到任何设备名称。我试过使用普通扫描它显示正常。我在这里添加我的代码段
private void scanLeDevice(final boolean enable) {
if (enable) {
// Stops scanning after a pre-defined scan period.
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
mScanning = false;
mTxtInfo.setText("Stopped Scanning.");
mBluetoothAdapter.stopLeScan(mLeScanCallback);
}
}, SCAN_PERIOD);
mScanning = true;
mTxtInfo.setText("Started Scanning...");
mBluetoothAdapter.startLeScan(mLeScanCallback);
} else {
mTxtInfo.setText("Stopped Scanning.");
mScanning = false;
mBluetoothAdapter.stopLeScan(mLeScanCallback);
}
}
这是我开始Le扫描的功能。
// Device scan callback.
private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device, int rssi,
byte[] scanRecord) {
runOnUiThread(new Runnable() {
@Override
public void run() {
mTxtInfo.setText("Detected devices: " + device.getName());
Toast.makeText(MainActivity.this,
"Detected devices: " + device.getName(),
Toast.LENGTH_LONG).show();
}
});
}
};
这是回调。它向我展示了
07-04 12:50:17.833: D/BluetoothAdapter(3564): startLeScan(): null
感谢任何帮助。
答案 0 :(得分:2)
问题是您正在尝试使用
startLeScan(callback)
不设置Uuid参数。因此,BluetoothAdapter代码可以执行以下操作:
startLeScan(null, callback)
背面并打印
"startLeScan:" + Uuid.
对你而言是空的。