Search code examples
androidcalendaralarmmanager

Dialy Alarm code Explanation


I am new to android , I want to make alarm that notify me dialy at 11am .I have found some code on net,But dont know some part of it. Below is code

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();
}});

can any one explain me what this two line does

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

And also help me how can i set alarm that will notify me on the same time for example at 11am


Solution

  • Call this function where you need:

    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);
    
    }
    

    Broadcast receiver:

    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());
    

    call function like this:

    setDailyNotification(11, 11,00, 00);