【问题标题】:developing daily alarm in android在android中开发每日警报
【发布时间】:2011-11-26 09:47:13
【问题描述】:

我有这段代码通过在另一个活动中使用 TimePicker 和 DatePicker 设置时间和日期来触发一次警报。 我想修改它,只要我设置时间和日期,它就会每天同时发出警报。换句话说,我希望每天都发出警报。

public class M_ReminderManager {

    private Context mContext; 
    private AlarmManager mAlarmManager;

    public M_ReminderManager(Context context) {
        mContext = context; 
        mAlarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
    }

    public void setReminder(Long reminderId, Calendar when) {

        Intent i = new Intent(mContext, Medicines_OnAlarmReceiver.class);
        i.putExtra(RemindersDbAdapter.KEY_ROWID_MEDS, (long)reminderId); 

        PendingIntent pi = PendingIntent.getBroadcast(mContext, 0, i, PendingIntent.FLAG_ONE_SHOT); 
        mAlarmManager.set(AlarmManager.RTC_WAKEUP, when.getTimeInMillis(), pi);
      }
}

我尝试过使用 setRepeating 函数,但我不知道应该如何设置属性 我在代码上使用了这一行而不是 set 函数,但它不起作用:

mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, when.getTimeInMillis() ,AlarmManager.INTERVAL_DAY , pi);

有人可以帮我吗?

【问题讨论】:

    标签: android set alarm repeat


    【解决方案1】:

    只需修改代码

    alarmManager.set(AlarmManager.RTC_WAKEUP,
        calendar.getTimeInMillis(), pendingIntent)
    

    AndroidAlarmService类中

    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
        calendar.getTimeInMillis(), 5*1000, pendingIntent)
    

    并阅读此链接:http://android-er.blogspot.com/2010/10/schedule-repeating-alarm.html

    【讨论】:

    • 您需要将 5*1000 替换为 AlarmManager.INTERVAL_DAY 以每天设置
    • AlarmManager 类型中的方法 set(int, long, PendingIntent) 不适用于参数 (int, long, long, PendingIntent)
    【解决方案2】:

    你可以看到这个链接:How to run a service every day at noon, and on every boot 您应该记得在手机重启时重置时间表,链接也包含相应的代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多