Implementa la tecnologia aptica

I produttori di dispositivi sono generalmente considerati i proprietari delle risorse private create per ogni dispositivo. Di conseguenza, le loro attività di ingegneria sono spesso incentrate su una base per dispositivo; viene dedicato poco o nessun impegno alla coerenza degli altri dispositivi dell'ecosistema.

Al contrario, gli sviluppatori si impegnano a creare app che funzionino su tutti gli smartphone Android dell'ecosistema, indipendentemente dalle specifiche tecniche di ciascun dispositivo. Questa differenza di approccio può causare un problema di frammentazione, ad esempio le funzionalità hardware di alcuni smartphone non corrispondono alle aspettative degli sviluppatori di app. Pertanto, se le API di aptica funzionano su alcuni smartphone Android, ma non su altri, il risultato è un ecosistema incoerente. Ecco perché la configurazione hardware svolge un ruolo fondamentale per garantire che i produttori possano implementare le API Android per l'aptica su ogni dispositivo.

Questa pagina fornisce un elenco di controllo dettagliato per configurare la conformità dell'hardware per un uso ottimale delle API Android haptics.

La figura seguente illustra la creazione di una conoscenza comune tra produttori di dispositivi e sviluppatori, un passaggio fondamentale per la creazione di un ecosistema coerente:

Diagramma dei casi d'uso della tecnologia aptica per sviluppatori di app e produttori di dispositivi

Figura 1. Condivisione delle conoscenze tra produttori di dispositivi e sviluppatori

Elenco di controllo per l'implementazione dell'aptica

  1. Implementare costanti

    • Elenco di costanti per implementare la tecnologia aptica.
  2. Implementa le primitive

    • Guida all'implementazione delle primitive di composizione HAL.
  3. Mappa le costanti tra HAL e API

  4. Valutare l'hardware

    • Istruzioni sugli effetti aptico target. Segui queste istruzioni per eseguire rapide verifiche sull'hardware.

Di seguito esamineremo ciascuno di questi passaggi in maggiore dettaglio.

Passaggio 1: implementa le costanti

Esegui questi controlli per determinare se il tuo dispositivo soddisfa i requisiti minimi per implementare la tecnologia aptica:

Diagramma di flusso del processo di implementazione della tecnologia aptica

Figura 2. Implementare gli effetti

Diagramma di flusso dei passaggi per l'implementazione delle primitive

Figura 3. Implementazione di primitive

Controlla lo stato di implementazione delle seguenti costanti di aptica.

Costanti aptica Sedi e riepiloghi
EFFECT_TICK, EFFECT_CLICK, EFFECT_HEAVY_CLICK, EFFECT_DOUBLE_CLICK La VibrationEffect class
costanti di aptica in VibrationEffect non includono alcuna nozione di eventi di input e non hanno elementi dell'interfaccia utente. Le costanti includono invece la nozione di livelli energetici, come EFFECT_CLICK e EFFECT_HEAVY_CLICK, che vengono chiamati da createPredefined().

Le vibrazioni alternative descritte di seguito vengono eseguite sui dispositivi che non implementano le costanti VibrationEffect. Ti consigliamo di aggiornare queste configurazioni per ottenere il massimo rendimento su questi dispositivi.

  • EFFECT_CLICK

    Vibrazione della forma d'onda creata con VibrationEffect.createWaveform e i tempi configurati in frameworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern.

  • EFFECT_HEAVY_CLICK

    Vibrazione della forma d'onda creata con VibrationEffect.createWaveform e i tempi configurati in frameworks/base/core/res/res/values/config.xml##config_longPressVibePattern.

    • EFFECT_DOUBLE_CLICK

    Vibrazione con 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 i tempi configurati in frameworks/base/core/res/res/values/config.xml##config_clockTickVibePattern.

Diagramma di flusso dei passaggi per testare il feedback aptico

Figura 4. Implementazione delle costanti di feedback

Controlla lo stato delle seguenti costanti di feedback pubblico.

Costanti aptica Sedi 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 La classe HapticFeedbackConstants
Le costanti aptica in HapticFeedbackConstants assistono gli eventi di input con determinati elementi dell'interfaccia utente, come KEYBOARD_PRESS e KEYBOARD_RELEASE, che vengono chiamati da performHapticFeedback().

Passaggio 2: implementa le primitive

Le primitive aptica 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:

  • Primitivi brevi:primitivi con una durata breve, in genere inferiore a 20 ms. Si tratta di CLICK, TICK e LOW_TICK.

  • Primitivi chirp:primitivi con ampiezza e frequenza variabili, solitamente con una durata maggiore rispetto ai primitivi brevi. Si tratta di SLOW_RISE, QUICK_RISE, QUCK_FALL, THUD e SPIN.

Elementi primitivi di Short

Le primitive brevi possono essere descritte dal profilo di accelerazione dell'uscita del motore del vibratore. La frequenza assoluta utilizzata varia per ogni elemento primitivo, a seconda della frequenza di risonanza dell'attuatore. Per ulteriori informazioni sulla configurazione dell'hardware e sugli strumenti per la misurazione dell'output, consulta Configurare l'apparecchiatura di test.

Una metrica di qualità utile per le vibrazioni brevi è il rapporto tra impulsi e anelli (PRR), riportato 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 al 10% dell'ampiezza di picco, e l'impulso ad anello, definito dal segnale in cui l'ampiezza diminuisce dal 10% dell'ampiezza di picco a meno dell'1% dell'ampiezza di picco. Per ulteriori informazioni sul PRR, consulta Analizzare l'onda sincronata e per ulteriori informazioni su come analizzare e confrontare i risultati, consulta Confrontare i risultati utilizzando la mappa del rendimento.

Rapporto tra battito e anello

Figura 5. Definizione del rapporto tra impulsi e anelli

Applica primitive brevi come feedback sull'input dell'utente o riproducile in composizioni più lunghe per creare texture morbide. Ciò significa che in genere vengono attivati frequentemente 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 un singolo tick o una primitiva con pochi tick con una composizione più grande, ad esempio 100 tick consecutivi.

Primitiva di clic

La primitiva click è un effetto forte e nitido che di solito opera vicino alla frequenza di risonanza di un dispositivo per raggiungere l'uscita massima in breve tempo. È più forte e profondo rispetto alle altre primitive e funziona a massima intensità.

Se disponibile, utilizza l'overdrive del motore all'inizio e la frenata attiva alla fine per ottenere un tempo di salita e discesa del motore breve. Per alcuni motori, l'utilizzo di un'onda quadra anziché sinusoidale può consentire un'accelerazione più rapida. La figura 6 mostra un profilo di accelerazione dell'output di esempio per la primitiva clic:

Fai clic sul profilo di accelerazione dell'output primitivo

Figura 6. Esempio di profilo di accelerazione dell'output per la primitiva di clic

Parametro Linea guida
Durata

Obiettivo: 12 ms

Limite: < 30 ms

Accelerazione massima in uscita

Target: 2 G

Limite: > 1 G

Frequenza Approssimativamente alla frequenza di risonanza

Primitive di spunta (spunta leggera)

L'elemento tick è un effetto breve e netto che in genere opera a una gamma di frequenza più elevata. Questa primitiva può essere descritta anche come un clic di media intensità a una frequenza più elevata con una coda corta. Le stesse indicazioni valgono 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 profilo di accelerazione dell'output per la primitiva tick:

Profilo di accelerazione dell&#39;output della primitiva di tick

Figura 7. Esempio di profilo di accelerazione dell'output per la primitiva tick

Parametro Linea guida
Durata

Target: 5 ms

Limite: < 20 ms

Accelerazione massima in uscita

Target: metà di CLICK, 1 G

Limite: tra 0,5 G e 1 G

Frequenza

Target: 2 volte la frequenza di risonanza

Limite: < 500 Hz

Primitiva di tick basso

L'elemento di base tick basso è una versione più morbida e debole di un tick chiaro, che opera a un intervallo di frequenza inferiore per dare più corpo all'effetto. Questa primitiva può essere anche descritta come un clic di intensità media a una frequenza inferiore, destinato a essere utilizzato ripetutamente per il feedback dinamico. Le stesse indicazioni valgono per ottenere un tempo di salita breve utilizzando l'overdrive 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:

Profilo di accelerazione dell&#39;output delle primitive con tick basso

Figura 8. Esempio di profilo di accelerazione in uscita per primitive con tick basso

Parametro Linea guida
Durata

Obiettivo: 12 ms

Limite: < 30 ms

Accelerazione massima in uscita

Target: 1/4 di TICK, 0,25 g

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 Chirp 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 in diversi intervalli di frequenza varia in base alla curva di risposta in frequenza dell'attuatore. Gli intervalli di frequenza e i livelli di tensione devono essere regolati su ciascun dispositivo.

Primitive aumento lento

L'aumento lento è un'ampiezza e una frequenza lenta verso l'alto con un inizio graduale e un'intensità di vibrazione in aumento costante durante la scansione. Può essere implementato con una scansione coerente sia dell'ampiezza che della frequenza, utilizzando un intervallo di frequenza inferiore che opera al di fuori della risonanza. La Figura 9 mostra i parametri di input e un esempio di profilo di accelerazione dell'output 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 sulla destra e rappresenta la variazione della frequenza di vibrazione nel tempo.

Parametri di input e profilo di accelerazione in uscita per la primitiva di aumento lento

Figura 9. Parametri di input ed esempio di profilo di accelerazione in uscita per la primitiva di salita lenta

Se la risposta in frequenza del motore è limitata (non è sufficientemente lontana dalla frequenza di risonanza), un'implementazione alternativa è un sweep sinusoidale da 1/2x a 1x la frequenza di risonanza. La risonanza del motore contribuisce al raggiungimento del picco del segnale alla fine.

Parametro Linea guida
Durata

Target: 500 ms

Tolleranza: 20 ms

Accelerazione massima in uscita

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: 1/2 alla frequenza di risonanza

Primitive di aumento rapido

L'aumento rapido è uno sweep di frequenza e ampiezza verso l'alto più veloce con inizio graduale e un'intensità di vibrazione in aumento costante durante lo sweep. I target di frequenza di vibrazione e accelerazione in uscita devono essere gli stessi della primitiva di aumento lento, raggiunti in una durata più breve. La Figura 10 mostra i parametri di input della vibrazione e un esempio di profilo di accelerazione in uscita 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 sulla destra e rappresenta la variazione della frequenza di vibrazione nel tempo.

Parametri di input e profilo di accelerazione in uscita per la primitiva di aumento rapido

Figura 10. Parametri di input ed esempio di profilo di accelerazione in uscita per la primitiva di aumento rapido

Parametro Linea guida
Durata

Target: 150 ms

Tolleranza: 20 ms

Accelerazione massima in uscita

Target: uguale a SLOW_RISE

Limite: come SLOW_RISE

Frequenza

Target: uguale a SLOW_RISE

Alternativa: uguale a SLOW_RISE

Primitiva caduta rapida

La caduta rapida è una rapida scansione verso il basso di ampiezza e frequenza con un inizio graduale. Puoi utilizzare una frequenza più elevata come punto di partenza mentre il motore accelera per raggiungere l'accelerazione massima in uscita. La frequenza deve diminuire in modo costante durante la scansione, anche durante il tempo di salita. La Figura 11 mostra i parametri di input e un esempio di profilo di accelerazione dell'output 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 sulla destra e rappresenta la variazione della frequenza di vibrazione nel tempo.

Parametri di input e profilo di accelerazione in uscita per la primitiva caduta rapida

Figura 11. Parametri di input ed esempio di profilo di accelerazione in uscita per la primitiva caduta rapida

Parametro Linea guida
Durata

Target: 100 ms

Tolleranza: 20 ms

Accelerazione massima in uscita

Target: 1 G

Limite: tra 0,5 G e 2 G

Frequenza

Target: da 2 a 1 volte la frequenza di risonanza

Primitiva Thud

Il thud è un effetto percussivo basso e sordo che simula la sensazione fisica di battere su legno cavo. Questa primitiva opera in un intervallo di frequenza basso, simile alla primitiva tick basso, per dare più corpo all'effetto. Puoi implementare l'elemento thud come sweep con diminuzione 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 esempio di profilo di accelerazione dell'output 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 sulla destra e rappresenta la variazione della frequenza di vibrazione nel tempo.

Parametri di input e profilo di accelerazione in uscita per la primitiva thud

Figura 12. Parametri di input ed esempio di profilo di accelerazione in uscita per la primitiva thud

Se la risposta in frequenza del motore è limitata, un'implementazione alternativa è iniziare con un segnale di azionamento a piena intensità alla frequenza di risonanza e scendere alla frequenza più bassa possibile che può essere ancora percepita. Questo approccio potrebbe richiedere un aumento dell'intensità del segnale di azionamento alla frequenza inferiore per sentire la vibrazione.

Parametro Linea guida
Durata

Target: 300 ms

Tolleranza: 20 ms

Accelerazione massima in uscita

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 1 a 1/2 della frequenza di risonanza

Primitiva di rotazione

La rotazione simula un momento di rotazione veloce verso l'alto e verso il basso con un leggero accento al centro. La rotazione può essere implementata eseguendo la scansione dell'ampiezza e della frequenza in modo indipendente, in direzioni opposte e seguita dal movimento opposto. È importante utilizzare una gamma di frequenza più bassa (preferibilmente inferiore a 100 Hz). La Figura 13 mostra i parametri di input e un esempio di profilo di accelerazione dell'output 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 sulla 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 nel eseguire un rapido sweep sinusoidale da 1/2x a 1x la frequenza di risonanza e viceversa. La risonanza del motore conferisce automaticamente al segnale un accento al centro.

Parametri di input e profilo di accelerazione in uscita per la primitiva rotazione

Figura 13. Parametri di input ed esempio di profilo di accelerazione in uscita per la primitiva di rotazione

Parametro Linea guida
Durata

Target: 150 ms

Tolleranza: 20 ms

Accelerazione massima in uscita

Target: 0,5 G

Limite: tra 0,25 G e 0,75 G

Frequenza

Target: da 2/3 a 1/3 e poi di nuovo a 1/2 della frequenza di risonanza

Alternativa: da 2/3 a 1x, quindi di nuovo a 1/2 della frequenza di risonanza

Passaggio 3: mappa le costanti tra HAL e API

Il passaggio 3 presenta le mappature consigliate tra le costanti HAL pubbliche e le costanti dell'API. Se l'hardware valutato nel passaggio 1 non implementa le costanti HAL, utilizza il passaggio 3 per aggiornare i pattern di riserva descritti nel passaggio 1 in modo da generare output simili. La mappatura è assistita da due diversi modelli predefiniti:

  • Modello discreto (semplice)

    • L'ampiezza è la variabile chiave di questo modello. Ogni entità nell'HAL rappresenta un'ampiezza aptica diversa.
    • Questo modello è un requisito minimo necessario per implementare l'esperienza utente di base con feedback aptico.
    • Un'esperienza tattile più avanzata richiede hardware e un modello avanzati (modello continuo).
  • Modello continuo (avanzato)

    • La trama e l'ampiezza sono le variabili chiave di questo modello. Ogni entità nell'HAL rappresenta diverse texture aptica. L'ampiezza di ogni entità HAL è controllata dal fattore di scala (S).
    • Questo modello richiede hardware avanzato. Se gli OEM vogliono utilizzare un'esperienza tattile avanzata con VibrationEffect.Composition (per un utilizzo ottimale delle API di aptica più recenti), è consigliabile implementare il proprio hardware utilizzando questo modello.

Modello discreto

È consigliabile mappare tutte le costanti pubbliche fornite nell'API con le costanti HAL appropriate. Per iniziare questa procedura, scopri quante forme d'onda aptica con ampiezza discreta può definire il dispositivo nell'HAL. Una domanda specifica strutturata attorno a questa nozione è la seguente: Quanti effetti haptici a singolo impulso con differenze di ampiezza percepibili dall'uomo possono essere definiti nel mio smartphone? La risposta a questa domanda determina la mappatura.

La definizione delle costanti HAL è un processo dipendente dall'hardware. Ad esempio, un smartphone di livello base potrebbe avere solo le funzionalità hardware per produrre una singola forma d'onda aptica. I dispositivi con componenti hardware più avanzati producono una gamma più ampia di livelli di ampiezza discreti e possono definire più forme d'onda aptica nell'HAL. La mappatura delle costanti HAL-API prende la costante HAL (utilizzando l'ampiezza media come linea di base), quindi organizza gli effetti più o meno intensi a partire da questa.

Diagramma dell&#39;intervallo costante HAL e delle amplitudini del feedback

Figura 14. Intervallo costante HAL per ampiezza

Quando è definito il numero di costanti HAL con ampiezza discreta, è il momento di mappare le costanti HAL e API in base al numero di costanti HAL. Questo processo di mappatura può suddividere una singola costante dell'API di impulso in fino a tre gruppi discreti di livelli di ampiezza. Il modo in cui le costanti dell'API sono segmentate si basa su principi UX per gli eventi di input associati. Per saperne di più, consulta Design UX per la tecnologia haptics.

Modello discreto per la mappatura delle costanti HAL-API

Figura 15. Mappatura delle costanti HAL-API: modello discreto

Se il tuo dispositivo supporta solo due costanti HAL con ampiezze discrete, valuta la possibilità di unire le costanti HAL di livello di ampiezza medio e alto. Un esempio di questa nozione in pratica è la mappatura di EFFECT_CLICK e EFFECT_HEAVY_CLICK alla stessa costante HAL, ovvero la costante HAL del livello di ampiezza medio. Se il dispositivo supporta solo una costante HAL con un'ampiezza discreta, valuta la possibilità di unire tutti e tre i livelli in uno.

Modello continuo

Il modello continuo con scalabilità dell'ampiezza può essere applicato per definire le costanti HAL. Un fattore di scala (S) può essere applicato alle costanti HAL (ad es. HAL_H0, HAL_H1) per produrre l'HAL scalato (HAL_H0 x S). In questo caso, l'HAL scalato viene mappato per definire le costanti API (HAL_H0 x S1 = H0S1 = EFFECT_TICK) come mostrato nella figura 16. Utilizzando la scalabilità dell'ampiezza del modello continuo, un dispositivo può memorizzare un numero ridotto di costanti HAL con texture distintive e aggiungere variazioni di ampiezza regolando il fattore di scala (S). I produttori di dispositivi possono definire il numero di costanti HAL in base al numero di texture aptica diverse che vogliono fornire.

Intervallo di costanti HAL per trama e
ampiezza

Figura 16. Anello costante HAL per trama (HAL_H0) e scala di ampiezza (S)

Modello continuo per la mappatura delle costanti HAL-API

Figura 17. Mappatura delle costanti HAL-API: modello continuo

Nel modello continuo, costanti HAL diverse rappresentano texture aptica diverse anziché ampiezze diverse; il fattore di scala (S) può configurare l'ampiezza. Tuttavia, poiché la percezione della trama (ad esempio la nitidezza) è correlata alla percezione della durata e dell'ampiezza, è consigliabile combinare la trama e il fattore di scala (nella procedura di progettazione della mappatura dell'API HAL).

La figura 18 illustra la mappatura delle costanti aumentando la variazione da un HAL a molte costanti dell'API con scalabilità dell'ampiezza.

Aumento della varianza
1

Variante crescente
2

Figura 18. Aumento della variazione con la scalabilità dell'ampiezza

Per tutte le costanti API scalabili, come PRIMITIVE_TICK e PRIMITIVE_CLICK in VibrationEffect.Composition, il livello di energia della costante API dipende dal parametro float scale quando la costante API viene dichiarata tramite addPrimitive(int primitiveID, float scale, int delay). PRIMITIVE_TICK e PRIMITIVE_CLICK possono essere progettati con una distinta distinzione utilizzando costanti HAL diverse. Questo approccio è consigliato se vuoi aggiungere variazioni alla texture.

Passaggio 4: valuta l'hardware

La valutazione dell'hardware prevede la definizione di tre effetti aptico, etichettati come Effetti 1, 2 e 3 per questa valutazione specifica.

Effetto 1: costanti di aptica brevi predefinite

La costante VibrationEffect.EFFECT_CLICK è l'effetto di base o il denominatore comune nella mappatura HAL-API fornita nel passaggio 2. È mappato con l'effetto più utilizzato, HapticFeedbackConstants.KEYBOARD_PRESS. La valutazione di questo effetto consente di determinare l'idoneità del dispositivo di destinazione per la tecnologia haptic chiara.

Effetto 2: breve effetto aptico personalizzato

La costante VibrationEffect.createOneShot(20,255) è per gli effetti aptico personalizzati. Per impulsi personalizzati brevi e singoli, 20 ms è la soglia massima consigliata per definire la durata. Un singolo impulso superiore a 20 ms non è consigliato perché viene percepito come una vibrazione pulsante.

Forma d&#39;onda di breve effetto haptico personalizzato

Figura 19. Breve effetto aptico personalizzato

Effetto 3: effetto aptico personalizzato lungo con variazione di ampiezza

La costante VibrationEffect.createWaveform(timings[], amplitudes[], int repeat) è per effetti personalizzati lunghi con variazione di ampiezza. La capacità di produrre ampiezze diverse per gli effetti aptico personalizzati è uno degli indicatori per valutare le funzionalità del dispositivo per la tecnologia aptica avanzata. I valori timings [] e amplitudes [] consigliati sono rispettivamente {500, 500} e {128, 255}, che presentano una tendenza crescente dell'ampiezza dal 50% al 100%, con una frequenza di campionamento di 500 ms.

Forma d&#39;onda dell&#39;effetto aptico con variazione di ampiezza

Figura 20. Effetto aptico personalizzato lungo con variazione di ampiezza

Per controllare le funzionalità hardware del controllo dell'ampiezza per l'effetto 3, utilizza il metodo Vibrator.hasAmplitudeControl(). Il risultato deve essere true per eseguire VibrationEffect.createWaveform con un'ampiezza variabile come previsto.

Diagramma di flusso della valutazione dell&#39;effetto tattile soggettivo

Figura 21. Valutazione da parte del soggetto dell'effetto aptico 1, 2 e 3

Esegui una valutazione soggettiva

Per un rapido controllo della coerenza, esegui prima una valutazione soggettiva. Lo scopo della valutazione soggettiva è osservare l'ampiezza degli effetti aptico per determinare se il dispositivo può generare feedback aptico con ampiezze percepibili dall'uomo.

Una domanda specifica strutturata attorno a questo concetto è la seguente: Il dispositivo può produrre effetti tattili percettibili per gli utenti come previsto? Rispondere a questa domanda ti aiuta a evitare feedback aptico non riusciti, tra cui feedback aptico impercettibili che gli utenti non riescono a sentire o feedback aptico indesiderati in cui le forme d'onda non producono pattern come previsto.

Esegui una valutazione avanzata

Ti consigliamo vivamente di eseguire valutazioni della qualità avanzate. Le valutazioni di qualità avanzate caratterizzano gli attributi quantificabili degli effetti aptico per implementare la tecnologia aptica di qualità. Al termine, i produttori di dispositivi dovrebbero essere in grado di diagnosticare lo stato attuale dell'aptico, il che significa che possono impostare obiettivi per migliorare la qualità complessiva. Consulta la sezione Valutazione dell'hardware.