Le costanti e le primitive aptiche sono definite dall'HAL del vibratore e mappate dal framework Android alle API pubbliche. Esegui questi controlli per determinare se il tuo dispositivo soddisfa i requisiti minimi per implementare la tecnologia aptica:
Figura 2. Implementazione degli effetti
Figura 3. Implementare i primitivi
Implementare costanti
Le costanti aptiche in VibrationEffect possono essere utilizzate dagli sviluppatori tramite VibrationEffect.createPredefined(). Controlla lo stato di implementazione delle seguenti costanti aptiche.
Costanti aptiche | Località e riepiloghi |
---|---|
EFFECT_TICK , EFFECT_CLICK ,
EFFECT_HEAVY_CLICK ,
EFFECT_DOUBLE_CLICK |
VibrationEffect
classeLe costanti aptiche in VibrationEffect non includono
alcun concetto di eventi di input e non hanno elementi dell'interfaccia utente. Le costanti includono
invece la nozione di livelli di energia, come EFFECT_CLICK e
EFFECT_HEAVY_CLICK , che vengono chiamati da
createPredefined() . |
Le vibrazioni alternative descritte di seguito vengono eseguite su dispositivi che non
implementano le costanti VibrationEffect
. Ti consigliamo di aggiornare queste configurazioni per ottenere prestazioni ottimali su questi dispositivi.
EFFECT_CLICK
Vibrazione della forma d'onda creata con
VibrationEffect.createWaveform
e le tempistiche configurate inframeworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern
.EFFECT_HEAVY_CLICK
Vibrazione della forma d'onda creata con
VibrationEffect.createWaveform
e le tempistiche configurate inframeworks/base/core/res/res/values/config.xml##config_longPressVibePattern
.EFFECT_DOUBLE_CLICK
Vibrazione della forma d'onda creata con
VibrationEffect.createWaveform
e le tempistiche (0, 30, 100, 30).EFFECT_TICK
Vibrazione della forma d'onda creata con
VibrationEffect.createWaveform
e le tempistiche configurate inframeworks/base/core/res/res/values/config.xml##config_clockTickVibePattern
.
Figura 4. Implementare le costanti di feedback
Le costanti aptiche in HapticFeedbackConstants possono essere utilizzate dagli sviluppatori tramite View.performHapticFeedback(). Controlla lo stato delle seguenti costanti di feedback pubblico.
Costanti aptiche | Località e riepiloghi |
---|---|
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 |
Classe HapticFeedbackConstants Costanti aptiche in HapticFeedbackConstants assist input events
con determinati elementi UI, come KEYBOARD_PRESS e
KEYBOARD_RELEASE , chiamati da
performHapticFeedback() . |
Implementare i primitivi
Le primitive aptiche in
VibrationEffect.Composition
hanno un'intensità scalabile che gli sviluppatori possono utilizzare tramite
addPrimitive(int primitiveId, float scale, int delay)
.
Le primitive possono essere suddivise in due categorie:
Primitive brevi:primitive di breve durata, in genere inferiore a 20 ms. Si tratta di
CLICK
,TICK
eLOW_TICK
.Primitive di cinguettio:primitive con ampiezza e frequenza variabili, di solito con una durata maggiore rispetto alle primitive brevi. Questi sono
SLOW_RISE
,QUICK_RISE
,QUCK_FALL
,THUD
eSPIN
.
Primitive degli Short
Le primitive brevi possono essere descritte dal profilo di accelerazione dell'output del motore del vibratore. La frequenza assoluta utilizzata varia per ogni primitiva, a seconda della frequenza di risonanza dell'attuatore. Per ulteriori informazioni sulla configurazione dell'hardware e sugli strumenti per misurare l'output, consulta Configurare l'apparecchiatura di test.
Una metrica di qualità preziosa per le vibrazioni brevi è il rapporto tra impulsi e squilli (PRR), mostrato nella Figura 5. Il PRR è definito come il rapporto tra l'impulso principale, definito dal segnale all'interno della finestra di durata in cui l'ampiezza diminuisce fino al 10% dell'ampiezza di picco, e l'impulso di squillo, definito dal segnale in cui l'ampiezza diminuisce dal 10% dell'ampiezza di picco a meno dell'1% dell'ampiezza di picco. La formula per il PRR è:
Per ulteriori informazioni sul PRR, vedi Analizzare la forma d'onda e, per ulteriori informazioni sull'analisi e il confronto dei risultati, vedi Confrontare i risultati utilizzando la mappa del rendimento.
Figura 5. Definizione del rapporto tra impulsi e squilli
Applica primitive brevi come feedback di input dell'utente o riprodotte in composizioni più lunghe per creare texture morbide. Ciò significa che di solito vengono attivati di frequente e riprodotti in rapida successione. L'intensità percepita di una singola primitiva breve può aumentare l'intensità dell'effetto più grande. Per questo motivo, calibra una singola tacca o una tacca primitiva bassa con una composizione più grande, ad esempio 100 tacche consecutive.
Primitiva di clic
L'effetto di clic è un effetto forte e nitido che di solito opera vicino alla frequenza di risonanza di un dispositivo per raggiungere la massima potenza in un breve periodo di tempo. È più forte e profondo degli altri primitivi, con un'intensità massima.
Se disponibile, utilizza la sovraalimentazione del motore all'inizio e la frenata attiva alla fine per ottenere un breve tempo di salita e discesa del motore. Per alcuni motori, l'utilizzo di un'onda quadra anziché sinusoidale può consentire un'accelerazione più rapida. La figura 6 mostra un esempio di profilo di accelerazione dell'output per il componente clic:
Figura 6. Esempio di profilo di accelerazione dell'output per la primitiva di clic
Parametro | Linea guida |
---|---|
Durata |
Target: 12 ms Limite: < 30 ms |
Accelerazione della potenza di picco |
Target: 2 G Limite: > 1 G |
Frequenza | All'incirca alla frequenza di risonanza |
Primitiva di segno di spunta (segno di spunta leggero)
Il tick è un effetto breve e netto che di solito opera in una gamma di frequenza più elevata. Questa primitiva può anche essere descritta come un clic di media intensità a una frequenza più elevata con una coda breve. Le stesse indicazioni si applicano per ottenere un tempo di salita breve utilizzando l'overdrive del motore o un'onda quadra per l'inizio iniziale e la frenata attiva all'offset. La Figura 7 mostra un esempio di output del profilo di accelerazione per la primitiva di segno di spunta:
Figura 7. Esempio di profilo di accelerazione dell'output per la primitiva di segno di spunta
Parametro | Linea guida |
---|---|
Durata |
Target: 5 ms Limite: < 20 ms |
Accelerazione della potenza di picco |
Target: metà di Limite: tra 0,5 G e 1 G |
Frequenza |
Target: 2x frequenza di risonanza Limite: < 500 Hz |
Primitiva di segno di spunta basso
Il primitivo di vibrazione leggera è una versione più morbida e debole di una vibrazione leggera, che opera a una gamma di frequenza inferiore per dare più corpo all'effetto. Questa primitiva può anche essere descritta come un clic di media intensità a una frequenza inferiore, destinato a essere utilizzato ripetutamente per un feedback dinamico. Le stesse indicazioni valgono per ottenere un tempo di salita breve utilizzando la sovraeccitazione del motore o un'onda quadra per l'inizio iniziale. La Figura 8 mostra un esempio di profilo di accelerazione dell'output per la primitiva low tick:
Figura 8. Esempio di profilo di accelerazione dell'output per una primitiva a bassa risoluzione
Parametro | Linea guida |
---|---|
Durata |
Target: 12 ms Limite: < 30 ms |
Accelerazione della potenza di picco |
Target: 1/4 di Limite: tra 0,2 G e 0,5 G |
Frequenza |
Target: 2/3 della frequenza di risonanza Limite: < 100 Hz |
Primitive di Chirp
Le primitive di cinguettio possono essere descritte dai segnali di input per il livello di tensione e la frequenza di vibrazione. L'accelerazione che il motore è in grado di produrre a diverse gamme di frequenza varia a seconda della curva di risposta in frequenza dell'attuatore. Gli intervalli di frequenza e i livelli di tensione devono essere regolati in base al dispositivo.
Primitiva di aumento lento
L'aumento lento è una scansione lenta dell'ampiezza e della frequenza verso l'alto con un inizio graduale e un'intensità di vibrazione in costante aumento durante la scansione. Può essere implementato con una scansione coerente sia dell'ampiezza che della frequenza, utilizzando una gamma di frequenza inferiore che funziona al di fuori della risonanza. La Figura 9 mostra i parametri di input e un profilo di accelerazione dell'output di esempio per questa implementazione. La linea rossa corrisponde alle etichette di ampiezza a sinistra e rappresenta la variazione dell'ampiezza della vibrazione nel tempo. La linea blu corrisponde alle etichette di frequenza a destra e rappresenta la variazione della frequenza di vibrazione nel tempo.
Figura 9. Parametri di input ed esempio di profilo di accelerazione dell'output per la primitiva di salita lenta
Se la risposta in frequenza del motore è limitata (non abbastanza forte al di fuori della sua frequenza di risonanza), un'implementazione alternativa è una scansione sinusoidale da 1/2x a 1x la frequenza di risonanza. La risonanza del motore contribuisce a raggiungere il picco del segnale alla fine.
Parametro | Linea guida |
---|---|
Durata |
Target: 500 ms Tolleranza: 20 ms |
Accelerazione della potenza di picco |
Target: 0,5 G Limite: tra 0,5 G e 1 G |
Frequenza |
Target: da 1/2 a 2/3 della frequenza di risonanza Alternativa: da 1/2 alla frequenza di risonanza |
Primitiva di aumento rapido
L'aumento rapido è una scansione più veloce dell'ampiezza e della frequenza verso l'alto con un inizio graduale e un'intensità di vibrazione in costante aumento durante la scansione. I target di accelerazione e frequenza di vibrazione dell'output devono essere gli stessi della primitiva di aumento lento, ottenuti in un periodo di tempo più breve. La Figura 10 mostra i parametri di input della vibrazione e un profilo di accelerazione di output di esempio per la primitiva di aumento lento. La linea rossa corrisponde alle etichette di ampiezza a sinistra e rappresenta la variazione dell'ampiezza della vibrazione nel tempo. La linea blu corrisponde alle etichette di frequenza a destra e rappresenta la variazione della frequenza di vibrazione nel tempo.
Figura 10. Parametri di input ed esempio di profilo di accelerazione dell'output per la primitiva di salita rapida
Parametro | Linea guida |
---|---|
Durata |
Target: 150 ms Tolleranza: 20 ms |
Accelerazione della potenza di picco |
Target: uguale a Limite: uguale a |
Frequenza |
Target: uguale a Alternativa: uguale a |
Primitiva di caduta rapida
La caduta rapida è una variazione rapida di ampiezza e frequenza verso il basso con un inizio morbido. Puoi utilizzare una frequenza più elevata come punto di partenza mentre il motore aumenta gradualmente la velocità per raggiungere l'accelerazione di picco. La frequenza deve diminuire costantemente durante la scansione, anche durante il tempo di salita. La Figura 11 mostra i parametri di input e un profilo di accelerazione dell'output di esempio per questa implementazione. La linea rossa corrisponde alle etichette di ampiezza a sinistra e rappresenta la variazione dell'ampiezza della vibrazione nel tempo. La linea blu corrisponde alle etichette di frequenza a destra e rappresenta la variazione della frequenza di vibrazione nel tempo.
Figura 11. Parametri di input ed esempio di profilo di accelerazione dell'output per la primitiva di caduta rapida
Parametro | Linea guida |
---|---|
Durata |
Target: 100 ms Tolleranza: 20 ms |
Accelerazione della potenza di picco |
Target: 1 G Limite: tra 0,5 G e 2 G |
Frequenza |
Target: da 2 a 1 volta la frequenza di risonanza |
Primitiva di rumore sordo
Il suono sordo è un effetto percussivo, basso e cupo che simula la sensazione fisica di bussare su legno cavo. Questa primitiva opera in un intervallo di bassa frequenza, simile alla primitiva low tick, per dare più corpo all'effetto. Puoi implementare la primitiva del tonfo come sweep verso il basso di ampiezza e frequenza in un intervallo di frequenza inferiore (preferibilmente inferiore a 100 Hz). La Figura 12 mostra i parametri di input e un profilo di accelerazione dell'output di esempio per questa implementazione. La linea rossa corrisponde alle etichette di ampiezza a sinistra e rappresenta la variazione dell'ampiezza della vibrazione nel tempo. La linea blu corrisponde alle etichette di frequenza a destra e rappresenta la variazione della frequenza di vibrazione nel tempo.
Figura 12. Parametri di input ed esempio di profilo di accelerazione dell'output per la primitiva Thud
Se la risposta in frequenza del motore è limitata, un'implementazione alternativa consiste nell'iniziare con un segnale di pilotaggio a piena intensità alla frequenza di risonanza e scendere alla frequenza più bassa possibile che possa ancora essere percepita. Questo approccio potrebbe richiedere un aumento dell'intensità del segnale di azionamento alla frequenza più bassa per percepire la vibrazione.
Parametro | Linea guida |
---|---|
Durata |
Target: 300 ms Tolleranza: 20 ms |
Accelerazione della potenza di picco |
Target: 0,25 G Limite: tra 0,2 G e 0,5 G |
Frequenza |
Target: da 1/2 a 1/3 della frequenza di risonanza Alternativa: da 1x a 1/2 della frequenza di risonanza |
Primitiva di rotazione
La rotazione simula un movimento rotatorio rapido verso l'alto e verso il basso con una leggera accentuazione al centro. La rotazione può essere implementata variando l'ampiezza e la frequenza in modo indipendente, in direzioni opposte e seguita dal movimento inverso. È importante utilizzare una gamma di frequenza inferiore (preferibilmente inferiore a 100 Hz). La Figura 13 mostra i parametri di input e un profilo di accelerazione di esempio per questa implementazione. La linea rossa corrisponde alle etichette di ampiezza a sinistra e rappresenta la variazione dell'ampiezza della vibrazione nel tempo. La linea blu corrisponde alle etichette di frequenza a destra e rappresenta la variazione della frequenza di vibrazione nel tempo.
Consigliamo di chiamare la primitiva di rotazione due volte di seguito o tre volte nelle composizioni per ottenere una sensazione di rotazione e instabilità.
Se la risposta in frequenza del motore è limitata, un'implementazione alternativa consiste nell'eseguire una scansione sinusoidale rapida da 1/2x a 1x la frequenza di risonanza e viceversa. La risonanza del motore dà automaticamente un accento al segnale al centro.
Figura 13. Parametri di input ed esempio di profilo di accelerazione dell'output per la primitiva di rotazione
Parametro | Linea guida |
---|---|
Durata |
Target: 150 ms Tolleranza: 20 ms |
Accelerazione della potenza di picco |
Target: 0,5 G Limite: tra 0,25 G e 0,75 G |
Frequenza |
Target: da 2/3 a 1/3, poi di nuovo a 1/2 della frequenza di risonanza Alternativa: da 2/3 a 1x, poi di nuovo a 1/2 della frequenza di risonanza |