ble デバイスをスキャンし、結果をリストビューに表示して、ユーザーがデバイスをクリックして接続できるようにするアプリを作成しています。私は2つの問題を抱えています。1 つは、スキャンを停止してデバイスに接続すると、接続がうまくいかないことです (デバイスの LED が点滅し続け、接続が切断され、再接続されていることを示します)。リストビューで同じデバイスの複数の結果を取得します。OnLeScan() メソッドでは、スキャンが完了すると表示されるように、見つけたデバイスを配列リストに入れています。問題を解決するにはどうすればよいですか。古い APi for 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);
}
}