2011-11-26 24 views
5

Tengo este código que activa la alarma una vez configurando una hora y fecha usando TimePicker y DatePicker en otra actividad. Quiero modificarlo de forma que siempre que establezca una hora y una fecha, active la alarma todos los días al mismo tiempo. En otras palabras, quiero que la alarma se active todos los días.desarrollo de alarma diaria en 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); 
     } 
} 

He intentado usar la función setRepeating pero no sé exactamente cómo debería establecer los atributos He utilizado esta línea en lugar de la función establecida en el código, pero no funcionó:

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

¿Alguien me puede ayudar con eso?

Respuesta

4

basta con modificar el código

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

en AndroidAlarmService clase para

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

y leer este enlace: http://android-er.blogspot.com/2010/10/schedule-repeating-alarm.html

+1

es necesario sustituir 5 * 1000 con AlarmManager.INTERVAL_DAY para configurarlo diaria –

+0

El método set (int, long, PendingIntent) en el tipo AlarmManager no es aplicable a los argumentos (int, largo, largo, PendingIntent) – Prasad