Время до следующего сигнала в секундах или миллисекундах - PullRequest
0 голосов
/ 15 ноября 2011

С помощью этого кода я могу взять некоторую строку, например "Ср 10:10",

String nextAlarm = Settings.System.getString(getContentResolver(),
    Settings.System.NEXT_ALARM_FORMATTED);

, но я хочу указать значение в секундах до следующего сигнала тревоги.Это возможно ?Также было бы хорошо, если бы я мог прочитать значение поля описания и дни, когда этот сигнал включен.

1 Ответ

1 голос
/ 12 июня 2012

Вам нужно сделать это следующим образом

private void updateAlarmDate(String nextAlarm) {
    if (nextAlarm.length()==0 || nextAlarm == "") {
        return;
    }
    else
    {
        DateFormat sdf = new SimpleDateFormat("EEE hh:mm aa");
        Date alarmDate = null;
        try {
            alarmDate = sdf.parse(nextAlarm);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        int alarmDay = alarmDate.getDay();
        Calendar now = Calendar.getInstance();
        Date currentDate = now.getTime();
        int todayDay = currentDate.getDay();
        int daysDiff = 0;
        if (todayDay > alarmDay) {
            daysDiff = ((7 + (alarmDay - todayDay)) % 7) + 1;
        } else {
            daysDiff = ((7 + (alarmDay - todayDay)) % 7);
        }
        now.add(Calendar.DATE, daysDiff);
        AlarmFulldate = now.getTime();
        AlarmFulldate.setHours(alarmDate.getHours());
        AlarmFulldate.setMinutes(alarmDate.getMinutes());
        AlarmFulldate.setSeconds(0);
    }
}    

long millis = AlarmFulldate.getTime () - новая дата (). GetTime (); Переменная миллис будет иметь миллисекунды.

Используйте следующий код для получения дней, часов и минут от миллис

days = (int) (millis / (1000 * 60 * 60 * 24));
hours = (int) ((millis - (1000 * 60 * 60 * 24 * days)) / (1000 * 60 * 60));
min = (int) (millis - (1000 * 60 * 60 * 24 * days) - (1000 * 60 * 60 * hours))/(1000 * 60);

Надеюсь, это поможет вам

...