En este consejo rápido de Android, aprenderá acerca de dos nuevos métodos para alertar a los usuarios sobre los eventos: vibración e iluminación LED / trackball. Estos métodos se conocen como "Indicadores de hardware" y se usan con moderación en varias aplicaciones de Android para transmitir información urgente o noticias de última hora. Este artículo se relaciona estrechamente con el SDK de Android: uso de alertas, brindis y notificaciones.
Las vibraciones se controlan mediante un servicio dedicado a nivel de sistema: el Servicio de vibración. Sin embargo, para utilizar este servicio, su solicitud debe solicitar el VIBRAR permiso que tiene que ser declarado por primera vez en AndroidManifest.xml, como asi (linea 5):
En primer lugar, cree una instancia de Vibrator invocando getSystemService ():
Vibrador vibr = = (Vibrador) getSystemService (Context.VIBRATOR_SERVICE);
Ahora puedes comenzar a utilizar los métodos del objeto. Hay tres en total:
Vibrar por una duración específica (en milisegundos).
Vibrar utilizando el patrón especificado y, opcionalmente, repetir (se explica a continuación).
Cancelar las vibraciones actuales.
Respecto a vibrar (patrón largo [], repetición int): Tienes que pasar un patrón on-off en forma de largo[] formación. El primer valor indica cuánto tiempo esperar, luego cuánto tiempo vibrar, y así sucesivamente. los repetir el parámetro puede ser "-1" si no desea que se repita o el índice de la matriz del patrón en el que se repetirá. Si desea que se repita, no olvide cancelarlo finalmente para evitar que se repita indefinidamente..
El siguiente ejemplo ilustra el uso de ambos métodos vibrate ():
Vibrador vibr = = (Vibrador) getSystemService (Context.VIBRATOR_SERVICE); vibr.vibrate (500); // Vibrar durante medio segundo (500 mili segundos) de largo patrón [] = 400, 200; vibr.vibrate (patrón, 0); // 400 ms de pausa, 200 ms de vibración. Empezar a repetir en el índice 0.
Normalmente, las vibraciones están asociadas con la recepción de una llamada telefónica o alguna otra notificación importante del sistema que los usuarios esperan. Las vibraciones exigen atención de los usuarios. Incluso si el teléfono del usuario está en modo de espera o se lo han guardado en el bolsillo, las vibraciones son un tipo de notificación que tiene la mayor garantía de que los usuarios tomarán nota de algo y querrán revisar su teléfono para averiguar qué está sucediendo. Definitivamente no desea que las personas ocupadas se molesten con una alerta aleatoria cada pocos minutos, ya que es muy probable que terminen eliminando la aplicación por completo.!
¿Cuándo y cómo deberías hacer uso de las vibraciones? La respuesta simple: solo si contribuye a una mejor experiencia de usuario. Incluso en ese caso, es una buena práctica ofrecer algún tipo de panel de configuración que permita a los usuarios desactivar su uso en su aplicación. Un ejemplo de uso apropiado de este servicio sería una aplicación de calendario que notifique al usuario sobre un próximo evento..
En resumen, solo use vibraciones para propósitos apropiados. No los use en exceso y manténgalos bastante cortos a menos que la aplicación requiera atención inmediata.
Comience con una instancia de NotificationManager, otro servicio central del sistema:
NotificationManager notifMgr = (NotificationManager) getSystemService (NOTIFICATION_SERVICE);
A continuación, construye un nuevo objeto de notificación:
Notificación notif = new Notification (); notif.ledARGB = Color.argb (255, 0, 255, 0); notif.flags | = Notification.FLAG_SHOW_LIGHTS; notif.ledOnMS = 200; notif.ledOffMS = 300;
ledARGB se utiliza para especificar un valor de color alfa, rojo, verde y azul combinado en un solo entero. android.graphics.ColorEl método práctico argb () es la forma más fácil de producirlo. En el ejemplo anterior, escupe rojo con intensidad completa (255 para rojo y 255 para alfa). Puede, por supuesto, simplemente usar una de las constantes de la clase Color como Color.RED.
banderas tiene el indicador FLAG_SHOW_LIGHTS agregado a través de una operación bitwise. Simplemente indica que desea utilizar el LED de un dispositivo en este objeto de notificación.
ledOnMS y ledOffMS: El LED parpadeará con ledOnMS, que indica cuánto tiempo estará encendido el LED y ledOffMS, que indica cuánto tiempo debe permanecer apagado entre los parpadeos. El siguiente código demuestra esto:
// Enciende y apaga el LED. (Tiempos en milisegundos) notif.ledOnMS = 1000; notif.ledOffMS = 300; // Enciende el LED. Si lo configura de esta manera, se producirá una pausa predeterminada entre los destellos, que dura aproximadamente 2 segundos. notif.ledOnMS = 1; notif.ledOffMS = 0;
Por último, llame a Notify (int id, Notification) y pase el objeto de notificación que creamos y configuramos. Por ahora, debería estar bien darle un valor aleatorio como ID, pero manténgalo al tanto para que pueda cancelar la notificación más adelante. El mejor método es almacenarlo en forma constante en lugar de codificar el número como un parámetro, pero este es un tutorial educativo, por lo que simplemente lo codificaremos para fines de demostración..
notifMgr.notify (1234, notif);
Ahora, ¿en qué resulta esto? El LED solo comenzará a parpadear si la pantalla está apagada y se detendrá cuando la encienda o cuando cancele la llamada (). Así es como se diseñó el sistema de notificación de Android; Actualmente no hay manera de tomar control directo de la iluminación LED / trackball. Además, ten en cuenta que tienes que llamar notifMgr.cancel (1234) eventualmente - 1234 es el ID que especificó anteriormente. Podría configurar un temporizador para que se encargue de eso o podría invocarlo cuando su actividad recupere el enfoque..
Redondearé esta publicación con algunas palabras sobre compatibilidad: cada línea de dispositivo difiere de alguna manera. Algunos teléfonos tienen una rueda de desplazamiento con capacidades de iluminación, otros tienen un LED y otros no tienen ninguno. El sistema Android hará todo lo posible en un intento por hacer lo que le dijiste, pero no puede ofrecer ninguna garantía..
Recuerde siempre: use cualquier tipo de alerta con moderación y prudencia. Es mejor equivocarse en el lado seguro y decidir no usar vibraciones / luces que usarlas en exceso, por lo tanto molestar a los usuarios, lo que podría resultar en una mala experiencia para el usuario final. Finalmente, si ha seguido y quiere probar el código del tutorial, tendrá que usar un dispositivo Android real, ya que el emulador no admite vibraciones ni LED. Por ahora, el simulador desafortunadamente no mostrará un "indicador LED". surgir. Tal vez lo sea en el futuro ... ciertamente lo espero.