La HAL del vibrador define las constantes y los elementos primitivos hápticos, y el framework de Android los asigna a las APIs públicas. Realiza estas verificaciones para determinar si tu dispositivo cumple con los requisitos mínimos para implementar la tecnología háptica:
Figura 2: Implementa efectos
Figura 3: Implementación de elementos primitivos
Implementa constantes
Los desarrolladores pueden usar las constantes hápticas en VibrationEffect a través de VibrationEffect.createPredefined(). Consulta el estado de implementación de las siguientes constantes hápticas.
Constantes de respuesta táctil | Ubicaciones y resúmenes |
---|---|
EFFECT_TICK , EFFECT_CLICK ,
EFFECT_HEAVY_CLICK ,
EFFECT_DOUBLE_CLICK |
VibrationEffect
claseLas constantes de vibración en VibrationEffect no incluyen ninguna noción de eventos de entrada y no tienen elementos de IU. Las constantes incluyen la noción de niveles de energía, como EFFECT_CLICK y EFFECT_HEAVY_CLICK , a los que se llama con
createPredefined() . |
Las vibraciones alternativas que se describen a continuación se realizan en dispositivos que no implementan las constantes de VibrationEffect
. Se recomienda actualizar estos parámetros de configuración para que tengan el mejor rendimiento en esos dispositivos.
EFFECT_CLICK
Vibración de forma de onda creada con
VibrationEffect.createWaveform
y los tiempos configurados enframeworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern
.EFFECT_HEAVY_CLICK
Vibración de forma de onda creada con
VibrationEffect.createWaveform
y los tiempos configurados enframeworks/base/core/res/res/values/config.xml##config_longPressVibePattern
.EFFECT_DOUBLE_CLICK
Vibración de forma de onda creada con
VibrationEffect.createWaveform
y los tiempos (0, 30, 100, 30).EFFECT_TICK
Vibración de forma de onda creada con
VibrationEffect.createWaveform
y los tiempos configurados enframeworks/base/core/res/res/values/config.xml##config_clockTickVibePattern
.
Figura 4: Implementación de constantes de comentarios
Los desarrolladores pueden usar las constantes hápticas en HapticFeedbackConstants a través de View.performHapticFeedback(). Verifica el estado de las siguientes constantes de comentarios públicos.
Constantes de respuesta táctil | Ubicaciones y resúmenes |
---|---|
CLOCK_TICK , CONTEXT_CLICK , KEYBOARD_PRESS ,
KEYBOARD_RELEASE , KEYBOARD_TAP , LONG_PRESS ,
TEXT_HANDLE_MOVE , VIRTUAL_KEY ,
VIRTUAL_KEY_RELEASE , CONFIRM , REJECT ,
GESTURE_START , GESTURE_END |
Clase HapticFeedbackConstants Las constantes hápticas en HapticFeedbackConstants ayudan a los eventos de entrada con ciertos elementos de la IU, como KEYBOARD_PRESS y KEYBOARD_RELEASE , a los que llama performHapticFeedback() . |
Implementa elementos básicos
Las primitivas hápticas en VibrationEffect.Composition
tienen una intensidad escalable que los desarrolladores pueden usar a través de addPrimitive(int primitiveId, float scale, int delay)
.
Las primitivas se pueden dividir en dos categorías:
Primitivas cortas: Son primitivas con una duración corta, por lo general, menos de 20 ms. Estas son
CLICK
,TICK
yLOW_TICK
.Primitivas de Chirp: Son primitivas con amplitud y frecuencia variables, por lo general, con una duración más larga que las primitivas cortas. Estos son
SLOW_RISE
,QUICK_RISE
,QUCK_FALL
,THUD
ySPIN
.
Primitivas de Short
Las primitivas cortas se pueden describir con el perfil de aceleración de salida del motor vibratorio. La frecuencia absoluta utilizada varía para cada primitiva, según la frecuencia de resonancia del actuador. Consulta Cómo configurar el equipo de prueba para obtener más información sobre la configuración del hardware y las herramientas para medir la salida.
Una métrica de calidad valiosa para las vibraciones cortas es la relación entre el pulso y el timbre (PRR), que se muestra en la Figura 5. La PRR se define como la proporción entre el pulso principal, definido por el intervalo de la señal en el que la amplitud disminuye hasta el 10% de la amplitud máxima, y el pulso de timbre, definido por el intervalo de la señal en el que la amplitud disminuye del 10% de la amplitud máxima a menos del 1% de la amplitud máxima. La fórmula para el PRR es la siguiente:
Para obtener más información sobre la PRR, consulta Cómo analizar la forma de onda y, para obtener más información sobre cómo analizar y comparar los resultados, consulta Cómo comparar los resultados con el mapa de rendimiento.
Figura 5: Definición de la proporción de pulsación a llamada
Aplica primitivas cortas como comentarios de entrada del usuario o reprodúcelas en composiciones más largas para crear texturas suaves. Esto significa que suelen activarse con frecuencia y reproducirse en rápida sucesión. La intensidad percibida de una sola primitiva corta puede aumentar la intensidad del efecto general. Por este motivo, calibra un solo tick o un elemento primitivo de pocos ticks con una composición más grande, por ejemplo, 100 ticks consecutivos.
Primitiva de clic
La primitiva de clic es un efecto fuerte y nítido que suele operar cerca de la frecuencia de resonancia de un dispositivo para alcanzar la potencia máxima en un período breve. Es más fuerte y profunda que las otras primitivas, y se ejecuta con la máxima intensidad.
Si está disponible, usa la sobremarcha del motor al principio y el frenado activo al final para lograr un tiempo de subida y bajada del motor corto. En el caso de algunos motores, usar una onda cuadrada en lugar de una onda sinusoidal puede lograr una aceleración más rápida. En la figura 6, se muestra un ejemplo de perfil de aceleración de salida para el componente Click:
Figura 6: Ejemplo de perfil de aceleración de salida para la primitiva de clic
Parámetro | Guideline |
---|---|
Duración |
Objetivo: 12 ms Límite: < 30 ms |
Aceleración de la salida máxima |
Objetivo: 2 G Límite: > 1 G |
Frecuencia | Aproximadamente en la frecuencia de resonancia |
Marca primitiva (marca clara)
El elemento primitivo de tic es un efecto corto y nítido que suele operar en un rango de frecuencia más alto. Esta primitiva también se puede describir como un clic de intensidad media a una frecuencia más alta con una cola corta. La misma guía se aplica para lograr un tiempo de subida corto con sobremarcha del motor o una onda cuadrada para el inicio inicial, y un frenado activo en el desplazamiento. En la figura 7, se muestra un ejemplo de perfil de aceleración de salida para la primitiva de marca:
Figura 7: Ejemplo de perfil de aceleración de salida para la primitiva de marca
Parámetro | Guideline |
---|---|
Duración |
Objetivo: 5 ms Límite: < 20 ms |
Aceleración de la salida máxima |
Objetivo: La mitad de Límite: Entre 0.5 G y 1 G |
Frecuencia |
Objetivo: 2 veces la frecuencia de resonancia Límite: < 500 Hz |
Primitiva de baja resolución
El elemento primitivo de tic bajo es una versión más suave y débil de un tic ligero, que opera en un rango de frecuencia más bajo para proporcionar más cuerpo al efecto. Este elemento primitivo también se puede describir como un clic de intensidad media con una frecuencia más baja, que se puede usar de forma repetitiva para obtener comentarios dinámicos. La misma guía se aplica para lograr un tiempo de subida corto con sobremarcha del motor o una onda cuadrada para el inicio inicial. En la figura 8, se muestra un ejemplo de perfil de aceleración de salida para la primitiva de baja resolución:
Figura 8: Ejemplo de perfil de aceleración de salida para un elemento primitivo de baja resolución
Parámetro | Guideline |
---|---|
Duración |
Objetivo: 12 ms Límite: < 30 ms |
Aceleración de la salida máxima |
Objetivo: 1/4 de un Límite: Entre 0.2 G y 0.5 G |
Frecuencia |
Objetivo: 2/3 de la frecuencia de resonancia Límite: < 100 Hz |
Primitivas de Chirp
Las primitivas de Chirp se pueden describir con los parámetros de entrada de nivel de voltaje y frecuencia de vibración. La aceleración que el motor puede generar en diferentes rangos de frecuencia varía según la curva de respuesta de frecuencia del actuador. Los rangos de frecuencia y los niveles de voltaje deben ajustarse para cada dispositivo.
Primitiva de aumento lento
El aumento lento es un barrido lento de amplitud y frecuencia hacia arriba con un inicio suave y una intensidad de vibración que aumenta de forma constante a lo largo del barrido. Se puede implementar con un barrido coherente de la amplitud y la frecuencia, con un rango de frecuencia más bajo que funcione fuera de la resonancia. En la figura 9, se muestran los parámetros de entrada y un ejemplo del perfil de aceleración de salida para esta implementación. (La línea roja coincide con las etiquetas de amplitud de la izquierda y representa cómo varía la amplitud de la vibración con el tiempo. La línea azul coincide con las etiquetas de frecuencia de la derecha y representa cómo varía la frecuencia de vibración con el tiempo.
Figura 9: Parámetros de entrada y ejemplo del perfil de aceleración de salida para el elemento primitivo de aumento lento
Si la respuesta de frecuencia del motor es limitada (no es lo suficientemente fuerte fuera de su frecuencia de resonancia), una implementación alternativa es un barrido sinusoidal de 1/2 a 1 veces la frecuencia de resonancia. La resonancia del motor contribuye a alcanzar el pico de la señal al final.
Parámetro | Guideline |
---|---|
Duración |
Objetivo: 500 ms Tolerancia: 20 ms |
Aceleración de la salida máxima |
Objetivo: 0.5 G Límite: Entre 0.5 G y 1 G |
Frecuencia |
Objetivo: De 1/2 a 2/3 de la frecuencia de resonancia Alternativa: De 1/2 a la frecuencia de resonancia |
Primitiva de aumento rápido
El aumento rápido es un barrido más rápido de amplitud y frecuencia hacia arriba con un inicio suave y una intensidad de vibración que aumenta de forma constante en todo el barrido. Los objetivos de aceleración y frecuencia de vibración de salida deben ser los mismos que los de la primitiva de aumento lento, pero se alcanzan en un período más corto. En la figura 10, se muestran los parámetros de entrada de vibración y un ejemplo de perfil de aceleración de salida para el elemento primitivo de aumento lento. (La línea roja coincide con las etiquetas de amplitud de la izquierda y representa cómo varía la amplitud de la vibración con el tiempo. La línea azul coincide con las etiquetas de frecuencia de la derecha y representa cómo varía la frecuencia de vibración con el tiempo.
Figura 10: Parámetros de entrada y ejemplo del perfil de aceleración de salida para la primitiva de aumento rápido
Parámetro | Guideline |
---|---|
Duración |
Objetivo: 150 ms Tolerancia: 20 ms |
Aceleración de la salida máxima |
Objetivo: Igual que en Límite: Igual que |
Frecuencia |
Objetivo: Igual que en Alternativa: Igual que |
Primitiva de caída rápida
La caída rápida es un barrido descendente rápido de amplitud y frecuencia con un inicio suave. Puedes usar una frecuencia más alta como punto de partida mientras el motor aumenta la velocidad para alcanzar la aceleración máxima de salida. La frecuencia debe disminuir de forma constante en todo el barrido, incluso durante el tiempo de subida. En la figura 11, se muestran los parámetros de entrada y un ejemplo de perfil de aceleración de salida para esta implementación. (La línea roja coincide con las etiquetas de amplitud de la izquierda y representa cómo varía la amplitud de la vibración con el tiempo. La línea azul coincide con las etiquetas de frecuencia de la derecha y representa cómo varía la frecuencia de vibración con el tiempo.
Figura 11: Parámetros de entrada y ejemplo del perfil de aceleración de salida para el elemento primitivo de caída rápida
Parámetro | Guideline |
---|---|
Duración |
Objetivo: 100 ms Tolerancia: 20 ms |
Aceleración de la salida máxima |
Objetivo: 1 G Límite: Entre 0.5 G y 2 G |
Frecuencia |
Objetivo: De 2 a 1 veces la frecuencia de resonancia |
Primitiva de golpe
El golpe es un efecto de percusión bajo y sordo que simula la sensación física de golpear madera hueca. Esta primitiva opera en un rango de frecuencia baja, similar a la primitiva de baja frecuencia, para proporcionar más cuerpo al efecto. Puedes implementar la primitiva de golpe seco como un barrido descendente de amplitud y frecuencia en un rango de frecuencia más bajo (preferentemente, menos de 100 Hz). En la figura 12, se muestran los parámetros de entrada y un ejemplo de perfil de aceleración de salida para esta implementación. (La línea roja coincide con las etiquetas de amplitud de la izquierda y representa cómo varía la amplitud de la vibración con el tiempo. La línea azul coincide con las etiquetas de frecuencia de la derecha y representa cómo varía la frecuencia de vibración con el tiempo.
Figura 12: Parámetros de entrada y ejemplo de perfil de aceleración de salida para el arquetipo de golpe
Si la respuesta de frecuencia del motor es limitada, una implementación alternativa es comenzar con una señal de transmisión de intensidad completa en la frecuencia resonante y reducirla a la frecuencia más baja posible que aún se pueda percibir. Este enfoque podría requerir un aumento de la intensidad de la señal de conducción en la frecuencia más baja para que se sienta la vibración.
Parámetro | Guideline |
---|---|
Duración |
Objetivo: 300 ms Tolerancia: 20 ms |
Aceleración de la salida máxima |
Objetivo: 0.25 G Límite: Entre 0.2 G y 0.5 G |
Frecuencia |
Objetivo: De 1/2 a 1/3 de la frecuencia de resonancia Alternativa: De 1 a 1/2 de la frecuencia de resonancia |
Primitiva de giro
El giro simula un impulso de giro rápido hacia arriba y hacia abajo con un ligero acento en el centro. El giro se puede implementar barriendo la amplitud y la frecuencia de forma independiente, en direcciones opuestas y seguido del movimiento inverso. Es importante usar un rango de frecuencia más bajo (preferentemente, menos de 100 Hz). En la figura 13, se muestran los parámetros de entrada y un ejemplo del perfil de aceleración de salida para esta implementación. (La línea roja coincide con las etiquetas de amplitud de la izquierda y representa cómo varía la amplitud de la vibración con el tiempo. La línea azul coincide con las etiquetas de frecuencia de la derecha y representa cómo varía la frecuencia de vibración con el tiempo.
Recomendamos que el elemento primitivo de rotación se llame dos veces seguidas o tres veces en las composiciones para lograr una sensación de rotación y de inestabilidad.
Si la respuesta de frecuencia del motor es limitada, una implementación alternativa es realizar un barrido sinusoidal rápido desde 1/2x hasta 1x la frecuencia resonante y viceversa. La resonancia del motor le da automáticamente al sonido un acento en el medio.
Figura 13: Parámetros de entrada y ejemplo del perfil de aceleración de salida para la primitiva de giro
Parámetro | Guideline |
---|---|
Duración |
Objetivo: 150 ms Tolerancia: 20 ms |
Aceleración de la salida máxima |
Objetivo: 0.5 G Límite: Entre 0.25 G y 0.75 G |
Frecuencia |
Objetivo: De 2/3 a 1/3 y, luego, de vuelta a 1/2 de la frecuencia de resonancia Alternativa: De 2/3 a 1 veces, luego, vuelve a 1/2 de la frecuencia de resonancia |