Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Alarm is running immediately after it is created

I am trying to play a ringtone at exactly at 7 PM everyday but it is playing ringtone immediately after its pending intent is registering broadcast.

I called the service in the foreground on a button click and created pending intent there in onStartCommand:

@Override
public int onStartCommand(Intent intent, int flags, int startId) 
{

    startForeground(FOREGROUND_ID,
            buildForegroundNotification("DummyApp"));

    c = Calendar.getInstance();
    AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    int interval = 1000 * 60 * 60*24;
    c.setTimeInMillis(System.currentTimeMillis());
    c.set(Calendar.HOUR, 19);
    c.set(Calendar.MINUTE,00);
    manager.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(),
            interval, pendingIntent);
    Intent alarmIntent = new Intent(AlarmService.this, DataProcessor.class);
    pendingIntent = PendingIntent.getBroadcast(AlarmService.this, 0,
            alarmIntent, 0);
    return START_STICKY;
}

Now I am playing a ringtone on receiving this broadcast in DataProcessor class the on Receive method of Data Processor class:

@Override
public void onReceive(Context ctx,Intent intent) {


    playRIng(ctx);

 }

But when I run this code,click the button,service is created but alarm is fired immediately after the AlarmService is called and ringtone is played also.How it is possible because I am giving the exact 7 O clock time when registering broadcast.? Googled a lot but found the same code only and nothing else.Every code is able to play the ringtone on the time but it also plays the ringtone immediately after the broadcast is registered.

like image 223
Andhadhundh Pitaii Avatar asked Sep 28 '22 06:09

Andhadhundh Pitaii


1 Answers

Why you don't use a condition?:

@Override
public void onReceive(Context ctx,Intent intent) {
Calendar c = Calendar.getInstance(); 
 int hour = c.get(Calendar.HOUR);

if(hour==19) 
 {
    playRIng(ctx);
 }

 }
like image 83
Alejandro Cumpa Avatar answered Oct 07 '22 02:10

Alejandro Cumpa