
Creador de widgets para Android
Un widget de aplicación es una vista de aplicación en miniatura que aparece en la pantalla de inicio de Android y puede actualizarse periódicamente con nuevos datos. Los widgets de aplicaciones muestran pequeñas cantidades de información o realizan funciones sencillas como mostrar la hora, resumir los eventos del calendario del día o controlar la reproducción de música.
Los widgets de aplicación son complementos de una aplicación existente y se ponen a disposición de los usuarios cuando la aplicación se instala en un dispositivo. Tu aplicación puede tener varios widgets. No puedes crear un widget de aplicación independiente sin una aplicación asociada.
Los usuarios pueden colocar widgets en cualquier panel de la pantalla de inicio desde el selector de widgets. Para acceder al selector de widgets, mantén pulsado cualquier espacio en blanco de la pantalla de inicio y selecciona Widgets. Mantén pulsado cualquier widget para colocarlo en la pantalla de inicio. También puedes tocar y mantener pulsado un widget ya colocado para moverlo o cambiar su tamaño, si se puede cambiar.
Nota: A partir de Android 5.0, los widgets sólo pueden colocarse en la pantalla de inicio de Android. Las versiones anteriores de Android (4.2/API 17 a 4.4/API 19) también permitían que los widgets aparecieran en la pantalla de bloqueo (keyguard). Aunque las herramientas de widgets de aplicaciones y las APIs todavía mencionan ocasionalmente los widgets de la pantalla de bloqueo, esa funcionalidad está obsoleta. En este capítulo sólo se habla de los widgets de la pantalla de inicio.
Widgets de la interfaz de usuario de Android
Un widget es un pequeño gadget o control de tu aplicación androide colocado en la pantalla de inicio. Los widgets pueden ser muy prácticos, ya que te permiten colocar tus aplicaciones favoritas en la pantalla de inicio para acceder a ellas rápidamente. Probablemente hayas visto algunos widgets comunes, como el widget de música, el widget del tiempo, el widget del reloj, etc.
Para crear un widget de aplicación, lo primero que necesitas es el objeto AppWidgetProviderInfo, que definirás en un archivo XML de widgets independiente. Para ello, haz clic con el botón derecho en tu proyecto y crea una nueva carpeta llamada xml. Ahora haz clic derecho en la carpeta recién creada y crea un nuevo archivo XML. El tipo de recurso del archivo XML debe establecerse como AppWidgetProvider. En el archivo xml, defina algunas propiedades que son las siguientes –
Vamos a intentar ejecutar tu aplicación. Asumo que has conectado tu dispositivo móvil Android actual con tu ordenador. Para ejecutar la aplicación desde Android studio, abre uno de los archivos de actividad de tu proyecto y haz clic en el icono Ejecutar de la barra de herramientas. Antes de iniciar su aplicación, Android studio mostrará la siguiente ventana para seleccionar una opción en la que desea ejecutar su aplicación Android.
Widget personalizado para Android
La parte con Automate ahorra mucha energía, porque espera la transición del evento ‘hay un nuevo mensaje push’ y no lo sondea. La fibra (básicamente un bucle de programa en Automate) duerme hasta que se produce el evento. El empuje ocurre casi instantáneamente.
La Prioridad(-1) permite que la notificación permanezca en segundo plano y sea silenciosa, no querrás un sonido cada vez que una temperatura se actualice. El caso de la hora hace que el sistema sólo empuje los mensajes cuando estoy realmente despierto. El título en este ejemplo es «tempBathroom». Esto es lo que el Script de Automate en el dispositivo Android estará buscando.
En Automate, la notificación se cancela y, en el caso de la temperatura y la humedad, se envía otra emisión con la hora de la actualización del valor. Con eso puedo ver si los sensores están funcionando correctamente (si no hubiera actualización durante mucho tiempo, habría un problema).
Ya está, vamos a probarlo. Sólo hay que usar Pushover desde su página web para enviar un mensaje con los parámetros necesarios y comprobar si Automate hace lo que debe y si KWGT recibe el boradcast.
Widget inteligente para Android
Hay muchas preguntas sobre esto pero ninguna de las respuestas ha funcionado y mi problema es único. Estoy tratando de establecer los datos URI para que pueda enviar que en una intención a una clase java de un botón de widget que he creado. Sé que el botón del widget está configurado correctamente porque envía el mensaje de brindis cuando se hace clic.
El problema es: ningún intento, o variación de intentos, que envío, después de hacer clic en el botón, funciona. Siempre se cuelga y el logcat da una razón casi no descriptiva de por qué, apuntando a la startActivity(i). Cualquier ayuda sería muy apreciada. El código completo para el widget está abajo:
No estoy seguro de la finalidad de la emisión que se lanza cada vez que se hace clic en el botón del widget; pero creo que los datos Uri deben adjuntarse a la intención que está asociada a la PendingIntent que se registrará en el sistema en el callback onUpdate().
