Android: - ошибка при сравнении текущего времени с временем, введенным пользователем?

Я хочу сравнить текущее время со временем, введенным в timepicker, чтобы мой телефон вибрировал во время, введенное пользователем в timepicker, он работает только для двузначного числа, например 10: 10,11: 12,12 : 14, но он не работает для однозначного времени, такого как 1:10, 2:10, 3:10 и т. Д., При сравнении однозначного числа с текущим временем из-за подстроки, потому что он переходит в условие ELSE, но он должен идти к условию else if однозначного числа?

    @Override

    public void onReceive(Context context, Intent intent) {
        myAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
        Date currenttime = Calendar.getInstance().getTime();
        settime = intent.getStringExtra("time");
        Log.e("=========","In Receiver");

        new Timer().schedule(new TimerTask() {
            @Override
            public void run() {
                try {
                    chk=checkSlaMissedOrNot(settime);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
        },0,1000);



                if (chk == true) {
                    Log.e("=========", "Phone vibrates");
                    myAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
                } else /*if (chk == false)*/{

                    Log.e("=========", "Phone not vibrating");
                   // checkSlaMissedOrNot(settime);
                    myAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);


                }


    }

    public boolean checkSlaMissedOrNot(String sla) throws ParseException {
        boolean slaMissedOrnot = false;
        Calendar cal = Calendar.getInstance();

        int hour = cal.get(Calendar.HOUR_OF_DAY);
        int min = cal.get(Calendar.MINUTE);

        if ((hour>0 && hour<10 && min>=0 && min <10)) {
            cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(sla.substring(0, 1)));
            cal.set(Calendar.MINUTE, Integer.parseInt(sla.substring(3,5)));
        }
         else if( (hour>0 && hour<10) && (min>9 && min <59) )
        {
            cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(sla.substring(0,1)));
            cal.set(Calendar.MINUTE, Integer.parseInt(sla.substring(4,6)));
        }
        else if( (hour>9 && hour<=12) && (min>9 && min<=59 )) //done
        {
            cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(sla.substring(0,2)));
           cal.set(Calendar.MINUTE, Integer.parseInt(sla.substring(5,7)));
        }

        else if( (hour>9 && hour<=12) && (min >0 && min<10)) //done
        {
            cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(sla.substring(0, 2)));
            cal.set(Calendar.MINUTE, Integer.parseInt(sla.substring(3,4)));
        }
        else
        {
            Log.e("=============","ELSE");
            cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(sla.substring(0,1)));
            cal.set(Calendar.MINUTE, Integer.parseInt(sla.substring(4,6)));

        }
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);
        Log.e("=========", "In Method");


            if (Calendar.getInstance().after(cal) ) { //if current time is after the entered time
                Log.e("==============", "in the if condition");
                myAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
                Log.e("=========", "Phone vibrates");
                slaMissedOrnot = true;

            } else {
                myAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);

                Log.e("==============", "in the else condition");
                slaMissedOrnot = false;
                Log.e("=========", "Phone not vibrates");

            }

            return slaMissedOrnot;
        }


}

лучший способ выполнить синтаксический анализ времени: stackoverflow.com/questions/19873864/… + format=new SimpleDateFormat("HH:mm");

leonardkraemer 11.04.2018 14:00

В настоящее время вы используете очень небезопасный способ проверки своего времени. Попробуйте разобрать String на объект Date с помощью SimpleDateFormat вместо того, чтобы сравнивать его, как сейчас.

Sander van't Veer 11.04.2018 14:03
0
2
32
0

Другие вопросы по теме