почему повторная тревога не работает в Android - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть следующий код для установки повторного будильника в Android

private static void setAlarm (Context context, int hour, int minute) {

        //Log.i("AMIRA000" , "alarm schedule in : " + hour + " : " + minute);

        Calendar alarmCalendarTime = Calendar.getInstance();
        alarmCalendarTime.set(Calendar.HOUR_OF_DAY, hour);
        alarmCalendarTime.set(Calendar.MINUTE, minute);
        alarmCalendarTime.set(Calendar.SECOND, 0);
        alarmCalendarTime.setTimeZone(TimeZone.getTimeZone("gmt"));

        String diff = alarmCalendarTime.getTime().toString().substring(alarmCalendarTime.getTime().toString().indexOf("GMT"),
                alarmCalendarTime.getTime().toString().lastIndexOf(":"));
        diff = diff.replace("GMT" , "");

        Log.i("AMIRA000" , "diff str "  + diff);

        int diffHour = 0;
        if (diff.contains("+")) {

            diffHour = Integer.parseInt(diff.replace("+" , ""));
        } else {

            diffHour = -1 * Integer.parseInt(diff.replace("-" , ""));
        }


        if (alarmCalendarTime.before(Calendar.getInstance())) {
            alarmCalendarTime.add(Calendar.DAY_OF_MONTH, 1);
            Log.i("AMIRA000" , "tomorrow schedule : "  + alarmCalendarTime.getTime() + " : " + (alarmCalendarTime.getTimeInMillis() + TimeUnit.HOURS.toMillis(diffHour)));

        } else {
            Log.i("AMIRA000" , "today schedule : "  + alarmCalendarTime.getTime() + " : " + (alarmCalendarTime.getTimeInMillis() + TimeUnit.HOURS.toMillis(diffHour)));
        }

        AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        Intent receiverIntent = new Intent(context, AlarmReceiver.class);
        PendingIntent alarmIntent = PendingIntent.getBroadcast(context, 0, receiverIntent, 0);

        alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, (alarmCalendarTime.getTimeInMillis() + + TimeUnit.HOURS.toMillis(diffHour)), TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS), alarmIntent);

    }

код занимает час и мин и пытается рассчитать время на основе страны и расписания будильника

Я печатаюЗначения сигнала тревоги, и это кажется правильным, но сигнал тревоги не работает сегодня, я должен заранее указать день, чтобы вызвать метод onReceive

Может кто-нибудь сказать мне, что идет не так

...