package com.example.alarm;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import com.example.receiver.ExampleAlarmReceiver;
import java.util.Calendar;
public class ExampleAlarm
{
private static final int ALARM_ID = 0;
private static final long ALARM_INTERVAL = AlarmManager.INTERVAL_HOUR; // in milliseconds
private Context mContext;
public ExampleAlarm(Context context)
{
mContext = context;
}
public void startAlarm()
{
AlarmManager alarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC, getStartTime(), ALARM_INTERVAL, getPendingIntent()); // TODO: use AlarmManager.RTC or AlarmManager.RTC_WAKEUP
}
public void stopAlarm()
{
AlarmManager alarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(getPendingIntent());
}
public boolean isRunning()
{
Intent alarmIntent = new Intent(mContext, ExampleAlarmReceiver.class);
return PendingIntent.getBroadcast(mContext, ALARM_ID, alarmIntent, PendingIntent.FLAG_NO_CREATE) != null;
}
private long getStartTime()
{
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MILLISECOND, (int) ALARM_INTERVAL);
return calendar.getTimeInMillis();
}
private PendingIntent getPendingIntent()
{
Intent alarmIntent = new Intent(mContext, ExampleAlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, ALARM_ID, alarmIntent, PendingIntent.FLAG_CANCEL_CURRENT);
return pendingIntent;
}
}