2016-08-15 64 views
0

我是android新手,我想在11點通知我dialy的報警。我在網上找到了一些代碼,但不知道它的一部分。下面是代碼Dialy報警代碼解釋

public void onClick(View arg0) { 
// TODO Auto-generated method stub 

Intent myIntent = new Intent(AndroidAlarmService.this, MyAlarmService.class); 
pendingIntent = PendingIntent.getService(AndroidAlarmService.this, 0, myIntent, 0); 

     AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 

     Calendar calendar = Calendar.getInstance(); 
     calendar.setTimeInMillis(System.currentTimeMillis()); does 
     calendar.add(Calendar.SECOND, 10); 

     alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 5*1000, pendingIntent); 

Toast.makeText(AndroidAlarmService.this, "Start Alarm", Toast.LENGTH_LONG).show(); 
}}); 

任何一個可以解釋我這兩個線路確實

calendar.setTimeInMillis(System.currentTimeMillis()); does 
calendar.add(Calendar.SECOND, 10); 

而且還幫助我,我怎麼可以設置報警,將通知我,在同一時間,例如在上午11點

+1

此行意味着它獲得當前時間並在其中添加10秒鐘。 – KrishnaJ

+0

所以我如何設置報警,通知我dialy在上午11點 – FaisalAhmed

+0

看到我的答案:) – KrishnaJ

回答

2

調用此功能,你需要:

private void setDailyNotification(int ID, int hh, int mm, int ss) { 
    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
    Intent alarmIntent = new Intent(Dashboard.this, MyDailyReceiver.class); 
    alarmIntent.putExtra("ID", ID); 
    Log.d("setDailyNotification", "ID:" + ID); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(
      Dashboard.this, ID, alarmIntent, 
      PendingIntent.FLAG_UPDATE_CURRENT); 
    mEverydayPendingIntent = pendingIntent; 

    Calendar calendar = Calendar.getInstance(); 
    Calendar now = Calendar.getInstance(); 
    calendar.set(Calendar.HOUR_OF_DAY, hh); 
    calendar.set(Calendar.MINUTE, mm); 
    calendar.set(Calendar.SECOND, ss); 

    // check whether the time is earlier than current time. If so, set it to 
    // tomorrow. Otherwise, all alarms for earlier time will fire 

    if (calendar.before(now)) { 
     calendar.add(Calendar.DATE, 1); 
    } 
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, 
      calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, 
      mEverydayPendingIntent); 
    Log.d("setRepeated", "ID:" + ID); 

} 

廣播接收器:

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
       context); 
     mBuilder.setContentTitle("Daily Summery"); 
     mBuilder.setContentText("Today's Transaction"); 
     mBuilder.setSmallIcon(R.drawable.app_icon); 
     Log.d("tag1234", "In if" + daily_Reminder); 
     NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle(); 
     mBuilder.setStyle(inboxStyle); 
     mNotificationMa = (NotificationManager) context 
       .getSystemService(Context.NOTIFICATION_SERVICE); 
     mNotificationMa.notify(11, mBuilder.build()); 

通話功能是這樣的:

setDailyNotification(11, 11,00, 00); 
0

System.currentTimeMillis() - 從設備獲取當前時間。

calendar.setTimeInMillis() - 設置當前時間。

calendar.add(Calendar.SECOND, 10) - 增加十秒到當前時間。

您總共獲取設備的當前時間並在其中添加十秒鐘。

0

你可以試試這個工作對我來說

int interval = 1000 * 60 * 1; 
// 1 for minutes ,you can pass 60*24 

//And set alarm manager like this 

Intent alarmIntent = new Intent(AlaramManagerActivity.this, NotificationReceiver.class); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(AlaramManagerActivity.this, RQS_1, alarmIntent, 0); 
     AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 


    manager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),interval, pendingIntent); 
0
Intent myIntent = new Intent(activity.this, AlarmReceiver.class); 

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

    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
    Calendar firingCal= Calendar.getInstance(); 
    Calendar currentCal = Calendar.getInstance(); 
    firingCal.set(Calendar.HOUR,11); // At the hour you wanna fire 
    firingCal.set(Calendar.MINUTE, 0); // Particular minute 
    firingCal.set(Calendar.SECOND, 0); // particular second 
    long intendedTime = firingCal.getTimeInMillis(); 
    long currentTime = currentCal.getTimeInMillis(); 
    if(intendedTime >= currentTime){ 
// you can add buffer time too here to ignore some small differences in  milliseconds 
// set from today 
alarmManager.setRepeating(AlarmManager.RTC, intendedTime,  AlarmManager.INTERVAL_DAY, pendingIntent); 
    } 
else{ 
// set from next day 
// you might consider using calendar.add() for adding one day to the current day 
firingCal.add(Calendar.DAY_OF_MONTH, 1); 
intendedTime = firingCal.getTimeInMillis(); 
alarmManager.setRepeating(AlarmManager.RTC, intendedTime, AlarmManager.INTERVAL_DAY, pendingIntent);}