Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Implementación de hápticos

Los fabricantes de dispositivos generalmente se consideran los propietarios de los activos privados creados para cada dispositivo. Como tal, sus esfuerzos de ingeniería se centran a menudo en función de cada dispositivo; poco o ningún esfuerzo se destina a la coherencia de otros dispositivos en el ecosistema.

En contraste directo, los desarrolladores se esfuerzan por construir aplicaciones que funcionan en todos los teléfonos Android en el ecosistema, sin tener en cuenta 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. Esta es la razón por la configuración de hardware juega un papel fundamental para asegurar que los fabricantes pueden aplicar API de Android háptica 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 figura siguiente ilustra la creación de un conocimiento común entre los fabricantes y desarrolladores de dispositivos, que es un paso fundamental para crear un ecosistema cohesivo.

Diagrama de casos de uso de hápticos para desarrolladores de aplicaciones y fabricantes de dispositivos

Conocimiento Figura 1. Edificio entre los fabricantes de dispositivos y desarrolladores

Lista de verificación de implementación de hápticos

  1. Implementar constantes

    • Lista de constantes para implementar hápticas.
  2. Mapear constantes entre HAL y API

  3. Evaluar el hardware

    • Instrucciones sobre los efectos hápticos 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 la háptica.

Diagrama de flujo del proceso de implementación de hápticos

Efectos Figura 2. Ejecución

Diagrama de flujo de pasos para implementar primitivas

Primitivas Figura 3. Ejecución

Compruebe 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 VibrationEffect clase
Las constantes hápticos en VibrationEffect no incluyen ninguna noción de eventos de entrada, y no tienen elementos de interfaz de usuario. Constantes incluyen la noción de niveles de energía en lugar, como EFFECT_CLICK y EFFECT_HEAVY_CLICK , que son llamados por createPredefined() .
PRIMITIVE_TICK , PRIMITIVE_CLICK , PRIMITIVE_LOW_TICK> , PRIMITIVE_SLOW_RISE , PRIMITIVE_QUICK_RISE , PRIMITIVE_QUICK_FALL , PRIMITIVE_SPIN , PRIMITIVE_THUD VibrationEffect.Composition clase
Constantes hápticos en VibrationEffect.Composition se les permite tener intensidad escalable, que son llamados por addPrimitive(int primitiveId, float scale, int delay) .

Las vibraciones alternativos se describen a continuación se llevarán a cabo en los dispositivos que no implementan los VibrationEffect constantes. Se recomienda actualizar estas configuraciones para que funcionen mejor en dichos dispositivos.

  1. EFFECT_CLICK

    De forma de onda de vibración creada con VibrationEffect.createWaveform y los tiempos configurados en frameworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern .

  2. EFFECT_HEAVY_CLICK

    De forma de onda de vibración creada con VibrationEffect.createWaveform y los tiempos configurados en frameworks/base/core/res/res/values/config.xml##config_longPressVibePattern .

  3. EFFECT_DOUBLE_CLICK

    De forma de onda de vibración creada con VibrationEffect.createWaveform y los tiempos (0, 30, 100, 30).

  4. EFFECT_TICK

    De forma de onda de vibración creada con VibrationEffect.createWaveform y los tiempos configurados en frameworks/base/core/res/res/values/config.xml##config_clockTickVibePattern .

Diagrama de flujo de pasos para probar la retroalimentación háptica

Constantes de retroalimentación Figura 4. Aplicación

Verifique el estado de las siguientes constantes de retroalimentación pública.

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

HapticFeedbackConstants clase
Constantes hápticos en HapticFeedbackConstants ayudan eventos de entrada con ciertos elementos de interfaz de usuario, tales como KEYBOARD_PRESS y KEYBOARD_RELEASE , que son llamados por performHapticFeedback() .

Paso 2: mapear constantes entre HAL y API

El paso 2 presenta las asignaciones recomendadas entre las constantes HAL públicas y las constantes API. Si el hardware evaluado en el Paso 1 no implementa las constantes HAL, entonces el Paso 2 debe usarse para actualizar los patrones de respaldo descritos en el Paso 1 para generar salidas similares. El mapeo es asistido por dos modelos predeterminados diferentes.

  • Modelo discreto (simple)

    • La amplitud es la variable clave de este modelo. Cada entidad en el HAL representa una amplitud háptica diferente.
    • Este modelo es un requisito mínimo necesario para implementar la experiencia de usuario 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 el HAL representa diferentes texturas hápticas. La amplitud de cada entidad HAL es controlada por el factor de escala ( S ).
    • Este modelo requiere hardware avanzado. Si los fabricantes de equipos quieren usar UX háptica avanzada con VibrationEffect.Composition (para el mejor uso de las API últimas hápticos), la aplicación de su hardware usando este modelo se recomienda.

Modelo discreto

Se recomienda mapear todas las constantes públicas proporcionadas en la API con las constantes HAL apropiadas. Para comenzar este proceso, averigüe cuántas formas de onda hápticas con amplitud discreta puede definir el dispositivo en el HAL. Una pregunta específica estructura en torno a que se ve como esta noción: ¿Cómo muchos efectos hápticos de un solo impulso con diferencias de amplitud-humanos perceptible puede definirse 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 de nivel de entrada puede tener solo 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 el HAL. El mapeo de constantes HAL-API toma la constante HAL (usando la amplitud media como línea de base), luego organiza efectos más fuertes o más débiles desde allí.

Diagrama del rango constante de HAL y amplitudes de retroalimentación

Figura 5. HAL gama constante por amplitud

Cuando se define el número de constantes HAL con amplitud discreta, es el momento de mapear las constantes HAL y API por el número de constantes HAL. Este proceso de mapeo puede segmentar una única constante API de impulso en hasta tres grupos discretos de niveles de amplitud. La forma en que se segmentan las constantes de API se basa en los principios de UX para acompañar los eventos de entrada. Para obtener más información, consulte hápticos UX Design .

Modelo discreto para mapeo constante HAL-API

Figura mapeo constante 6. HAL-API: modelo discreto

Si su dispositivo solo admite dos constantes HAL con amplitudes discretas, considere fusionar las constantes HAL de nivel de amplitud media y alta. Un ejemplo de esta noción en la práctica sería mapear EFFECT_CLICK y EFFECT_HEAVY_CLICK a la misma constante HAL, lo que sería la constante Medium HAL nivel de amplitud. Si su dispositivo admite sólo una constante HAL con amplitud discreta, considerar la fusión de los tres niveles en una sola.

Modelo continuo

El modelo continuo con escalabilidad de amplitud se puede aplicar para definir constantes HAL. Un factor de escala ( S ) se puede aplicar a las constantes HAL (por ejemplo, HAL_H0 , HAL_H1 ) para producir el HAL reducido ( HAL_H0 x S ). En este caso, la HAL escalado se asigna a definir constantes API ( HAL_H0 x S1 = H0S1 = EFFECT_TICK ) como se muestra en la figura 7. Mediante el uso de escalabilidad amplitud de la modelo continuo, un dispositivo puede almacenar un pequeño número de constantes HAL con texturas distintivas y añadir variaciones de amplitud mediante el ajuste del factor de escala ( S ). Los fabricantes de dispositivos pueden definir el número de constantes HAL en función de la cantidad de texturas hápticas diferentes que quieran proporcionar.

Rango constante HAL por textura y amplitud

Figura 7. HAL gama constante por la textura (HAL_H0) y la escala de amplitud (S)

Modelo continuo para mapeo constante HAL-API

Figura mapeo constante 8. HAL-API: modelo continuo

En el modelo continuo, diferentes constantes de HAL representan diferentes texturas hápticos en lugar de diferentes amplitudes; el factor de escala ( S ) se 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 una HAL a muchas constantes API con escalabilidad de amplitud.

Varation creciente 1

Varation creciente 2

Figura 9. El aumento de variación con la escalabilidad amplitud

Nota: La figura anterior ilustra una instancia específica de mapeo constante, por lo que las convenciones de nomenclatura son hipotéticos. La realización de este proceso es única para cada fabricante de dispositivos.

Para todas las constantes de API escalables como PRIMITIVE_TICK y PRIMITIVE_CLICK en VibrationEffect.Composition , el nivel de energía de la constante de API depende de la float scale parámetro de cuando la constante de API se declara a través addPrimitive(int primitiveID, float scale, int delay) . PRIMITIVE_TICK y PRIMITIVE_CLICK pueden ser diseñados con una clara distinción mediante el uso de diferentes constantes de HAL. Se recomienda este método si desea agregar la variación de la textura.

Paso 3: evalúe el hardware

La evaluación del hardware implica la definición de tres efectos hápticos, denominados Efectos 1, 2 y 3 para esta evaluación específica.

Efecto 1: constantes hápticas cortas predefinidas

El VibrationEffect.EFFECT_CLICK constante es el efecto de línea de base o el denominador común en el mapeo HAL-API proporcionada en la etapa 2. Se asigna con el efecto más utilizado, HapticFeedbackConstants.KEYBOARD_PRESS . La evaluación de este efecto ayuda a determinar la disposición de su dispositivo de destino para la háptica claras .

Efecto 2: efecto háptico personalizado corto

El VibrationEffect.createOneShot(20,255) constante es para efectos de encargo hápticos. Para impulsos personalizados únicos y cortos, 20 ms es el umbral máximo recomendado para definir la duración. No se recomienda un solo impulso más largo que 20 ms, porque se percibe como una vibración amenidad .

Forma de onda del efecto háptico personalizado corto

Figura 10. Breve efecto personalizado háptica

Efecto 3: efecto háptico personalizado largo con variación de amplitud

El VibrationEffect.createWaveform(timings[], amplitudes[], int repeat) constante es para efectos personalizados largos con variación de la amplitud. La capacidad de producir diferentes amplitudes de efectos hápticos personalizada es uno de los indicadores para evaluar las capacidades del dispositivo para háptica ricos . Los recomendados timings [] y amplitudes [] son {500, 500} y {128, 255} , respectivamente, que presenta una tendencia al aumento de amplitud de 50% a 100%, con un 500 ms velocidad de muestreo.

Forma de onda de efecto háptico con variación de amplitud

Figura 11. largo efecto personalizado háptica con variación de amplitud

Para comprobar las capacidades del hardware de control de amplitud para Effect 3, utilice el Vibrator.hasAmplitudeControl() método. El resultado tiene que ser true para ejecutar VibrationEffect.createWaveform con amplitud variable como se pretende.

Diagrama de flujo de la evaluación subjetiva del efecto háptico

Figura 12. Evaluación Asunto de efecto háptico 1, 2, y 3

Realizar una evaluación subjetiva

Para una comprobación rápida de la coherencia, primero realice 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 humanos.

Una pregunta específica estructura en torno a esta noción es similar al siguiente: ¿Puede el dispositivo de productos fácilmente perceptibles efectos hápticos a los usuarios como se esperaba? La respuesta a esta pregunta le ayuda a evitar háptica fallidos, incluyendo háptica imperceptibles que los usuarios no pueden sentir o háptica no deseados en las formas de onda no producen patrones de la forma prevista.