Little Chef Timer
Temporizador de cocina para Android, 100% offline, con alarmas exactas que suenan aunque el teléfono esté bloqueado, en modo Doze o con la app cerrada por el sistema.
Última actualización:
El Problema
Los temporizadores de cocina genéricos no distinguen entre preparaciones, pierden la cuenta regresiva si el sistema mata la app o el teléfono se reinicia, y su alarma puede fallar por el modo de ahorro de batería (Doze) de Android.
La Solución
Una app offline que guarda recetas propias con emoji, notas y tiempo exacto, y programa la alarma con AlarmManager.setAlarmClock para que suene puntual incluso con la pantalla bloqueada o en Doze. El tiempo restante se calcula contra una marca de fin persistida, así que sobrevive al cierre del proceso sin desfase, y no necesita ningún servicio en primer plano corriendo en segundo plano.
Aprendizajes Clave
- Cuenta regresiva sin drift: el tiempo restante se deriva matemáticamente de una marca de tiempo de fin (endAtMillis) guardada en SharedPreferences, en vez de un contador que se pueda perder si el proceso muere.
- Alarmas exactas sin permisos invasivos: AlarmManager.setAlarmClock dispara con precisión incluso en Doze, sin pedir SCHEDULE_EXACT_ALARM.
- UI reactiva sin polling: un SharedPreferences.OnSharedPreferenceChangeListener conectado a un DisposableEffect de Compose actualiza la interfaz solo cuando cambia el estado, sin lecturas periódicas a disco.
- Canales de notificación por sonido: como el sonido de un canal es inmutable una vez creado, cada tono elegido genera su propio canal (alarm_<hash>), eliminando los anteriores.
Arquitectura sin Room y sin servicio en primer plano
Little Chef Timer es una app de un solo módulo, pensada para consumir cero batería mientras el temporizador está corriendo:
- Persistencia simple en
SharedPreferences: el catálogo de recetas es una lista corta, así que se guarda como JSON validado en preferencias, evitando el costo de un esquema relacional y sus migraciones. - Alarma del sistema, no un servicio propio: el conteo se calcula como
endAtMillis - now, yAlarmManagerse encarga de despertar el dispositivo en el momento exacto, sin gastar ciclos de CPU mientras el teléfono está inactivo. - Notificación insistente: al sonar, una notificación de alta prioridad con
FLAG_INSISTENTrepite el sonido en bucle hasta que el usuario presiona Detener.
Personalización y respaldo
- Recetas propias con emoji y notas: cada preparación tiene título, emoji, notas de cocción y una duración exacta.
- Tema y bilingüismo en vivo: paleta lila/rosada en modo Claro, Oscuro o Seguir sistema, con cambio de idioma (Español/English) sin reiniciar la app.
- Respaldo sin permisos amplios: exportación e importación de recetas en JSON vía Storage Access Framework, sin solicitar acceso general al almacenamiento.
Nota: Puedes explorar el código fuente y la documentación técnica directamente en el repositorio de GitHub.
Esta página es un resumen de alto nivel. El repositorio en GitHub es la fuente de verdad sobre las funcionalidades actuales de cada herramienta. GitHub ↗