Gerätehersteller gelten im Allgemeinen als Eigentümer der für jedes Gerät geschaffenen privaten Vermögenswerte. Daher konzentrieren sich ihre Entwicklungsbemühungen oft auf eine gerätespezifische Basis ; Für die Konsistenz anderer Geräte im Ökosystem wird kaum oder gar kein Aufwand betrieben.
Im direkten Gegensatz dazu streben Entwickler danach, Apps zu entwickeln, die auf allen Android-Telefonen im Ökosystem funktionieren, unabhängig von den technischen Spezifikationen der einzelnen Geräte. Dieser unterschiedliche Ansatz kann zu Fragmentierungsproblemen führen, wenn beispielsweise die Hardwarefunktionen bestimmter Telefone nicht den Erwartungen der App-Entwickler entsprechen. Wenn also die Haptik-APIs auf einigen Android-Telefonen funktionieren, auf anderen jedoch nicht, ist das Ergebnis ein inkonsistentes Ökosystem. Aus diesem Grund spielt die Hardwarekonfiguration eine entscheidende Rolle, um sicherzustellen, dass Hersteller Android-Haptik-APIs auf jedem Gerät implementieren können.
Auf dieser Seite finden Sie eine Schritt-für-Schritt-Checkliste zum Einrichten der Hardware-Konformität für die optimale Nutzung der Android-Haptik-APIs.
Die folgende Abbildung veranschaulicht den Aufbau gemeinsamen Wissens zwischen Geräteherstellern und Entwicklern, was ein entscheidender Schritt bei der Schaffung eines kohärenten Ökosystems ist.
Abbildung 1. Wissensaufbau zwischen Geräteherstellern und Entwicklern
Checkliste für die Haptik-Implementierung
- Liste der Konstanten zum Implementieren von Haptik.
Ordnen Sie Konstanten zwischen HAL und API zu
- Zuordnungsempfehlungen zwischen öffentlichen API-Konstanten (benannte Platzhalter im Framework) und HAL-Konstanten, die die Platzhalter implementieren.
- Weitere Informationen zu diesem Prozess finden Sie unter Designprinzipien als Leitfaden für die empfohlene Zuordnung .
- Anleitung zu zielgerichteten haptischen Effekten. Verwenden Sie diese Anweisungen, um schnelle Überprüfungen Ihrer Hardware durchzuführen.
Wir werden jeden dieser Schritte im Folgenden genauer untersuchen.
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. Umsetzungseffekte
Abbildung 3. Grundelemente implementieren
Überprüfen Sie den Implementierungsstatus der folgenden haptischen Konstanten.
Haptische Konstanten | Standorte und Zusammenfassungen |
---|---|
EFFECT_TICK , EFFECT_CLICK , EFFECT_HEAVY_CLICK , EFFECT_DOUBLE_CLICK | VibrationEffect KlasseHaptische Konstanten in VibrationEffect beinhalten keine Vorstellung von Eingabeereignissen und haben keine UI-Elemente. Konstanten umfassen stattdessen den Begriff der Energieniveaus, wie 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 KlasseHaptische 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 zu aktualisieren, um auf solchen Geräten die beste Leistung zu erzielen.
EFFECT_CLICK
Wellenformvibration, erstellt mit
VibrationEffect.createWaveform
und den unterframeworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern
konfigurierten Timings.EFFECT_HEAVY_CLICK
Wellenformvibration, erstellt mit
VibrationEffect.createWaveform
und den unterframeworks/base/core/res/res/values/config.xml##config_longPressVibePattern
konfigurierten Timings.EFFECT_DOUBLE_CLICK
Mit
VibrationEffect.createWaveform
und den Timings (0, 30, 100, 30) erstellte Wellenformvibration.EFFECT_TICK
Wellenformvibration, erstellt mit
VibrationEffect.createWaveform
und den unterframeworks/base/core/res/res/values/config.xml##config_clockTickVibePattern
konfigurierten Timings.
Abbildung 4. Feedback-Konstanten implementieren
Überprüfen Sie den Status der folgenden öffentlichen Feedbackkonstanten.
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 | HapticFeedbackConstants -KlasseHaptische Konstanten in HapticFeedbackConstants unterstützen Eingabeereignisse mit bestimmten UI-Elementen, wie z. B. KEYBOARD_PRESS und KEYBOARD_RELEASE , die von performHapticFeedback() aufgerufen werden. |
Schritt 2: Ordnen Sie Konstanten zwischen HAL und API zu
Schritt 2 stellt empfohlene Zuordnungen zwischen öffentlichen HAL-Konstanten und API-Konstanten vor. Wenn die in Schritt 1 bewertete Hardware die HAL-Konstanten nicht implementiert, sollte Schritt 2 verwendet werden, um die in Schritt 1 beschriebenen Fallback-Muster zu aktualisieren, um ähnliche Ausgaben zu generieren. Die Abbildung wird durch zwei verschiedene Standardmodelle unterstützt.
Diskretes Modell (einfach)
- Die Amplitude ist die Schlüsselvariable dieses Modells. Jede Entität im HAL repräsentiert eine andere haptische Amplitude.
- Dieses Modell ist eine Mindestanforderung, die zur Implementierung der grundlegenden haptischen UX erforderlich ist.
- Eine fortschrittlichere haptische UX erfordert fortschrittliche Hardware und ein fortschrittliches Modell (kontinuierliches Modell).
Kontinuierliches Modell (fortgeschritten)
- Textur und Amplitude sind die Schlüsselvariablen dieses Modells. Jede Entität im HAL repräsentiert unterschiedliche haptische Texturen. Die Amplitude jeder HAL-Entität wird durch den Skalierungsfaktor (
S
) gesteuert. - Dieses Modell erfordert fortschrittliche Hardware. Wenn OEMs fortschrittliche haptische UX mit
VibrationEffect.Composition
verwenden möchten (für die optimale Nutzung der neuesten Haptik-APIs), wird empfohlen, ihre Hardware mit diesem Modell zu implementieren.
- Textur und Amplitude sind die Schlüsselvariablen dieses Modells. Jede Entität im HAL repräsentiert 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. Um diesen Prozess zu starten, finden Sie heraus, wie viele haptische Wellenformen mit diskreter Amplitude das Gerät im HAL definieren kann. Eine spezifische Frage, die sich an diesem Gedanken orientiert, sieht folgendermaßen aus: Wie viele haptische Einzelimpulseffekte mit für den Menschen wahrnehmbaren Amplitudenunterschieden können in meinem Telefon definiert werden? Die Antwort auf diese Frage bestimmt die Zuordnung.
Das Definieren von HAL-Konstanten ist ein hardwareabhängiger Prozess. Beispielsweise verfügt ein Einsteigertelefon möglicherweise nur über die Hardwarefunktionen, um eine einzige haptische Wellenform zu erzeugen. Geräte mit fortschrittlicheren Hardwarekomponenten erzeugen einen größeren Bereich diskreter Amplitudenpegel und können mehrere haptische Wellenformen im HAL definieren. Die HAL-API-Konstantenzuordnung verwendet die HAL-Konstante (unter Verwendung der mittleren Amplitude als Basislinie) und ordnet dann von dort aus stärkere oder schwächere Effekte an.
Abbildung 5. HAL-Konstantenbereich nach Amplitude
Wenn die Anzahl der HAL-Konstanten mit diskreter Amplitude definiert ist, ist es an der Zeit, HAL- und API-Konstanten anhand der Anzahl der HAL-Konstanten abzubilden. Dieser Zuordnungsprozess kann eine einzelne Impuls-API-Konstante in bis zu drei diskrete Gruppen von Amplitudenniveaus segmentieren. Die Art und Weise, wie API-Konstanten segmentiert werden, basiert auf UX-Prinzipien zur Begleitung von Eingabeereignissen. Weitere Informationen finden Sie unter Haptics 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 Zusammenführung der HAL-Konstanten mittlerer und hoher Amplitudenstufe in Betracht ziehen. Ein Beispiel für diesen Gedanken in der Praxis wäre die Zuordnung von EFFECT_CLICK
und EFFECT_HEAVY_CLICK
zur gleichen HAL-Konstante, nämlich der HAL-Konstante „Mittlerer Amplitudenpegel“. Wenn Ihr Gerät nur eine HAL-Konstante mit diskreter Amplitude unterstützt, sollten Sie erwägen, alle drei Ebenen zu einer zusammenzuführen.
Kontinuierliches Modell
Das kontinuierliche Modell mit Amplitudenskalierbarkeit 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 den skalierten HAL ( HAL_H0
x S
) zu erzeugen. In diesem Fall wird der skalierte HAL der Definition von API-Konstanten zugeordnet ( HAL_H0
x S1
= H0S1
= EFFECT_TICK
), wie in Abbildung 7 dargestellt. Durch die Nutzung der Amplitudenskalierbarkeit des kontinuierlichen Modells kann ein Gerät eine kleine Anzahl von HAL-Konstanten mit unterschiedlichen Texturen speichern und fügen Sie Amplitudenvariationen hinzu, indem Sie den Skalierungsfaktor ( S
) anpassen. Gerätehersteller können die Anzahl der HAL-Konstanten basierend darauf definieren, wie viele verschiedene haptische Texturen sie bereitstellen möchten.
Abbildung 7. HAL-Konstantenbereich nach Textur (HAL_H0) und Amplitudenskala (S)
Abbildung 8. HAL-API-Konstantenzuordnung: Kontinuierliches Modell
Im kontinuierlichen Modell repräsentieren unterschiedliche HAL-Konstanten unterschiedliche haptische Texturen und nicht unterschiedliche Amplituden; Der Skalierungsfaktor ( S
) kann die Amplitude konfigurieren. Da jedoch die Wahrnehmung der Textur (z. B. Schärfe) mit der Wahrnehmung der Dauer und Amplitude zusammenhängt, wird die Kombination der Textur und des Skalierungsfaktors (im Entwurfsprozess der HAL-API-Zuordnung) empfohlen.
Abbildung 7 veranschaulicht die Konstantenzuordnung durch Erhöhung der Variation von einer HAL auf viele API-Konstanten mit Amplitudenskalierbarkeit.
Abbildung 9. Zunehmende Variation mit Amplitudenskalierbarkeit
Für alle skalierbaren API-Konstanten wie PRIMITIVE_TICK
und PRIMITIVE_CLICK
in VibrationEffect.Composition
hängt das Energieniveau der API-Konstante vom float scale
Parameter ab, wenn die API-Konstante über addPrimitive(int primitiveID, float scale, int delay)
deklariert wird. PRIMITIVE_TICK
und PRIMITIVE_CLICK
können durch die Verwendung unterschiedlicher HAL-Konstanten klar unterschieden gestaltet werden. Dieser Ansatz wird empfohlen, wenn Sie der Textur Abwechslung verleihen möchten.
Schritt 3: Bewerten Sie die Hardware
Die Hardware-Bewertung umfasst die Definition von drei haptischen Effekten, die für diese spezifische Bewertung als Effekte 1, 2 und 3 bezeichnet werden.
Effekt 1: Vordefinierte kurze haptische Konstanten
Die VibrationEffect.EFFECT_CLICK
Konstante ist der Basiseffekt oder der gemeinsame Nenner in der in Schritt 2 bereitgestellten HAL-API-Zuordnung. Sie wird dem am häufigsten verwendeten Effekt zugeordnet, HapticFeedbackConstants.KEYBOARD_PRESS
. Die Beurteilung dieses Effekts hilft dabei, die Bereitschaft Ihres Zielgeräts für eine klare Haptik zu bestimmen.
Effekt 2: Kurzer individueller haptischer Effekt
Die Konstante VibrationEffect.createOneShot(20,255)
dient für benutzerdefinierte haptische Effekte. Für kurze, einzelne benutzerdefinierte Impulse ist 20 ms der empfohlene maximale Schwellenwert zur Definition der Dauer. Ein einzelner Impuls, der länger als 20 ms dauert, wird nicht empfohlen, da er als summende Vibration wahrgenommen wird.
Abbildung 10. Kurzer benutzerdefinierter haptischer Effekt
Effekt 3: Langer individueller haptischer Effekt mit Amplitudenvariation
Die Konstante VibrationEffect.createWaveform(timings[], amplitudes[], int repeat)
ist für lange benutzerdefinierte Effekte mit Amplitudenvariation vorgesehen. Die Fähigkeit, unterschiedliche Amplituden für benutzerdefinierte haptische Effekte zu erzeugen, ist einer der Indikatoren zur Bewertung der Fähigkeiten des Geräts für eine reichhaltige Haptik . Die empfohlenen timings []
und amplitudes []
sind {500, 500}
bzw. {128, 255}
, was einen zunehmenden Trend der Amplitude von 50 % auf 100 % bei einer Abtastrate von 500 ms darstellt.
Abbildung 11. Langer benutzerdefinierter haptischer Effekt mit Amplitudenvariation
Um die Hardwarefunktionen der Amplitudensteuerung für Effekt 3 zu überprüfen, verwenden Sie die Methode Vibrator.hasAmplitudeControl()
. Das Ergebnis muss true
sein, um VibrationEffect.createWaveform
wie beabsichtigt mit variierender Amplitude auszuführen.
Abbildung 12. Beurteilung des haptischen Effekts 1, 2 und 3 durch den Probanden
Führen Sie eine subjektive Beurteilung durch
Für eine schnelle Kohärenzprüfung führen Sie zunächst eine subjektive Beurteilung durch. Ziel der subjektiven Beurteilung ist es, die Amplitude der haptischen Effekte zu beobachten, um festzustellen, ob das Gerät Haptiken mit für den Menschen wahrnehmbaren Amplituden erzeugen kann.
Eine spezifische Frage, die sich an diesem Gedanken orientiert, sieht wie folgt aus: Kann das Gerät wie erwartet für den Benutzer leicht wahrnehmbare haptische Effekte erzeugen? Die Beantwortung dieser Frage hilft Ihnen, fehlerhafte Haptiken zu vermeiden, einschließlich nicht wahrnehmbarer Haptiken, die Benutzer nicht fühlen können, oder unbeabsichtigter Haptiken, bei denen Wellenformen nicht wie beabsichtigt Muster erzeugen.