Manual de accionadores de vibraciones

Antes de diseñar efectos táctiles en un dispositivo Android, es útil obtener descripción general del funcionamiento de los accionadores de vibración.

Ilustración de los componentes de una LRA táctil

Los accionadores de vibración más comunes son los accionadores resonantes lineales (LRA). Cada LRA consiste en una bobina de voz presionada contra una masa magnética en movimiento que se a un resorte. Un voltaje de CA aplicado a la bobina de voz crea una la fuerza electromagnética que hace que la masa se mueva. El primavera proporciona la restaurando la fuerza que hace que la masa vuelva a su posición inicial. El el movimiento de la masa hace que el LRA vibre. Tienen un de resonancia a la que la salida es máxima.

Dado el mismo voltaje de entrada en dos frecuencias diferentes, la salida de vibración las amplitudes pueden ser diferentes. Cuanto más alejada se encuentre la frecuencia de la LRA de la frecuencia resonante, menor es su amplitud de vibración.

Una función común de los LRA en un dispositivo es simular la sensación de un botón sobre una superficie de vidrio que no responde. Sirve para que la interacción del usuario se sienta sean más naturales. Cuando se aplican al escribir en un teclado virtual, los comentarios de clics pueden aumentar la velocidad de escritura y reducir los errores. Una señal clara y nítida de comentarios de clics suele durar menos de 10 a 20 milisegundos. Cómo lograr un buen clic requiere algo de conocimiento de la LRA utilizada en un dispositivo. Es por eso que depender de las formas de onda prefabricadas proporcionan la mejor respuesta por un clic. Puedes usar con las constantes proporcionadas por la plataforma cada vez que se recibe según tus necesidades.

Los efectos táctiles que se pueden lograr en un dispositivo se determinan tanto por la vibración el accionador y su controlador. Controladores táctiles que incluyen overdrive y activos de frenado puede reducir el tiempo de aumento y el sonido de los LRA, lo que genera vibración responsiva y clara. A modo de ejemplo, veamos cómo se crea patrón de forma de onda se comporta en un dispositivo genérico.

Kotlin

val timings: LongArray = longArrayOf(50, 50, 50, 50, 50, 100, 350, 250)
val amplitudes: IntArray = intArrayOf(77, 79, 84, 99, 143, 255, 0, 255)
val repeatIndex = -1 // Do not repeat.

vibrator.vibrate(VibrationEffect.createWaveform(timings, amplitudes, repeatIndex))

Java

long[] timings = new long[] { 50, 50, 50, 50, 50, 100, 350, 250 };
int[] amplitudes = new int[] { 77, 79, 84, 99, 143, 255, 0, 255 };
int repeatIndex = -1 // Do not repeat.

vibrator.vibrate(VibrationEffect.createWaveform(timings, amplitudes, repeatIndex));

El siguiente gráfico muestra la forma de onda correspondiente a los fragmentos de código mostrados arriba.

Trama de la forma de onda de entrada de la función de paso

A continuación, se muestra la aceleración correspondiente:

Trama de la forma de onda medida real, que muestra más transiciones orgánicas entre los niveles

Ten en cuenta que la aceleración aumenta gradualmente, no de repente, siempre que haya un cambio de paso de amplitud en el patrón (p.ej., a los 0 ms, 150 ms, 200 ms, 250 ms, 700ms). También hay un exceso en cada cambio de amplitud de paso, y hay Es un “sonido” visible que dura al menos 50 ms cuando la amplitud de entrada aumenta repentinamente disminuye a 0.

Este patrón táctil se puede mejorar aumentando y disminuyendo las amplitudes gradualmente para evitar excederse y reducir el tiempo de sonido. A continuación, se muestra el diagramas de forma de onda y aceleración de la versión revisada.

Kotlin

val timings: LongArray = longArrayOf(
    25, 25, 50, 25, 25, 25, 25, 25, 25, 25, 75, 25, 25,
    300, 25, 25, 150, 25, 25, 25
)
val amplitudes: IntArray = intArrayOf(
    38, 77, 79, 84, 92, 99, 121, 143, 180, 217, 255, 170, 85,
    0, 85, 170, 255, 170, 85, 0
)
val repeatIndex = -1 // Do not repeat.

vibrator.vibrate(VibrationEffect.createWaveform(timings, amplitudes, repeatIndex))

Java

long[] timings = new long[] {
        25, 25, 50, 25, 25, 25, 25, 25, 25, 25, 75, 25, 25,
        300, 25, 25, 150, 25, 25, 25
    };
int[] amplitudes = new int[] {
        38, 77, 79, 84, 92, 99, 121, 143, 180, 217, 255, 170, 85,
        0, 85, 170, 255, 170, 85, 0
    };
int repeatIndex = -1; // Do not repeat.

vibrator.vibrate(VibrationEffect.createWaveform(timings, amplitudes, repeatIndex));

Trama de la forma de onda de entrada con pasos adicionales

Trama de la forma de onda medida que muestra transiciones más fluidas

De ello se desprende que para crear un efecto táctil en un dispositivo Android se necesita más de proporcionando un valor de frecuencia y amplitud. No es una tarea trivial efecto táctil desde cero sin tener acceso completo a las especificaciones de ingeniería del accionador de vibración y el controlador. Las APIs de Android proporcionan constantes que te permiten hacer lo siguiente:

  • Realiza primitivas y efectos claros.

  • Concatenalos para componer nuevos efectos táctiles.

Estas constantes y primitivas predefinidas de la tecnología táctil pueden acelerar en gran medida tu trabajo a la vez que garantiza efectos táctiles de alta calidad.