2011-11-26 11 views
5

Ho questo pezzo di codice che attiva l'allarme una volta impostando un'ora e una data utilizzando TimePicker e DatePicker in un'altra attività. Voglio modificarlo in modo tale che ogni volta che imposto un orario e una data farà scattare l'allarme tutti i giorni alla stessa ora. In altre parole, voglio che l'allarme venga attivato ogni giorno.sviluppo allarme giornaliero in 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); 
     } 
} 

Ho provato con la funzione setRepeating ma non so esattamente come devo impostare gli attributi ho usato questa linea anziché la funzione impostata sul codice, ma non ha funzionato:

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

Qualcuno può aiutarmi?

risposta

4

Basta modificare il codice

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

in AndroidAlarmService classe per

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

e leggere questo link: http://android-er.blogspot.com/2010/10/schedule-repeating-alarm.html

+1

è necessario sostituire 5 * 1000 con AlarmManager.INTERVAL_DAY per impostarlo quotidianamente –

+0

Il metodo set (int, long, PendingIntent) nel tipo AlarmManager non è applicabile per gli argomenti (int, long, long, PendingIntent) – Prasad