Android UI How to - Set Alarm by hour, minute and request code








Question

We would like to know how to set Alarm by hour, minute and request code.

Answer

import java.util.Calendar;
import java.util.Date;
//from   w  ww  . j  av a 2s.  c  om
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;


class AlarmUtils {
    //request code for am : 0 and pm : 1    
    public static void setAlarm(Context context,int hour,int minute,int requestCode){

//      Toast.makeText(context, "Alarm Set " + Integer.toString(requestCode), Toast.LENGTH_SHORT).show();
        AlarmManager alarmMgr;
        PendingIntent alarmIntent;
        
        alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(context, AlarmUtils.class);
        alarmIntent = PendingIntent.getBroadcast(context,requestCode, intent, PendingIntent.FLAG_CANCEL_CURRENT);
        
        Date date = new Date();
        // Set the alarm to start at approximately 2:00 p.m.
        Calendar calAlarm = Calendar.getInstance();
        calAlarm.setTime(date);
//      calAlarm.setTimeInMillis(System.currentTimeMillis());
        calAlarm.set(Calendar.HOUR_OF_DAY, hour);
        calAlarm.set(Calendar.MINUTE, minute);
        calAlarm.set(Calendar.SECOND, 0);
        
        Calendar currentDate = Calendar.getInstance();
        currentDate.setTime(date);

        if (calAlarm.before(currentDate)) {
            calAlarm.add(Calendar.DATE, 1);
        }
        
        // With setInexactRepeating(), you have to use one of the AlarmManager interval
        // constants--in this case, AlarmManager.INTERVAL_DAY.
        alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calAlarm.getTimeInMillis(),
                AlarmManager.INTERVAL_DAY, alarmIntent);
    }
    
    public static void cancelAlarm(Context context,int requestCode) {
        Intent intent = new Intent(context, AlarmUtils.class);
        PendingIntent sender = PendingIntent.getBroadcast(context,requestCode, intent, PendingIntent.FLAG_CANCEL_CURRENT);
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(context.ALARM_SERVICE);

        alarmManager.cancel(sender);
    }
}