Base de UX para el framework táctil

Todas las mejoras del framework de Android creadas en torno a la tecnología táctil se basan en un conjunto de principios de UX que evolucionan a la misma velocidad. El valor actual Consiste en reemplazar la vibración ruidosa por una tecnología táctil clara. a explorar la tecnología táctil enriquecida.

Principios de UX

Figura 1: Principios actuales

En la siguiente tabla, se enumeran todas las APIs de tecnología táctil disponibles.

API Métodos Año agregado
android.view.HápticFeedbackConstants
  • CLIC CONTEXTO
  • RELOJ_TICK
  • CLAVE_VIRTUAL
  • TECLADO_PRESIONADO
  • MANTENER_PRESIONADO
Antes de 2016
  • PRESIÓN_DE_TECLADO
  • LANZAMIENTO DEL TECLADO
  • MOVER_MANUALIZACIÓN_DE_TEXTO
  • LANZAMIENTO DE CLAVE VIRTUAL
2017 (Android 8)
  • CONFIRMAR
  • RECHAZAR
  • GESTURE_START
  • GESTURE_END
2020 (Android 11)
Vista de android
  • runHapticFeedback()
Antes de 2016
android.os.vibrador
  • vibrar()
  • hasVibrator()
Antes de 2016
  • hasAmplitudeControl()
2017 (Android 8)
  • areAllEffectsSupported()
  • areAllPrimitivesSupported()
  • areEffectsSupported()
  • arePrimitivesSupported()
2020 (Android 11)
android.os.VibrationEffect
  • createOneShot()
  • createWaveform()
2017 (Android 8)
  • EFECTO_TICK
  • EFECTO CLIC
  • EFECTO_HEAVY_CLIC
  • EFECTO_DOUBLE_CLIC
  • createPrefix()
2019 (Android 10)
android.os.VibrationEffect.Composición
  • ENTRADA_PRIMITIVA
  • CLIC PRIMITIVE
  • addPrimitive()
  • redactar()
2020 (Android 11)
android.media.AudioAttributes.Builder
  • setHapticChannelsSilenciados()
2019 (Android 10)

Vibración ruidosa

Desde los localizadores y teléfonos de gama media, el ERM de baja calidad, pero con bajo consumo de energía las vibraciones basadas en el zumbido se usan como sustituto del sonido auditivo. modo silencioso Los componentes de hardware heredados que producen sonidos los ruidos audibles pueden dañar la UX táctil al generar impresiones de baja calidad (por por ejemplo, un teléfono económico y roto).

Borrar tecnología háptica

La tecnología táctil clara admite la sensación de cambios de estado discretos (por ejemplo, los cambios binarios durante el proceso de encendido/apagado). Debido a la naturaleza del discreta, la tecnología táctil clara se genera como una sola entidad (para por ejemplo, un efecto táctil por cada evento de entrada).

El objetivo de Android es ofrecer una tecnología táctil clara con sensaciones fuertes pero nítidas en lugar que las sensaciones animadas o sucias.

Entre las constantes táctiles predefinidas que se crean para admitir una tecnología táctil clara, se incluyen las siguientes: lo siguiente.

En HapticFeedbackConstants:

  • CLOCK_TICK
  • CONFIRM
  • CONTEXT_CLICK
  • GESTURE_END
  • GESTURE_START
  • KEYBOARD_PRESS
  • KEYBOARD_RELEASE
  • KEYBOARD_TAP
  • LONG_PRESS
  • REJECT
  • TEXT_HANDLE_MOVE
  • VIRTUAL_KEY
  • VIRTUAL_KEY_RELEASE

En VibrationEffect:

  • EFFECT_CLICK
  • EFFECT_DOUBLE_CLICK
  • EFFECT_HEAVY_CLICK
  • EFFECT_TICK

Desarrollar un conocimiento común entre los fabricantes y desarrolladores de dispositivos es clave para lo que mejora la calidad general de la tecnología táctil en el ecosistema de Android. Usa el lista de tareas básica, evaluación de hardware, y CDD. para obtener más información sobre la implementación de tecnología táctil.

Prensa y comunicados

Figura 3: Presionar y soltar

Tecnología háptica enriquecida

La tecnología táctil enriquecida es una categoría de tecnología háptica en crecimiento que va más allá efectos basados en impulsos. El objetivo de Android es admitir tecnología táctil enriquecida con componibilidad y capacidad de ajuste con un fino nivel de detalle. Lo siguiente los casos de uso son compatibles con Android 11 o versiones anteriores.

Tecnología táctil enriquecida

Figura 4: Tecnología háptica enriquecida con textura que se desliza

Arrastrar y deslizar

Figura 5: Arrastrar y deslizar

Caso de uso 1: Textura deslizante

Si un efecto táctil se repite mientras el dedo se desliza sobre una superficie táctil (para como arrastrar, deslizar, explorar la superficie con textura táctil fantasma). los efectos táctiles repetidos son preferiblemente nítidos y sutiles.

Si el efecto individual es animado en lugar de nítido, los intervalos entre es probable que las repeticiones se eliminen. El resultado es un zumbido extenso, en lugar que múltiples indicadores discretos.

Si la amplitud no es lo suficientemente sutil, entonces la energía táctil percibida se acumula gracias a la repetición, lo que da como resultado una tecnología háptica abrumadora al final de la repetición.

Implementa una textura táctil de superficie simple para los gestos de deslizamiento y arrastre

Usa CLOCK_TICK y TEXT_HANDLE_MOVE en HapticFeedbackConstants Estas constantes predefinen características de repetición y amplitud.

Crea tu propio efecto

Para crear tu propio efecto, compone un diseño uniendo secuencias de PRIMITIVE_CLICK y PRIMITIVE_TICK en VibrationEffect.Composition Puedes ajustar las características de la escala de repetición y amplitud usando addPrimitive(int primitiveID, float scale, int delay). La asistencia depende de el CAP_COMPOSE_EFFECTS la capacidad de la Interfaz de la HAL del vibrador:

Caso de uso 2: Vibración larga con efecto de entrada lenta

La vibración larga es una vibración de amplitud suave que pasa de 0 a en la amplitud objetivo. La vibración larga puede generar un enfoque de atención la tecnología táctil. Sin embargo, una vibración larga y repentina puede asustar a los usuarios en un silencioso y, a menudo, produce zumbidos audibles. Para generar una una agradable vibración larga, aplica el efecto de entrada lenta al comienzo de la vibración. Esto produce una transición de amplitud suave que se suma a la en la amplitud objetivo.

Cómo aplicar el efecto de entrada lenta

  1. Comprueba las capacidades del hardware del control de amplitud con android.os.Vibrator.hasAmplitudeControl()

    • El resultado debe ser true para producir un efecto de entrada lenta de una amplitud variable.
  2. Usa VibrationEffect.createWaveform(timings[], amplitudes[], int repeat)

  3. Ajusta la serie de timings[] y amplitudes[] para generar la de entrada lenta, como se muestra en la Figura 6.

Vibración larga

Figura 6: Curva de entrada lenta de vibración larga

Caso de uso 3: Tecnología táctil con acoplamiento de audio

La tecnología táctil vinculada con audio son patrones táctiles junto con el ritmo del audio para llamar la atención del usuario.

Tecnología táctil con acoplamiento de audio: Beneficios

Para implementar tecnología háptica vinculada con audio, combina una tecnología táctil clara con vibraciones largas. Las sensaciones táctiles fuertes pero cortas de la tecnología táctil clara brindan una experiencia patrones rítmicos. Cuando se combina con los altos niveles de estímulos que la vibración, lo que hace un gran trabajo para captar la atención del usuario.

Es importante tener en cuenta los patrones rítmicos de las sensaciones. Si no tiene sentido de ritmo, el usuario percibe las sensaciones táctiles como un zumbido aleatorio y tiende a para ignorarlos.

Pareja de audio

Figura 7: Ejemplo de tecnología táctil de pareja de audio

Sugerencias para la implementación de tecnología háptica vinculada con audio

La implementación de tecnología táctil con acoplamiento de audio requiere una comprensión básica del contenido reproducción de audio y canales táctiles. Ten en cuenta lo siguiente.

  • Usa la MediaPlayer. o SoundPool .

    • Activos en formato OGG con una clave de metadatos especial (ANDROID_HAPTIC seguido de una serie de canales táctiles) indican la la presencia de datos táctiles y la reproducción con MediaPlayer y SoundPool
  • Indica la compatibilidad con la tecnología táctil y la reproducción de audio en audio_policy_configuration.xml

    • Cómo usar un perfil de salida con un canal táctil AUDIO_CHANNEL_OUT_HAPTIC_A|B
    • Para una transmisión de salida con canales táctiles, recuerda que la tecnología táctil los canales se presentan como canales adicionales en los datos.

    Ejemplo

    Si la máscara del canal de la transmisión de salida se ve de la siguiente manera:

    AUDIO_CHANNEL_OUT_STEREO_HAPTIC_A

    Luego, cada muestra debería verse de la siguiente manera:

    AUDIO_LEFT_CHANNEL,AUDIO_RIGHT_CHANNEL,HAPTIC_CHANNEL_A

  • Cambiar AudioAttributes.Builder( ).setHapticChannelsMuted(boolean muted) a false para reproducir el canal táctil.

    • De forma predeterminada, los canales táctiles están silenciados (true).
    • Los casos de uso incluyen tonos y sonidos de IU con sonido la tecnología háptica y la retroalimentación.
  • La HAL de vibración debe implementar la compatibilidad con el control externo.

Tecnología táctil con acoplamiento de audio

Figura 8: Cómo implementar tecnología táctil con acoplamiento de audio

Tecnología háptica de audio: generador háptico

HapticGenerator es un efecto de audio que se introdujo en Android 12 y que pueden generar datos táctiles de un canal de audio y reproducirlo en tiempo real como tecnología táctil vinculada con audio. El efecto se aplica a AudioTrack. como se describe en la Figura 9.

Arquitectura del generador háptico

Figura 9: Arquitectura del generador háptico

Para asegurarte de que tu algoritmo de generación táctil genere tecnología háptica de alta calidad, ajustar el algoritmo de generación al motor vibrador del dispositivo ajustando la parámetros que configuran la cadena de filtros que aplica a las formas de onda de audio. En esta sección, se describen estos parámetros en detalle y se explica cómo ajustarlos según las especificaciones de hardware.

  1. Frecuencia resonante para el filtro de paso de banda

    La frecuencia resonante del vibrador es la frecuencia con la que un accionador táctil tiene la salida máxima. Este parámetro ajusta un antirresonador a parcialmente acoplar la función de transferencia de respuesta para obtener un ancho de banda más amplio. El framework de Android vincula automáticamente este valor al resultado de la Método de HAL del vibrador IVibrator.getResonantFrequency

    El valor predeterminado para este parámetro es 150 Hz. Esto se puede modificar aquí.

  2. Potencia de normalización para envolvente lenta

    Este parámetro determina el exponente en la normalización parcial (control automático de ganancia). Su valor predeterminado es -0.8, lo que significa que Con este paso de control de ganancia, se quita el 80% de la variación del rango dinámico. Esto se puede modificar en el código aquí.

  3. Factor Q para el filtro de parada de banda

    El factor de calidad del vibrador (factor Q) se determina a través de dos parámetros:

    • El Q cero, el factor de calidad de los ceros en el filtro de parada de banda que cancela parcialmente la resonancia.

    • El Pole Q, el factor de calidad de los polos en el filtro de tope de banda.

    La proporción de esos dos valores limita la supresión de la resonancia para para aumentar las frecuencias más bajas y ampliar la respuesta del algoritmo. Por ejemplo: los valores predeterminados de 8 para el Q de cero y 4 para el Q de pola producirán una proporción de 2, que limita la supresión de resonancia en un factor de 2 (6 dB). El framework de Android vincula ambos valores a la salida de la HAL del vibrador. método IVibrator.getQFactor.

    Si los valores predeterminados no tienen en cuenta la amortiguamiento de la potencia del motor en tu dispositivo, te recomendamos modificar ambos valores al mismo tiempo aumentando o disminuyendo ambos. La proporción entre cero y un polo Q debe ser mayor que 1. Esto se puede modificar en el código aquí.

  4. Frecuencia de la esquina para distorsión

    La frecuencia de esquina se aplica con un filtro de paso bajo que suprime las vibraciones de bajo nivel y mejoran los niveles más altos con una distorsión cúbica. El valor predeterminado es 300 Hz. Esto se puede modificar en el código aquí.

  5. Ganancia de entrada y umbral cúbico para la distorsión

    Estos parámetros son utilizados por un filtro de distorsión no lineal aplicado al forma de onda de entrada que disminuye la amplitud y aumenta los de mayor frecuencia.

    • El valor predeterminado para el factor de ganancia de entrada es 0.3.
    • El valor predeterminado para el umbral cubo es 0.1.

    Te recomendamos modificar ambos valores a la vez. Puedes encontrarlos en el código aquí.

    Para obtener más información sobre la función que aplica este filtro, consulta la de implementación disponible aquí. Para obtener más información sobre cómo estos dos parámetros influyen en el resultado, recomendamos trazar la frecuencia de respuestas de los filtros y observar cómo la frecuencia de las respuestas cambian con diferentes valores de los parámetros.

  6. Ganancia de salida para distorsión

    Este parámetro controla la amplitud final de la vibración. Es una ganancia final se aplican después de un limitador suave que limita las amplitudes de la vibración a menos que 1. Su valor predeterminado es 1.5 y se puede modificar en el código. aquí. Si la vibración es demasiado sutil, aumenta el valor. Si puedes escuchar con el hardware del accionador, disminuir el valor.