我正在编写一个扫描 ble 设备的应用程序,然后在列表视图中显示结果,以便用户可以单击设备进行连接。我有两个问题。一个是当我停止扫描并连接到设备时,连接不是很好。(设备上的 LED 一直闪烁表示连接正在断开并重新连接。)我遇到的第二个问题是在某些手机上我在列表视图中获取同一设备的多个结果。在 OnLeScan() 方法中,我将找到的设备放入数组列表中,以便在扫描完成后显示。我该如何解决我的问题。我知道我正在使用旧的 APi 21+
private BluetoothAdapter.LeScanCallback mLeScanCallback =
new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device, final int rssi,
byte[] scanRecord) {
runOnUiThread(new Runnable() {
@Override
public void run() {
mdevices.put(dcount, device);
names.add(mdevices.get(dcount).getName().toString() + " " + "MAC:" + mdevices.get(dcount).getAddress() + " " + rssi);
dcount++;
}
});
}
};
/////////////////////////////
public void scanDevice(boolean enable)
{
if(enable)
{
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
if (Build.VERSION.SDK_INT < 21) {
btAdapter.stopLeScan(mLeScanCallback);
}else
{
/// if I comment this out the connection is good
btAdapter.stopLeScan(mLeScanCallback);
}
}
}, 1100);
if (Build.VERSION.SDK_INT < 21) {
btAdapter.startLeScan(mLeScanCallback);
} else {
btAdapter.startLeScan(mLeScanCallback);
}
}
else
{
btAdapter.stopLeScan(mLeScanCallback);
}
}