Я работаю над приложением ble-android для общения. Иногда я получаю TYPE_GATT_ERROR, когда пытаюсь прочитать значения с любого устройства. Поэтому я люблю повторять сканирование и считывание значений каждый раз, когда виден TYPE_GATT_ERROR. в первый раз, когда это происходит, я хочу запустить сканирование снова через 30 секунд, и если в этот раз также, если код достигает сегмента TYPE_GATT_ERROR, он должен начать сканирование снова через 1 минуту и в третий раз, если он достигнет сегмента ошибки, он должен повторно сканировать со временем интервал 2 мин. Как я могу сделать это с приведенным ниже сегментом кода? В случае Elseif с условием TYPE_GATT_ERROR я хочу реализовать алгоритм повторных попыток.
private final BroadcastReceiver bleServiceReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent){
String type = intent.getExtras().getString(
BleReceivedService.EXTRA_TYPE);
if (BleReceivedService.TYPE_GATT_CONNECTED.equals(type)){
Log.d(TAG, " MYTAG DashBoard onReceive TYPE_GATT_CONNECTED");
if (BleReceivedService.getGatt() != null){
BleReceivedService.getGatt().discoverServices();
Log.d(TAG, " Connect Device");
stopScan();
}
} else if (BleReceivedService.TYPE_GATT_DISCONNECTED.equals(type)){
Log.d(TAG, " MYTAG Disconnect Device");
Log.d(TAG, " MYTAG DashBoard onReceive TYPE_GATT_DISCONNECTED");
BleReceivedService.getInstance().disconnectDevice();
if(isScanning) {
Log.d("ScanCheck","Scanning after disconnection");
stopScan();
}
} else if (BleReceivedService.TYPE_GATT_ERROR.equals(type)) {
Log.d(TAG, " MYTAG DashBoard onReceive TYPE_GATT_ERROR");
//here i want to call startscan() method in the above described fashion
} else {
//do someting
}
}
};
Пожалуйста, помогите мне с кодом для достижения этой цели.
Заранее спасибо.