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.
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 |
|
Antes de 2016 |
|
2017 (Android 8) | |
|
2020 (Android 11) | |
Vista de android |
|
Antes de 2016 |
android.os.vibrador |
|
Antes de 2016 |
|
2017 (Android 8) | |
|
2020 (Android 11) | |
android.os.VibrationEffect |
|
2017 (Android 8) |
|
2019 (Android 10) | |
android.os.VibrationEffect.Composición |
|
2020 (Android 11) |
android.media.AudioAttributes.Builder |
|
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.
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.
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.
Figura 4: Tecnología háptica enriquecida con textura que se desliza
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
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.
- El resultado debe ser
Usa
VibrationEffect
.createWaveform(timings[], amplitudes[], int repeat)
Ajusta la serie de
timings[]
yamplitudes[]
para generar la de entrada lenta, como se muestra en la Figura 6.
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.
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
. oSoundPool
.- 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 conMediaPlayer
ySoundPool
- Activos en formato OGG con una clave de metadatos especial
(
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
- Cómo usar un perfil de salida con un canal táctil
Cambiar
AudioAttributes.Builder( ).setHapticChannelsMuted(boolean muted)
afalse
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.
- De forma predeterminada, los canales táctiles están silenciados (
La HAL de vibración debe implementar la compatibilidad con el control externo.
- Para las implementaciones de HIDL, usa
setExternalControl(bool enabled) generates (Status status)
- Para las implementaciones del AIDL, usa
void setExternalControl(in boolean enabled)
- Para las implementaciones de HIDL, usa
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.
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.
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í.
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í.
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í.
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í.
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.
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.