Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

scheduled alarm to repeat every minute of the clock android

I have an app which requires a code to be executed every minute. But the issue is that the code has to be executed at every minute change of the clock. Which means,

If its 12:34 then the code will execute at 12:35 and goes on. But my current code works but it includes the seconds. Meaning,

If its 12:34:30 and the alarm starts, the code is executed. But the code is then executed at 12:35:30.

I want the code to be executed each minute according to the clock of the phone. Below is the current code.

 Intent intent2 = new Intent(MainActivity.this, MyABService.class);
                PendingIntent pintent = PendingIntent.getService(MainActivity.this, 0, intent2, 0);
                AlarmManager alarm_manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
                alarm_manager.setRepeating(AlarmManager.RTC, c.getTimeInMillis(), 1 * 1000, pintent);

Im making it execute every second so that the effect takes place at the exact time. Instead of having it every second i need it to repeat itself at every minute change of the clock (every minute)

How do i go about this

like image 499
AxeManTOBO Avatar asked Jun 29 '16 10:06

AxeManTOBO


People also ask

How do I set my alarm every 15 minutes?

Just pick a starting time and set the alarm. Now go to settings and set the "repeat" and check Monday - Sunday. Now go back to menu, settings, "snooze duration" and select 15 minutes. This will effectively give you what you need (you will be notified every 15 min., then hit snooze).

How do I use alarm Manager on Android?

This example demonstrates how do I use AlarmManager in android. Step 1 − Create a new project in Android Studio, go to File ⇒ New Project and fill all required details to create a new project. Step 2 − Add the following code to res/layout/activity_main. xml.


1 Answers

Use Intent.ACTION_TIME_TICK This is a broadcast intent fired every minute by the Android OS. Register to it as you would register to a normal system broadcast in code (doesn't work from manifest)

tickReceiver=new BroadcastReceiver(){
    @Override
    public void onReceive(Context context, Intent intent) {
    if(intent.getAction().compareTo(Intent.ACTION_TIME_TICK)==0)
    {
      //do something
    }
  };

  //Register the broadcast receiver to receive TIME_TICK
  registerReceiver(tickReceiver, new IntentFilter(Intent.ACTION_TIME_TICK));

This article describes the complete process.

like image 140
Sourabh86 Avatar answered Oct 05 '22 18:10

Sourabh86