12.4 Programación de acciones con calendario, geocercas y estados del dispositivo
12.4.1 Acciones basadas en el calendario
Permite programar tareas o notificaciones en función de eventos guardados en el calendario del usuario.
- Permisos necesarios: READ_CALENDAR y WRITE_CALENDAR
- Obtener eventos:
- Realizar consulta sobre content://com.android.calendar/events
- Filtrar por fecha, título o etiqueta deseada
- Programar alarmas:
- Usar AlarmManager o WorkManager para disparar en la fecha/hora del evento
- Registrar un BroadcastReceiver o JobIntentService que maneje la acción
- Flujo típico:
- Lectura de eventos futuros
- Filtrado por criterios de usuario
- Registro de alarmas para cada evento relevante
12.4.2 Geocercas
Definición de zonas geográficas que disparan acciones al entrar o salir de ellas.
- Dependencia: com.google.android.gms:play-services-location
- Pasos para configurar:
- Crear un objeto Geofence con identificador, latitud, longitud, radio y tipos de transición (ENTER, EXIT)
- Agregar la geocerca a GeofencingClient
- Registrar un PendingIntent que invoque un BroadcastReceiver o Service cuando se active la geocerca
Parámetro | Descripción |
requestId | Identificador único de la geocerca |
latitude / longitude | Coordenadas del centro de la zona |
radius | Radio de la zona en metros |
transitionTypes | Tipo de evento (ENTER, EXIT, DWELL) |
Ejemplo de flujo
- Permitir permisos de ubicación en tiempo de ejecución
- Configurar geocerca y registrar PendingIntent
- Implementar BroadcastReceiver que reciba las transiciones
- Ejecutar lógica (notificación, servicio, sincronización)
12.4.3 Estados del dispositivo
Monitorización de cambios en el sistema: conectividad, batería, pantalla, modo avión, etc.
- Registrar BroadcastReceiver (estáticos en el manifiesto o dinámicos) para recibir intents del sistema
- Principales intents y sus acciones:
Estado Intent Conectividad android.net.conn.CONNECTIVITY_CHANGE Batería baja android.intent.action.BATTERY_LOW Pantalla encendida android.intent.action.SCREEN_ON Modo avión android.intent.action.AIRPLANE_MODE - Procesamiento de eventos:
- En el método onReceive, comprobar la acción del intent
- Ejecutar la lógica asociada (sincronizar datos, ajustar comportamientos, notificar al usuario)
Buenas prácticas
- Usar receivers dinámicos cuando solo se necesite vigilar en primer plano
- Limitar el uso de receivers estáticos para eventos críticos
- Gestionar adecuadamente los permisos y el consumo de batería
Profundizando sobre: 12.4 Programación de acciones con calendario, geocercas y estados del dispositivo
12.4 Programación de acciones con calendario, geocercas y estados del dispositivo
Libros
- Android Programming: The Big Nerd Ranch Guide (Bill Phillips, Chris Stewart y Kristin Marsicano) – Capítulos sobre Calendar Provider y servicios de localización.
- Professional Android, 4th Edition (Reto Meier e Ian Lake) – Sección dedicada a sensores, BroadcastReceivers y Geofencing API.
- Android Cookbook (Ian F. Darwin) – Recetas prácticas para el manejo de calendario, geocercas y gestión de estados del dispositivo.
Recursos online
- Android Developers – Calendar Provider: documentación oficial y ejemplos.
- Android Developers – Geofencing API: guía paso a paso para configurar geocercas.
- Google Codelab: Geofencing on Android: práctica guiada.
- Google Codelab: Using Android Sensors: monitoreo de estados del dispositivo.
- Udacity – Android Fundamentals: módulo avanzado sobre servicios, receptores y providers.
Deja una respuesta