Повторите попытку с разными интервалами каждый раз - PullRequest
0 голосов
/ 01 ноября 2018

Я работаю над приложением 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
            }
        }
    };

Пожалуйста, помогите мне с кодом для достижения этой цели.

Заранее спасибо.

...