我创建了一个名为“VIAlarmManager”的类,在那里我创建了一个AlarmManager并设置了一些属性。但无论如何,警报都没有被解雇,我做错了什么?我尝试调用在给定间隔内重复的任务(例如1分钟/ 2分钟/ 15分钟),并且它也应该在睡眠时执行。
这是我的代码:
public final class VIAlarmManager{
public static AlarmManager alarmManager;
public int freq = 60;
public VIAlarmManager(int freq_in_sec){
this.freq = freq_in_sec;
}
public void setFrequency(int freq_in_sec){
this.freq = freq_in_sec;
}
public void setAlarm(){
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.MINUTE, 1);
alarmManager = (AlarmManager) MainActivity.Context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(MainActivity.Context, VIAlarmManager.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.Context, 0, intent, 0);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),1000 * 60 * 1, pendingIntent);
}
public void cancleAlarm(){
Intent intent = new Intent(MainActivity.Context, VIAlarm_Heartbeat.class);
PendingIntent sender = PendingIntent.getBroadcast(MainActivity.Context, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) MainActivity.Context.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(sender);
}
public static class VIAlarm_Heartbeat extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.w("AlarmManager", "Calling Heartbeat now");
MainActivity.beat.beat();
}
}}
我的AndroidManifest包含以下行:
<receiver android:name="com.videro.util.VIAlarmManager$VIAlarm_Heartbeat" android:enabled="true" ></receiver>
在我的主要活动中,我打电话:
AlarmManager = new VIAlarmManager(60);
AlarmManager.setAlarm();
答案 0 :(得分:0)
如果它只是一个简单的警报,那么经典的方法是使用活动和TimePicker
来选择时间,使用 BroadcastReceiver 来启动警报以及服务以向用户发送通知。
Here是如何做到这一点的工作方式!希望它有帮助:)