2011-11-26 23 views
5

Tôi có đoạn mã này báo cháy một lần bằng cách đặt thời gian và ngày bằng cách sử dụng TimePicker và DatePicker trong một hoạt động khác. Tôi muốn sửa đổi nó theo cách mà bất cứ khi nào tôi đặt thời gian và ngày, nó sẽ kích hoạt báo thức hàng ngày cùng một lúc. Nói cách khác, tôi muốn báo động được kích hoạt hàng ngày.phát triển báo thức hàng ngày trong android

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); 
     } 
} 

Tôi đã cố gắng sử dụng chức năng setRepeating nhưng tôi không biết làm thế nào chính xác tôi nên thiết lập các thuộc tính tôi sử dụng dòng này thay vì chức năng thiết lập trên mã nhưng nó đã không làm việc:

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

Ai đó có thể giúp tôi không?

Trả lời

4

Chỉ cần thay đổi mã

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

trong AndroidAlarmService lớp để

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

Và đọc liên kết này: http://android-er.blogspot.com/2010/10/schedule-repeating-alarm.html

+1

bạn cần thay thế 5 * 1000 bằng AlarmManager.INTERVAL_DAY để đặt hàng ngày –

+0

Tập phương thức (int, long, PendingIntent) trong loại AlarmManager không áp dụng cho các đối số (int, long, long, PendingIntent) – Prasad

Các vấn đề liên quan