Vibración

Este es un documento derivado del post de Erik Pavey al que se puede acceder aquí.

Hacer vibrar el dispositivo móvil en el momento adecuado es un recurso útil tanto para notificar al usuario sobre un evento en el contexto del juego o la aplicación como para proporcionar feedback de las acciones que se encuentre realizando -por ejemplo, vibrar cuando pulsa un botón-.

Las vibraciones en Android forman parte de su sistema de notificaciones. Éste será el que tendremos que cargar en un sketch de Processing para obtener esta forma de respuesta por parte del dispositivo.

En primer lugar necesitamos importar una serie de librerías que nos proporcionan el acceso funcional a este sistema de notificaciones:

import android.app.Notification;
import android.app.NotificationManager;
import android.content.Context;

Los objetos necesarios para lanzar una vibración del dispositivo son:

NotificationManager gNotificationManager;
Notification gNotification;
 
long[] gVibrate = {0, 100};

Con inicializar los dos primeros objetos en el setup() de Processing no basta. Es necesario que sean inicializados cada vez que el dispositivo es despertado de una pausa. En Android este despertar ejecuta la función onResume(). Podemos entonces sobreescribirla en nuestro sketch e introducir allí la inicialización de estos objetos:

void onResume() {
  super.onResume();
 
  gNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
 
  gNotification = new Notification();
  gNotification.vibrate = gVibrate;
}

Podremos con estos recursos invocar una función como la siguiente para hacer vibrar al dispositivo:

void vibrate() {
  gNotificationManager.notify(1, gNotification);
}

Caracterizar la vibración

La secuencia de vibración queda definida con un patrón en el que se especifica los tiempos de vibración y los de silencio:

long[] gVibrate = {0, millisOn_1, millisOff_1, millisOn_2, millisOff_2, ...};

Así, en el ejemplo anterior, el patrón era {0, 100}: 0 es un índice que indica al dispositivo a iniciar sin pausa la secuencia; 100, la duración en milisegundos de la única vibración especificada. Es un patrón que describe una vibración única de 100 ms; un feedback de botón pulsado, por ejemplo.