Alarm Manager Test
package com.picodiploma.dicoding.alarmtest; | |
import android.app.AlarmManager; | |
import android.app.PendingIntent; | |
import android.content.BroadcastReceiver; | |
import android.content.Context; | |
import android.content.Intent; | |
import android.util.Log; | |
import java.util.Calendar; | |
public class AlarmReceiver extends BroadcastReceiver { | |
private Context context; | |
public AlarmReceiver() { | |
} | |
public AlarmReceiver(Context context) { | |
this.context = context; | |
} | |
public static final String TYPE = "TYPE"; | |
public static final String TAG = AlarmReceiver.class.getCanonicalName(); | |
public static final String TYPE_DAILY = "DAILY"; | |
public static final String TYPE_RELEASE = "RELEASE"; | |
public static final int ID_DAILY = 1; | |
public static final int ID_RELEASE = 2; | |
@Override | |
public void onReceive(Context context, Intent intent) { | |
String type = intent.getStringExtra(TYPE); | |
switch (type) { | |
case TYPE_DAILY: | |
Log.d(TAG, "onReceive: On Daily invoke"); | |
break; | |
case TYPE_RELEASE: | |
Log.d(TAG, "onReceive: On Release Invoke"); | |
} | |
} | |
private Calendar getReminderTime(String type) { | |
Calendar calendar = Calendar.getInstance(); | |
calendar.set(Calendar.HOUR_OF_DAY, 14); | |
calendar.set(Calendar.MINUTE, type.equals(TYPE_DAILY) ? 10 : 15); | |
calendar.set(Calendar.SECOND, 0); | |
return calendar; | |
} | |
private Intent getReminderIntent(String type) { | |
Intent intent = new Intent(context, AlarmReceiver.class); | |
intent.putExtra(TYPE, type); | |
return intent; | |
} | |
public void setReminderDaily() { | |
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, ID_DAILY, getReminderIntent(TYPE_DAILY), 0); | |
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); | |
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, getReminderTime(TYPE_DAILY).getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); | |
} | |
public void setReminderRelease() { | |
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, ID_RELEASE, getReminderIntent(TYPE_RELEASE), 0); | |
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); | |
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, getReminderTime(TYPE_RELEASE).getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment