Я пишу приложение, которое сканирует для устройств, затем отображает результаты в списке, чтобы пользователь мог нажать на устройство для подключения. У меня две проблемы. Один из них - когда я останавливаю Сканирование и подключаюсь к устройству, соединение не очень хорошо. (Светодиод на устройстве продолжает мигать, указывая на то, что соединение отключено и снова подключено.) Вторая проблема, которую я испытываю, заключается в том, что на некоторых телефонах я получить несколько результатов одного и того же устройства в списке. В методе OnLeScan() я помещаю устройства, которые я нахожу, в arraylist, который будет отображаться после завершения сканирования. Как я могу исправить свои проблемы. Я знаю, я использую старую Api для 21+Соединение Android BLE отключается
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);
}
}
Когда вы используете 'Set', вы можете просто выполнить' if (set.add (вещь)) {..} ', проверка содержимого встроена в add. – zapl
Правильно, я только что обновил свой ответ :) – androholic