28 lines
1.6 KiB
Markdown
28 lines
1.6 KiB
Markdown
# Alarmas Android en PluriWave
|
|
|
|
PluriWave programa las alarmas con `AlarmManager.setAlarmClock`, porque es el camino Android pensado para despertadores visibles y de alta fiabilidad. Flutter conserva la configuración, la UI, la emisora y los fallbacks; Android se encarga de despertar la app en el momento exacto.
|
|
|
|
## Flujo
|
|
|
|
1. Flutter calcula la próxima ejecución según tipo, días, vacaciones y omisiones.
|
|
2. `ServicioAlarmasAndroid` envía la programación al `MethodChannel pluriwave/alarm_scheduler`.
|
|
3. `AlarmScheduler` registra:
|
|
- alarma principal con `setAlarmClock`;
|
|
- preaviso silencioso 30 minutos antes con `setExactAndAllowWhileIdle`.
|
|
4. `PluriWaveAlarmReceiver` abre la app cuando suena la alarma.
|
|
5. Flutter muestra `PantallaAlarmaSonando`, intenta reproducir la emisora y activa audio interno si la radio falla o tarda demasiado.
|
|
|
|
## Permisos
|
|
|
|
- `SCHEDULE_EXACT_ALARM`: necesario en Android 12+ para exactitud.
|
|
- `POST_NOTIFICATIONS`: necesario en Android 13+ para el preaviso silencioso.
|
|
- `WAKE_LOCK` y foreground media playback ya están declarados para la reproducción.
|
|
|
|
## Fallbacks
|
|
|
|
Si la emisora no existe, falla o no empieza a reproducir en unos segundos, la pantalla usa sonidos internos incluidos en `assets/audio/`. Esto evita una alarma silenciosa por problemas de red o de radio.
|
|
|
|
## Vacaciones y omisiones
|
|
|
|
Las vacaciones se guardan en Flutter. Las alarmas configuradas para pausar en vacaciones saltan automáticamente esos rangos y muestran la próxima fecha válida. El preaviso permite omitir la siguiente ejecución abriendo la app y aplicando la misma lógica de omisión persistente.
|