2016-04-01 2 views
0
 Calendar calendar = Calendar.getInstance(); 
     Intent myIntent = new Intent(CubeActivity.this, MyReciever.class); 

     SharedPreferences shared = getApplicationContext().getSharedPreferences("notification5", getApplicationContext().MODE_PRIVATE); 
     SharedPreferences.Editor editor = shared.edit();  
     editor.putInt("minutes", (calendar.get(Calendar.HOUR_OF_DAY))-1); 
     editor.commit(); 

     myIntent.putExtra("minutes", (shared.getInt("minutes", 0))); 

     PendingIntent pendingIntent = PendingIntent.getBroadcast(CubeActivity.this, 0, myIntent,0); 

     AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
      alarmManager.set(AlarmManager.RTC_WAKEUP,shared.getInt("minutes", 0), pendingIntent); 
+0

Пожалуйста, объясните ваш вопрос правильно. –

+0

Используя метод диспетчера аварийных сигналов .set(), некоторые уведомления поступают через 24 часа, а затем нерегулярно после этого в телефонах kikat и lollipop. – kk2004

+0

Начиная с API 19, время запуска, переданное этому методу, рассматривается как неточное. Прочтите это -http: //developer.android.com/reference/android/app/AlarmManager.html#set (int, long, android.app.PendingIntent) –

ответ

0

Вы используете shared.getInt("minutes", 0) как время запуска. Однако время срабатывания должно быть в миллисекундах, чтобы сигнал тревоги погас.

Согласно API Docs:

общественного недействительными набор (тип INT, длинные triggerAtMillis, операция PendingIntent)

типа INT: Один из ELAPSED_REALTIME, ELAPSED_REALTIME_WAKEUP, RTC, или RTC_WAKEUP.

triggerAtMillis long: время в миллисекундах, что сигнал тревоги должен погаснуть, используя соответствующие часы (в зависимости от типа тревоги).

операция PendingIntent: действие, которое необходимо выполнить при отключении будильника; обычно происходит из IntentSender.getBroadcast().

0

Вместо использования

AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
alarmManager.set(AlarmManager.RTC_WAKEUP,shared.getInt("minutes", 0), pendingIntent); 

Использование ниже код:

long TICK_TIME = 60*1000; //the time to trigger alarm manager rite now its 1 minute 
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
alarmManager.set(AlarmManager.RTC_WAKEUP,Calendar.getInstance().getTimeInMillis(), TICK_TIME, pendingIntent); 
+0

Я хочу, чтобы будильник срабатывал каждые 24 часа. Какие параметры следует использовать? – kk2004

+0

24 * 60 * 60 * 1000 в течение 24 часов. – Pankaj

Смежные вопросы