Создать / Расписание уведомлений Android в будущем - PullRequest
0 голосов
/ 29 апреля 2019

Планирование / создание уведомлений о будущем.

Так что я довольно долго отошел от разработки Android, и многое изменилось с такими вещами, как Android 8.0+ и тому подобное.

Вещии способ, которым я раньше больше не работал или устарел.Это заставляет меня задавать этот вопрос.

Как мне создавать / планировать уведомления на будущее?

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

Как я на самом деле это делаю сейчас?

Я потратил 2 дня на поиски учебников о том, как планировать уведомленияна будущее, но все уроки взяты из того, когда я смог использовать «старые способы», и некоторые из них я узнаю, изучая это в первый раз.

Я видел обсуждения каналов уведомлений и вещей о планированиив работниках?

Может ли кто-нибудь помочь мне, указав мне правильное направление или предоставить ссылки на то, как построить планировщик уведомлений?

1 Ответ

0 голосов
/ 29 апреля 2019

для диспетчера аварий ..

Date date = new Date();

            Calendar cal_now = Calendar.getInstance();
            cal_now.setTimeInMillis(System.currentTimeMillis());

            Calendar cal_alarm = Calendar.getInstance();
            cal_alarm.setTimeInMillis(System.currentTimeMillis());

            cal_now.setTime(date);
            cal_alarm.setTime(date);


cal_alarm.set(Calendar.HOUR_OF_DAY, your_hour);
            cal_alarm.set(Calendar.MINUTE, your_minute);
            cal_alarm.set(Calendar.SECOND, 0);
            cal_alarm.set(Calendar.MILLISECOND, 0);

            if (am_pmFormatOne.equals("AM")) {
                cal_alarm.set(Calendar.AM_PM, 0); // 0 = AM
            } else {
                cal_alarm.set(Calendar.AM_PM, 1); // 1 = PM
            }


if (cal_alarm.before(cal_now)) {
                    log.error("Today's time is passed, set alarm for tomorrow..");
                    cal_alarm.add(Calendar.DATE, 1);// Today's time is passed, set alarm for tomorrow..
                }


Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);

        PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), randomAlarmId, intent, 0);
        alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);

BroadCast Receiver ..

@Override
    public void onReceive(Context context, Intent intent) {

Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
        assert v != null;
        v.vibrate(5000);
}
...