2012-09-20 3 views
1

Я делаю напоминание приложения. Если пользователь нажимает кнопку предупреждения, будильник должен быть установлен в течение следующих 3 часов, и уведомление должно отображаться в строке состояния через 3 часа.Android Set Уведомление через 3 часа

Я думаю, мне нужно использовать Alarm Manager для этого, но я не знаю, как добавить 3 часа к текущему системному времени и установить уведомление за это время.

+1

Разъяснения здесь: http://blog.blundell-apps.com/notification-for-a-user-chosen-time/, просто удалите календарь и установить его на 3 часа самостоятельно – Blundell

ответ

2

сигнализации Комплект на 5 сек от текущего времени:

Intent activate = new Intent(this, AlarmActivity.class); 
AlarmManager alarms ; 
PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, activate, 0); 
alarms = (AlarmManager) getSystemService(ALARM_SERVICE); 
alarms.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis()+5000, alarmIntent); 

Здесь 5000 был миллисекунды. Вы можете добавить целевое время в формате миллисекунд.

Если вы хотите установить его для определенного времени, сделайте следующее: вам необходимо установить будильник, чтобы позвонить в следующий раз, когда это 5:59:00. Вы делаете это, получая текущее время, если оно до 5:59:00, установите будильник, если его после 5:59:00 затем добавьте день и установите будильник. Делают это так:

import java.util.Calendar; 
import java.util.Date; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(new Panel(this)); 

    Date dat = new Date();//initialises to now 
    Calendar cal_alarm = Calendar.getInstance(); 
    Calendar cal_now = Calendar.getInstance(); 
    cal_now.setTime(dat); 
    cal_alarm.setTime(dat); 
    cal_alarm.set(Calendar.HOUR_OF_DAY,5);//set the alarm time 
    cal_alarm.set(Calendar.MINUTE, 59); 
    cal_alarm.set(Calendar.SECOND,0); 
    if(cal_alarm.before(cal_now)){//if its in the past increment 
     cal_alarm.add(Calendar.DATE,1); 
    } 
    //SET YOUR AlarmManager here 

} 
+1

Но как мы показываем уведомление через временной интервал. Нужно ли включать службу? – ZealDeveloper

+0

Для показа уведомления после определенного времени см. Это: http://blog.blundell-apps.com/notification-for-a-user-chosen-time/ –

2

следовать за ним

AlarmManager am = (AlarmManager) sContext.getSystemService(Context.ALARM_SERVICE); 
    am.set(AlarmManager.RTC, System.currentTimeMillis() + 3*60*60*1000, sAlertSender); 
Смежные вопросы