Диспетчер аварийных сигналов не устанавливает сигналы тревоги для определенных дат или более 24 часов - PullRequest
0 голосов
/ 10 июня 2018

Вот моя функция для срабатывания будильника, она отлично работает для установки будильников в определенное время дня. Но когда я пытался установить будильник на следующий день или в течение 24 часов, он будет работать и не уведомляет меня.проверил некоторые решения, но не смог найти ответ.

Alarm Manger Code.java

 public void triggerAlarmManager(int alarmTriggerTime,int position) {
   // activealarm();

Intent alarmIntent = new Intent(context, AlarmReceiver.class);

 alarmIntent.putExtra("test",news_data.getName());
                             pendingIntent = 
  PendingIntent.getBroadcast(context,position+1, alarmIntent, 
  PendingIntent.FLAG_UPDATE_CURRENT);

    // get a Calendar object with current time
    Calendar cal = Calendar.getInstance();
    // add alarmTriggerTime seconds to the calendar object
    cal.add(Calendar.MINUTE, alarmTriggerTime);


    AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    //get instance of alarm manager
    manager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);//set alarm manager with entered timer by converting into milliseconds

    int days = alarmTriggerTime / 1440;
    int hours = (alarmTriggerTime % 1440)/60;
    int mins = alarmTriggerTime % 60;

    Toast.makeText(context, "Alarm Set for " + "Days:"+days+" Hours:"+hours+" Minutes:"+mins, Toast.LENGTH_SHORT).show();
    Intent intent1=new Intent(context,MainActivity.class);
    intent1.putExtra("ret","ret");
    context.startActivity(intent1);
}

Ответы [ 2 ]

0 голосов
/ 11 июля 2018

Чтобы установить будильник на любой другой день, сделайте следующее:

cal.set(Calendar.DATE,11);
cal.set(Calendar.HOUR, 8)
cal.set(Calendar.MINUTE,0)

Устанавливает будильник на 11-е число месяца в 8:00

.
0 голосов
/ 10 июня 2018

Ваш обновленный код:

public void triggerAlarmManager(int alarmTriggerTime,int position) {
   // activealarm();

Intent alarmIntent = new Intent(context, AlarmReceiver.class);

 alarmIntent.putExtra("test",news_data.getName());
                             pendingIntent = 
  PendingIntent.getBroadcast(context,position+1, alarmIntent, 
  PendingIntent.FLAG_UPDATE_CURRENT);

    Calendar setCalendar = Calendar.getInstance()
    // get a Calendar object with current time
    Calendar cal = Calendar.getInstance();
    // add alarmTriggerTime seconds to the calendar object
    cal.add(Calendar.MINUTE, alarmTriggerTime);

    if(cal.before(setCalendar))
            cal.add(Calendar.DATE,1);

    AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    //get instance of alarm manager
manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);//set alarm manager with entered timer by converting into milliseconds

    int days = alarmTriggerTime / 1440;
    int hours = (alarmTriggerTime % 1440)/60;
    int mins = alarmTriggerTime % 60;

    Toast.makeText(context, "Alarm Set for " + "Days:"+days+" Hours:"+hours+" Minutes:"+mins, Toast.LENGTH_SHORT).show();
    Intent intent1=new Intent(context,MainActivity.class);
    intent1.putExtra("ret","ret");
    context.startActivity(intent1);
}
...