Gerätehersteller gelten in der Regel als Inhaber der privaten Assets, die für jedes Gerät erstellt wurden. Daher konzentrieren sich ihre Entwicklungsbemühungen oft auf eine Gerätebasis. Die Konsistenz anderer Geräte im Ökosystem wird kaum oder gar nicht berücksichtigt.
Im Gegensatz dazu entwickeln Entwickler Apps, die auf allen Android-Smartphones funktionieren, unabhängig von den technischen Spezifikationen der einzelnen Geräte. Dieser Unterschied im Ansatz kann zu einer Fragmentierung führen, wenn die Hardwarefunktionen bestimmter Smartphones beispielsweise nicht den Erwartungen der App-Entwickler entsprechen. Wenn die Haptik-APIs also auf einigen Android-Smartphones funktionieren, aber auf anderen nicht, ist das System inkonsistent. Aus diesem Grund spielt die Hardwarekonfiguration eine wichtige Rolle, damit Hersteller Android-Haptik-APIs auf allen Geräten implementieren können.
Auf dieser Seite finden Sie eine detaillierte Checkliste, mit der Sie die Hardwarekompatibilität für die optimale Nutzung der Android-Haptik-APIs einrichten können.
Die folgende Abbildung veranschaulicht den Aufbau von gemeinsamen Kenntnissen zwischen Geräteherstellern und Entwicklern, was ein wichtiger Schritt beim Aufbau eines zusammenhängenden Ökosystems ist.
Abbildung 1. Wissensaustausch zwischen Geräteherstellern und Entwicklern
Checkliste für die Implementierung von Haptik
-
- Liste der Konstanten zur Implementierung von Haptik.
Zuordnungskonstanten zwischen HAL und API
- Empfehlungen zur Zuordnung zwischen öffentlichen API-Konstanten (im Framework als Platzhalter bezeichnet) und HAL-Konstanten, die die Platzhalter implementieren.
- Weitere Informationen zu diesem Prozess finden Sie unter Designprinzipien für die empfohlene Kartierung.
-
- Anleitung zum Festlegen von haptischen Effekten Anhand dieser Anleitung können Sie eine schnelle Prüfung Ihrer Hardware durchführen.
Im Folgenden werden diese Schritte genauer beschrieben.
Schritt 1: Konstanten implementieren
Führen Sie diese Prüfungen durch, um festzustellen, ob Ihr Gerät die Mindestanforderungen für die Implementierung von Haptik erfüllt.
Abbildung 2: Effekte implementieren
Abbildung 3 Primitive implementieren
Prüfen Sie den Implementierungsstatus der folgenden haptischen Konstanten.
Haptische Konstanten | Standorte und Zusammenfassungen |
---|---|
EFFECT_TICK , EFFECT_CLICK ,
EFFECT_HEAVY_CLICK ,
EFFECT_DOUBLE_CLICK |
VibrationEffect
classHaptische Konstanten in VibrationEffect enthalten keine Eingabeereignisse und haben keine UI-Elemente. Konstanten enthalten stattdessen den Begriff „Energieniveaus“, z. B. EFFECT_CLICK und EFFECT_HEAVY_CLICK , die von
createPredefined() aufgerufen werden. |
PRIMITIVE_TICK , PRIMITIVE_CLICK , PRIMITIVE_LOW_TICK> , PRIMITIVE_SLOW_RISE , PRIMITIVE_QUICK_RISE , PRIMITIVE_QUICK_FALL , PRIMITIVE_SPIN , PRIMITIVE_THUD |
VibrationEffect.Composition
classHaptische Konstanten in VibrationEffect.Composition dürfen eine skalierbare Intensität haben, die von
addPrimitive(int primitiveId, float scale, int delay) aufgerufen wird. |
Die unten beschriebenen alternativen Vibrationen werden auf Geräten ausgeführt, die die VibrationEffect
-Konstanten nicht implementieren. Es wird empfohlen, diese Konfigurationen so zu aktualisieren, dass sie auf solchen Geräten optimal funktionieren.
EFFECT_CLICK
Mit
VibrationEffect.createWaveform
erstellte Wellenformvibration und die Zeiteinstellungen unterframeworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern
.EFFECT_HEAVY_CLICK
Wellenformvibration, erstellt mit
VibrationEffect.createWaveform
und den Zeitangaben, die unterframeworks/base/core/res/res/values/config.xml##config_longPressVibePattern
konfiguriert wurdenEFFECT_DOUBLE_CLICK
Wellenformvibration, die mit
VibrationEffect.createWaveform
und den Zeitangaben (0, 30, 100, 30) erstellt wurde.EFFECT_TICK
Wellenformvibration, erstellt mit
VibrationEffect.createWaveform
und den Zeitangaben, die unterframeworks/base/core/res/res/values/config.xml##config_clockTickVibePattern
konfiguriert wurden
Abbildung 4 Feedbackkonstanten implementieren
Prüfen Sie den Status der folgenden Konstanten für öffentliches Feedback.
Haptische Konstanten | Standorte und Zusammenfassungen |
---|---|
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 |
Klasse HapticFeedbackConstants Haptische Konstanten in HapticFeedbackConstants unterstützen Eingabeereignisse mit bestimmten UI-Elementen wie KEYBOARD_PRESS und KEYBOARD_RELEASE , die von performHapticFeedback() aufgerufen werden. |
Schritt 2: Konstanten zwischen HAL und API abgleichen
In Schritt 2 werden empfohlene Zuordnungen zwischen öffentlichen HAL-Konstanten und API-Konstanten dargestellt. Wenn die in Schritt 1 geprüfte Hardware die HAL-Konstanten nicht implementiert, sollten Sie in Schritt 2 die in Schritt 1 beschriebenen Fallback-Muster aktualisieren, um ähnliche Ausgaben zu generieren. Die Zuordnung wird von zwei verschiedenen Standardmodellen unterstützt.
Diskretes Modell (einfach)
- Die Amplitude ist die Schlüsselvariable dieses Modells. Jede Entität in der HAL steht für eine andere haptische Amplitude.
- Dieses Modell ist die Mindestanforderung, die für die Implementierung der grundlegenden haptischen UX erforderlich ist.
- Eine erweiterte haptische UX erfordert eine erweiterte Hardware und ein erweitertes Modell (kontinuierliches Modell).
Kontinuierliches Modell (erweitert)
- Textur und Amplitude sind die wichtigsten Variablen dieses Modells.
Jede Entität in der HAL steht für unterschiedliche haptische Texturen. Die Amplitude jeder HAL-Entität wird durch den Skalierungsfaktor (
S
) gesteuert. - Für dieses Modell ist eine erweiterte Hardware erforderlich. Wenn OEMs eine erweiterte haptische UX mit
VibrationEffect.Composition
verwenden möchten (um die neuesten Haptik-APIs optimal zu nutzen), wird empfohlen, ihre Hardware mit diesem Modell zu implementieren.
- Textur und Amplitude sind die wichtigsten Variablen dieses Modells.
Jede Entität in der HAL steht für unterschiedliche haptische Texturen. Die Amplitude jeder HAL-Entität wird durch den Skalierungsfaktor (
Diskretes Modell
Es wird empfohlen, alle in der API bereitgestellten öffentlichen Konstanten den entsprechenden HAL-Konstanten zuzuordnen. Ermitteln Sie zuerst, wie viele haptische Wellenformen mit diskreter Amplitude das Gerät in der HAL definieren kann. Eine konkrete Frage, die auf diesem Konzept basiert, könnte so lauten: Wie viele haptische Effekte mit einzelnen Impulsen und für Menschen wahrnehmbaren Amplitudenunterschieden können auf meinem Smartphone definiert werden? Die Antwort auf diese Frage bestimmt die Zuordnung.
Die Definition von HAL-Konstanten ist ein hardwareabhängiger Prozess. Ein Einsteiger-Smartphone hat beispielsweise möglicherweise nur die Hardwarekapazitäten, um eine einzelne haptische Wellenform zu erzeugen. Geräte mit erweiterten Hardwarekomponenten erzeugen einen breiteren Bereich diskreter Amplitudenebenen und können mehrere haptische Wellenformen in der HAL definieren. Die konstante HAL-API-Zuordnung verwendet die HAL-Konstante (mit der mittleren Amplitude als Basis) und ordnet dann stärkere oder schwächere Effekte an.
Abbildung 5. HAL-konstanter Bereich nach Amplitude
Wenn die Anzahl der HAL-Konstanten mit diskreter Amplitude definiert ist, ist es an der Zeit, HAL- und API-Konstanten der Anzahl der HAL-Konstanten zuzuordnen. Bei diesem Zuordnungsprozess kann eine einzelne Impuls-API-Konstante in bis zu drei diskrete Gruppen von Amplitudenebenen unterteilt werden. Die Segmentierung von API-Konstanten basiert auf UX-Prinzipien für begleitende Eingabeereignisse. Weitere Informationen finden Sie unter Haptik im UX-Design.
Abbildung 6: HAL-API-Konstantenzuordnung: Diskretes Modell
Wenn Ihr Gerät nur zwei HAL-Konstanten mit diskreten Amplituden unterstützt, sollten Sie die HAL-Konstanten für die mittlere und hohe Amplitude zusammenführen. Ein Beispiel für diese Vorstellung in der Praxis wäre die Zuordnung von EFFECT_CLICK
und EFFECT_HEAVY_CLICK
zurselben HAL-Konstante, also der HAL-Konstante für den mittleren Amplitudenpegel.
Wenn Ihr Gerät nur eine HAL-Konstante mit diskreter Amplitude unterstützt, sollten Sie alle drei Stufen zusammenführen.
Kontinuierliches Modell
Das kontinuierliche Modell mit Amplituden-Skalierbarkeit kann zur Definition von HAL-Konstanten angewendet werden. Ein Skalierungsfaktor (S
) kann auf die HAL-Konstanten (z. B. HAL_H0
, HAL_H1
) angewendet werden, um die skalierte HAL (HAL_H0
× S
) zu erhalten. In diesem Fall wird die skalierte HAL zugeordnet, um API-Konstanten zu definieren (HAL_H0
× S1
= H0S1
= EFFECT_TICK
), wie in Abbildung 7 dargestellt. Durch die Amplitudenskalierbarkeit des kontinuierlichen Modells kann ein Gerät eine kleine Anzahl von HAL-Konstanten mit unterschiedlichen Texturen speichern und Amplitudenvariationen hinzufügen, indem der Skalierungsfaktor (S
) angepasst wird. Gerätehersteller können die Anzahl der HAL-Konstanten basierend darauf definieren, wie viele verschiedene haptische Texturen sie bereitstellen möchten.
Abbildung 7. Konstanter HAL-Bereich nach Textur (HAL_H0) und Amplitudenskala (S)
Abbildung 8: HAL-API-Konstantenzuordnung: Kontinuierliches Modell
Im kontinuierlichen Modell stehen unterschiedliche HAL-Konstanten nicht für unterschiedliche Amplituden, sondern für unterschiedliche haptische Texturen. Die Amplitude kann mit dem Skalierungsfaktor (S
) konfiguriert werden. Da die Wahrnehmung der Textur (z. B. Schärfe) jedoch mit der Wahrnehmung der Dauer und Amplitude zusammenhängt, wird empfohlen, die Textur und den Skalierungsfaktor (im Designprozess der HAL-API-Zuordnung) zu kombinieren.
Abbildung 7 veranschaulicht die konstante Zuordnung durch eine zunehmende Variation von einer HAL zu vielen API-Konstanten mit Amplitudenskalierung.
Abbildung 9. Variation mit Amplitudenskalierbarkeit erhöhen
Bei allen skalierbaren API-Konstanten wie PRIMITIVE_TICK
und PRIMITIVE_CLICK
in VibrationEffect.Composition
hängt das Energieniveau der API-Konstante vom Parameter float scale
ab, wenn die API-Konstante über addPrimitive(int primitiveID, float scale,
int delay)
deklariert wird. PRIMITIVE_TICK
und PRIMITIVE_CLICK
können durch Verwendung verschiedener HAL-Konstanten klar voneinander unterschieden werden. Dieser Ansatz wird empfohlen, wenn Sie der Textur eine Variation hinzufügen möchten.
Schritt 3: Hardware prüfen
Bei der Hardwarebewertung werden drei haptische Effekte definiert, die für diese spezifische Bewertung als Effekte 1, 2 und 3 bezeichnet sind.
Effekt 1: Vordefinierte kurze haptische Konstanten
Die Konstante VibrationEffect.EFFECT_CLICK
ist der Grundeffekt oder der gemeinsame Nenner in der HAL-API-Zuordnung aus Schritt 2. Er ist dem am häufigsten verwendeten Effekt HapticFeedbackConstants.KEYBOARD_PRESS
zugeordnet.
Die Auswertung dieses Effekts hilft festzustellen, ob Ihr Zielgerät für eine klare Haptik bereit ist.
Effekt 2: Kurzer benutzerdefinierter haptischer Effekt
Die Konstante VibrationEffect.createOneShot(20,255)
ist für benutzerdefinierte haptische Effekte. Für kurze, einzelne benutzerdefinierte Impulse wird eine maximale Dauer von 20 ms empfohlen. Ein einzelner Impuls von mehr als 20 ms wird nicht empfohlen, da er als summende Vibration wahrgenommen wird.
Abbildung 10. Kurzer benutzerdefinierter haptischer Effekt
Effekt 3: Langer benutzerdefinierter haptischer Effekt mit Amplitudenänderung
Die Konstante VibrationEffect.createWaveform(timings[], amplitudes[], int repeat)
ist für lange benutzerdefinierte Effekte mit Amplitudenänderung vorgesehen. Die Fähigkeit, unterschiedliche Amplituden für benutzerdefinierte haptische Effekte zu erzeugen, ist einer der Indikatoren, um die Möglichkeiten des Geräts für ausdrucksstarke Haptik zu bewerten.
Die empfohlenen Werte für timings []
und amplitudes []
sind {500, 500}
und {128, 255}
. Sie zeigen einen steigenden Amplitudentrend von 50% auf 100 % bei einer Abtastrate von 500 ms.
Abbildung 11 Langer benutzerdefinierter Haptikeffekt mit Amplitudenvariation
Mit der Methode Vibrator.hasAmplitudeControl()
kannst du die Hardwarefunktionen der Amplitudenregelung für Effekt 3 prüfen.
Das Ergebnis muss true
sein, damit VibrationEffect.createWaveform
wie beabsichtigt mit variabler Amplitude ausgeführt wird.
Abbildung 12 Bewertung des haptischen Effekts 1, 2 und 3 durch die Testpersonen
Subjektive Bewertung durchführen
Führen Sie zuerst eine subjektive Bewertung durch, um die Kohärenz schnell zu überprüfen. Das Ziel der subjektiven Bewertung besteht darin, die Amplitude der haptischen Effekte zu beobachten, um festzustellen, ob das Gerät mit für den Menschen wahrnehmbaren Amplituden eine Haptik erzeugen kann.
Eine konkrete Frage, die sich um diesen Begriff dreht, könnte so lauten: Kann das Gerät wie erwartet wahrnehmbare haptische Effekte für die Nutzer erzeugen? Wenn Sie diese Frage beantworten, können Sie nicht zufriedenstellende Haptik vermeiden, einschließlich nicht wahrnehmbarer Haptik, die Nutzer nicht spüren können, oder unbeabsichtigter Haptik, bei der Wellenformen nicht wie beabsichtigt Muster erzeugen.
Eine erweiterte Bewertung durchführen
Wir empfehlen dringend, erweiterte Qualitätsprüfungen durchzuführen. Bei erweiterten Qualitätsbewertungen werden quantifizierbare Attribute von haptischen Effekten charakterisiert, um eine Qualitätshaptik zu implementieren. Nach Abschluss der Tests sollten Gerätehersteller den aktuellen haptischen Status diagnostizieren können, sodass sie Ziele zur Verbesserung der Gesamtqualität festlegen können. Weitere Informationen finden Sie unter Hardwarebewertung.