-6

I want a do something every time a minute passes, for example when the time changes from 10:38 to 10:39 i want to do something.

What is the best way to do this?

Phantômaxx
  • 37,901
  • 21
  • 84
  • 115

3 Answers3

2

You need to listen for TIME_TICK via broadcast receiver

IntentFilter timeTickIntentFilter = new IntentFilter(Intent.ACTION_TIME_TICK);
registerReceiver(YourReceiver, timeTickIntentFilter);
Udi Oshi
  • 6,787
  • 7
  • 47
  • 65
2

Use AlarmManager for this.

void startSchedulerAlarm() {
    int oneMinute = 1 * (60 * 1000); //Trigger Every 1 Minute
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(context, AlarmReceiver.class);
    intent.setAction(AlarmReceiver.alaramIntent);
    PendingIntent alarmIntent = PendingIntent.getBroadcast(context, AlarmReceiver.alarmIntentCode, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), oneMinute, alarmIntent);

}

void stopSchedulerAlarm() {
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(context, AlarmReceiver.class);
    intent.setAction(AlarmReceiver.alaramIntent);
    PendingIntent alarmIntent = PendingIntent.getBroadcast(context, AlarmReceiver.alarmIntentCode, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    alarmManager.cancel(alarmIntent);
}

Create a receiver for your Alarm in Manifest:

    <receiver       
        android:name="{YOUR_PACKAGE_NAME}.AlarmReceiver"
        android:enabled="true"
        android:process=":remote">
        <intent-filter>
            <action android:name="{YOUR_PACKAGE_NAME}.alarmIntent"/>
        </intent-filter>
    </receiver> 

public class AlarmReceiver extends BroadcastReceiver {

public static final String alaramIntent = "{YOUR_PACKAGE_NAME}.alarmIntent";
public static final int alarmIntentCode = 000054310;

private String TAG = AlarmReceiver.class.getSimpleName();

   @Override
   public void onReceive(Context context, Intent intent) {
        //Do something Here
   }
}
Umair Adil
  • 968
  • 1
  • 10
  • 24
0

Keep a Service running in the background that keeps on checking for a specidied time, Say you want to do turn the phone to silent mode when it's 10:00 PM. So the service should keep on checking if the time is 10:00 PM and when it is, execute the code to turn the phone to silent mode

Vyshak
  • 126
  • 1
  • 9