Establecer la repetición de la alarma cada día a una hora específica En Android
Estoy usando el Administrador de alarmas para ejecutar la alarma en el momento específico cada día. A continuación se muestra el código
Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.set(Calendar.HOUR_OF_DAY, 00); calendar.set(Calendar.MINUTE, 00); AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); Intent intent = new Intent(this, OnAlarmReceive.class); PendingIntent pendingIntent =PendingIntent.getBroadcast(this.getApplicationContext(), 0, intent,PendingIntent.FLAG_UPDATE_CURRENT); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000, pendingIntent);
Estoy poniendo alarma a las 12 am todos los días. Y A continuación se muestra el código para BroadCastReciever
- Vista de calendario para Android GingerBread y antes (API <11)
- ¿Cómo crear un calendario personalizado con la gestión de eventos?
- Cómo crear un receptor para crear un nuevo evento
- En Java, cómo obtener cadenas de días de la semana (Sun, Mon, ..., Sat) con el sistema de configuración por defecto (idioma)
- Inicialice la fecha en android datepicker a una fecha específica, que no es la fecha actual.
@Override public void onReceive(Context context, Intent intent) { System.out.println("Time is 12 Am"); Toast.makeText(context, "Alarm Triggered", Toast.LENGTH_LONG).show(); }
Problema en este código es la alarma se activa tan pronto como ejecute la aplicación independientemente del tiempo. Cualquier ayuda será apreciada. Gracias
- Webcal / .ics se suscriben al feed de la aplicación de Android
- ¡Ayuda! ¿Cómo puedo crear una aplicación de calendario para Android?
- La eliminación de eventos del calendario no se ha eliminado
- Sincronización del proveedor del calendario para Android: columnas SYNC_DATA?
- ¿Dónde puedo obtener el código fuente de Android 1.5 y 1.6?
- Calendario de Android Java getDisplayName / s devolver null
- Eliminar y actualizar el evento de calendario existente
- Android: la eliminación de una ocurrencia de evento elimina todo su ocurrencia
Tuve el mismo problema que tú y yo no pudimos hacer funcionar. Además, todos los ejemplos que pude encontrar también fueron establecer una fecha específica, no sólo un momento. Esto debería funcionar para usted:
Intent myIntent = new Intent(ThisActivity.this , NotifyService.class); AlarmManager alarmManager = (AlarmManager) Context.getSystemService(Context.ALARM_SERVICE); PendingIntent pendingIntent = PendingIntent.getService(ThisActivity.this, 0, myIntent, 0); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 12); calendar.set(Calendar.MINUTE, 00); calendar.set(Calendar.SECOND, 00); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000, pendingIntent); //Repeat every 24 hours
Espero que esto ayude a solucionar su problema!
Intente utilizar esto:
alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + AlarmManager.INTERVAL_DAY, AlarmManager.INTERVAL_DAY, intent);
Usted podría utilizar algo como esto:
Calendar cal = Calendar.getInstance(); if(cal.getTimeInMillis() < System.currentTimeMillis()) { cal.add(Calendar.DAY_OF_YEAR, 7); }
La alarma sólo se disparará inmediatamente si ha configurado la alarma en el pasado. Por ejemplo, ahora es 10: 00h y desea establecer una alarma todos los días a las 09:00. Para evitar esto, tienes que mirar qué hora es ahora, y cambiar la alarma 1 día si ese es el caso … Esto le permite usar el método setRepeating
(que es más preciso que setInexactRepeating
)
Esto soluciona el problema:
Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.set(Calendar.HOUR_OF_DAY, 00); calendar.set(Calendar.MINUTE, 00); if(Calendar.getInstance().after(calendar)){ // Move to tomorrow calendar.add(Calendar.DATE, 1); } //... continue like before by setting the alarm
- Notification.bigContentView está obsoleto en API 24 (Nougat) ¿cuál es la alternativa?
- Android Emulator congelación en la pantalla de carga