Los fabricantes de dispositivos generalmente se consideran propietarios de los activos privados creados para cada dispositivo. Como tal, sus esfuerzos de ingeniería a menudo se centran en cada dispositivo ; Poco o ningún esfuerzo se dedica a la coherencia de otros dispositivos en el ecosistema.
En contraste directo, los desarrolladores se esfuerzan por crear aplicaciones que funcionen en todos los teléfonos Android del ecosistema, independientemente de las especificaciones técnicas de cada dispositivo. Esta diferencia de enfoque puede causar un problema de fragmentación; por ejemplo, las capacidades de hardware de ciertos teléfonos no coinciden con las expectativas establecidas por los desarrolladores de la aplicación. Entonces, si las API hápticas funcionan en algunos teléfonos Android pero no en otros, el resultado es un ecosistema inconsistente. Es por eso que la configuración del hardware juega un papel fundamental para garantizar que los fabricantes puedan implementar API hápticas de Android en todos los dispositivos.
Esta página proporciona una lista de verificación paso a paso para configurar el cumplimiento del hardware para el mejor uso de las API hápticas de Android.
La siguiente figura ilustra la creación de conocimiento común entre fabricantes y desarrolladores de dispositivos, lo cual es un paso fundamental para crear un ecosistema cohesivo.
Figura 1. Generación de conocimiento entre fabricantes y desarrolladores de dispositivos
Lista de verificación de implementación háptica
- Lista de constantes para implementar hápticos.
Mapear constantes entre HAL y API
- Recomendaciones de mapeo entre constantes de API públicas ( marcadores de posición denominados en el marco) y constantes HAL, que implementan los marcadores de posición.
- Consulte Principios de diseño para guiar el mapeo recomendado para obtener más información sobre este proceso.
- Instrucciones sobre los efectos hápticos del objetivo. Utilice estas instrucciones para realizar comprobaciones rápidas en su hardware.
Exploraremos cada uno de estos pasos con mayor detalle a continuación.
Paso 1: implementar constantes
Realice estas comprobaciones para determinar si su dispositivo cumple con los requisitos mínimos para implementar hápticos.
Figura 2. Efectos de implementación
Figura 3. Implementación de primitivas
Verifique el estado de implementación de las siguientes constantes hápticas.
Constantes hápticas | Ubicaciones y resúmenes |
---|---|
EFFECT_TICK , EFFECT_CLICK , EFFECT_HEAVY_CLICK , EFFECT_DOUBLE_CLICK | Clase de VibrationEffect Las constantes hápticas en VibrationEffect no incluyen ninguna noción de eventos de entrada y no tienen elementos de interfaz de usuario. En cambio, las constantes incluyen la noción de niveles de energía, como EFFECT_CLICK y EFFECT_HEAVY_CLICK , que son llamadas mediante createPredefined() . |
PRIMITIVE_TICK , PRIMITIVE_CLICK , PRIMITIVE_LOW_TICK> , PRIMITIVE_SLOW_RISE , PRIMITIVE_QUICK_RISE , PRIMITIVE_QUICK_FALL , PRIMITIVE_SPIN , PRIMITIVE_THUD | VibrationEffect.Composition Clase de composiciónLas constantes hápticas en VibrationEffect.Composition pueden tener una intensidad escalable, que se llama mediante addPrimitive(int primitiveId, float scale, int delay) . |
Las vibraciones alternativas que se describen a continuación se realizan en dispositivos que no implementan las constantes VibrationEffect
. Se recomienda actualizar estas configuraciones para que funcionen mejor en dichos 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 retroalimentación
Verifique el estado de las siguientes constantes de comentarios públicos.
Constantes hápticas | 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 interfaz de usuario, como KEYBOARD_PRESS y KEYBOARD_RELEASE , que son llamados por performHapticFeedback() . |
Paso 2: Asigne constantes entre HAL y API
El paso 2 presenta asignaciones recomendadas entre constantes HAL públicas y constantes API. Si el hardware evaluado en el Paso 1 no implementa las constantes HAL, entonces se debe utilizar el Paso 2 para actualizar los patrones de respaldo descritos en el Paso 1 para generar resultados similares. El mapeo está asistido por dos modelos predeterminados diferentes.
Modelo discreto (simple)
- La amplitud es la variable clave de este modelo. Cada entidad en HAL representa una amplitud háptica diferente.
- Este modelo es un requisito mínimo necesario para implementar la UX háptica básica.
- Una UX háptica más avanzada requiere hardware avanzado y un modelo avanzado (modelo continuo).
Modelo continuo (avanzado)
- La textura y la amplitud son las variables clave de este modelo. Cada entidad en HAL representa diferentes texturas hápticas. La amplitud de cada entidad HAL está controlada por el factor de escala (
S
). - Este modelo requiere hardware avanzado. Si los OEM desean utilizar UX háptico avanzado con
VibrationEffect.Composition
(para el mejor uso de las API hápticas más recientes), se recomienda implementar su hardware utilizando este modelo.
- La textura y la amplitud son las variables clave de este modelo. Cada entidad en HAL representa diferentes texturas hápticas. La amplitud de cada entidad HAL está controlada por el factor de escala (
modelo discreto
Se recomienda asignar todas las constantes públicas proporcionadas en la API con constantes HAL apropiadas. Para comenzar este proceso, descubra cuántas formas de onda hápticas con amplitud discreta puede definir el dispositivo en HAL. Una pregunta específica estructurada en torno a esa noción es la siguiente: ¿Cuántos efectos hápticos de un solo impulso con diferencias de amplitud perceptibles por el ser humano se pueden definir en mi teléfono? La respuesta a esta pregunta determina el mapeo.
La definición de constantes HAL es un proceso que depende del hardware. Por ejemplo, un teléfono básico podría tener sólo las capacidades de hardware para producir una única forma de onda háptica. Los dispositivos con componentes de hardware más avanzados producen una gama más amplia de niveles de amplitud discretos y pueden definir múltiples formas de onda hápticas en HAL. El mapeo constante HAL-API toma la constante HAL (usando la amplitud media como línea de base) y luego organiza efectos más fuertes o más débiles a partir de ahí.
Figura 5. Rango constante HAL por amplitud
Cuando se define la cantidad de constantes HAL con amplitud discreta, es hora de asignar las constantes HAL y API por la cantidad de constantes HAL. Este proceso de mapeo puede segmentar una constante API de impulso único en hasta tres grupos discretos de niveles de amplitud. La forma en que se segmentan las constantes de API se basa en principios de UX para acompañar los eventos de entrada. Para obtener más información, consulte Diseño Haptics UX .
Figura 6. Mapeo constante HAL-API: modelo discreto
Si su dispositivo admite solo dos constantes HAL con amplitudes discretas, considere fusionar constantes HAL de nivel de amplitud media y alta. Un ejemplo de esta noción en la práctica sería asignar EFFECT_CLICK
y EFFECT_HEAVY_CLICK
a la misma constante HAL, que sería la constante HAL de nivel de amplitud media. Si su dispositivo admite solo una constante HAL con amplitud discreta, considere fusionar los tres niveles en uno.
modelo continuo
El modelo continuo con escalabilidad de amplitud se puede aplicar para definir constantes HAL. Se puede aplicar un factor de escala ( S
) a las constantes HAL (por ejemplo, HAL_H0
, HAL_H1
) para producir el HAL escalado ( HAL_H0
x S
). En este caso, el HAL escalado se asigna para definir constantes API ( HAL_H0
x S1
= H0S1
= EFFECT_TICK
) como se muestra en la figura 7. Al utilizar la escalabilidad de amplitud del modelo continuo, un dispositivo puede almacenar una pequeña cantidad de constantes HAL con texturas distintivas. y agregue variaciones de amplitud ajustando el factor de escala ( S
). Los fabricantes de dispositivos pueden definir la cantidad de constantes HAL en función de cuántas texturas hápticas diferentes desean proporcionar.
Figura 7. Rango constante de HAL por textura (HAL_H0) y escala de amplitud (S)
Figura 8. Mapeo constante HAL-API: modelo continuo
En el modelo continuo, diferentes constantes HAL representan diferentes texturas hápticas en lugar de diferentes amplitudes; el factor de escala ( S
) puede configurar la amplitud. Sin embargo, debido a que la percepción de la textura (por ejemplo, la nitidez) está relacionada con la percepción de la duración y la amplitud, se recomienda combinar la textura y el factor de escala (en el proceso de diseño del mapeo HAL-API).
La Figura 7 ilustra el mapeo constante aumentando la variación de un HAL a muchas constantes API con escalabilidad de amplitud.
Figura 9. Variación creciente con escalabilidad de amplitud
Para todas las constantes API escalables como PRIMITIVE_TICK
y PRIMITIVE_CLICK
en VibrationEffect.Composition
, el nivel de energía de la constante API depende del parámetro float scale
cuando la constante API se declara mediante addPrimitive(int primitiveID, float scale, int delay)
. PRIMITIVE_TICK
y PRIMITIVE_CLICK
se pueden diseñar con una distinción clara mediante el uso de diferentes constantes HAL. Se recomienda este enfoque si desea agregar variación a la textura .
Paso 3: evaluar el hardware
La evaluación de hardware implica definir tres efectos hápticos, denominados Efectos 1, 2 y 3 para esta evaluación específica.
Efecto 1: Constantes hápticas cortas predefinidas
La constante VibrationEffect.EFFECT_CLICK
es el efecto de referencia o denominador común en el mapeo HAL-API proporcionado en el Paso 2. Está mapeado con el efecto más utilizado, HapticFeedbackConstants.KEYBOARD_PRESS
. La evaluación de este efecto ayuda a determinar si el dispositivo objetivo está preparado para una sensación táctil clara .
Efecto 2: efecto háptico personalizado corto
La constante VibrationEffect.createOneShot(20,255)
es para efectos hápticos personalizados. Para impulsos personalizados cortos y únicos, 20 ms es el umbral máximo recomendado para definir la duración. No se recomienda un solo impulso de más de 20 ms porque se percibe como un zumbido .
Figura 10. Efecto háptico personalizado corto
Efecto 3: efecto háptico personalizado largo con variación de amplitud
La constante VibrationEffect.createWaveform(timings[], amplitudes[], int repeat)
es para efectos personalizados largos con variación de amplitud. La capacidad de producir amplitudes variables para efectos hápticos personalizados es uno de los indicadores para evaluar las capacidades del dispositivo para lograr hápticos ricos . Los timings []
y amplitudes []
recomendados son {500, 500}
y {128, 255}
, respectivamente, lo que presenta una tendencia creciente de amplitud del 50% al 100%, con una frecuencia de muestreo de 500 ms.
Figura 11. Efecto háptico personalizado largo con variación de amplitud
Para verificar las capacidades del hardware de control de amplitud para el Efecto 3, use el método Vibrator.hasAmplitudeControl()
. El resultado debe ser true
para ejecutar VibrationEffect.createWaveform
con amplitud variable según lo previsto.
Figura 12. Evaluación del sujeto del efecto háptico 1, 2 y 3
Realizar una evaluación subjetiva
Para comprobar rápidamente la coherencia, realice primero una evaluación subjetiva. El objetivo de la evaluación subjetiva es observar la amplitud de los efectos hápticos para determinar si el dispositivo puede generar hápticos con amplitudes perceptibles por los humanos.
Una pregunta específica estructurada en torno a esta noción es la siguiente: ¿Puede el dispositivo producir efectos hápticos fácilmente perceptibles para los usuarios como se esperaba? Responder a esta pregunta le ayuda a evitar hápticos fallidos , incluidos hápticos imperceptibles que los usuarios no pueden sentir o hápticos no deseados en los que las formas de onda no producen patrones como se esperaba.