Hi I need to set alarm for particular date by using time picker.When I given static input,alarm is not setting properly and ringing. for eg: I am giving static input(with date,month and year), but it's not ringing. Here is my code.
//button click
private OnClickListener reminderEventListener = new OnClickListener() {
@Override
public void onClick(View v) {
openTimePickerDialog(false);
}
private void openTimePickerDialog(boolean is24r) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH,1);//month
calendar.set(Calendar.YEAR,2015);//year
calendar.set(Calendar.DAY_OF_MONTH,12);//day
timePickerDialog = new TimePickerDialog(
EventDetail.this,
onTimeSetListener,
calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE),
is24r);
timePickerDialog.setTitle(eventDates+" "+days+","+eventYear);
timePickerDialog.show();
}
OnTimeSetListener onTimeSetListener
= new OnTimeSetListener(){
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Calendar calNow = Calendar.getInstance();
Calendar calSet = (Calendar) calNow.clone();
calSet.set(Calendar.MONTH,1);//month
calSet.set(Calendar.YEAR,2015);//year
calSet.set(Calendar.DAY_OF_MONTH,12);//day
calSet.set(Calendar.HOUR_OF_DAY, hourOfDay);
calSet.set(Calendar.MINUTE, minute);
calSet.set(Calendar.SECOND, 0);
calSet.set(Calendar.MILLISECOND, 0);
if(calSet.compareTo(calNow) <= 0){
//Today Set time passed, count to tomorrow
calSet.add(Calendar.DATE, 1);
}
setAlarm(calSet);
}
private void setAlarm(Calendar targetCal) {
// TODO Auto-generated method stub
Log.e("Give input", "12/01/2015");
Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), 0, intent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);
}};
};
AlarmReceiver:
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
NotificationManager manager = (NotificationManager)context.getSystemService(android.content.Context.NOTIFICATION_SERVICE);
Notification noti = new Notification(android.R.drawable.stat_notify_more, "Wake up alarm", System.currentTimeMillis());
noti.setLatestEventInfo(context, "My Alarm", "WAKE UP...!!!", sender);
noti.flags = Notification.FLAG_AUTO_CANCEL;
manager.notify(R.string.app_name, noti);
//intent to call the activity which shows on ringing
Intent myIntent = new Intent(context, EventDetail.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myIntent);
//display that alarm is ringing
Toast.makeText(context, "Alarm Ringing...!!!", Toast.LENGTH_LONG).show();
Log.e("Alarm ringing", "alarm ringing");
}
I set particular time and tested.alarm is not triggering.
I have given permission in manifest too.
<receiver android:name=".AlarmReceiver" android:process=":remote" />
try to put MONTH as 0, not 1, it will ring, MONTHS are numbered from 0, no idea why is there this exception.
Also I don't know how getting time in millis is working. Try that too:
long time = calSet.getTime().getTime();
And then put time in alarmManager.set().