Gerätehersteller gelten im Allgemeinen als Eigentümer der privaten Vermögenswerte, die für jedes Gerät erstellt werden. Daher konzentrieren sich ihre Engineering-Bemühungen oft auf eine Pro-Gerät-Basis ; Es wird wenig bis gar kein Aufwand für die Konsistenz anderer Geräte im Ökosystem aufgewendet.
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 einem Fragmentierungsproblem führen, z. B. wenn die Hardwarefunktionen bestimmter Telefone nicht den Erwartungen der App-Entwickler entsprechen. Wenn also die haptischen APIs auf einigen Android-Telefonen funktionieren, auf anderen 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.
Diese Seite enthält eine Schritt-für-Schritt-Checkliste zum Einrichten der Hardwarekonformität für die optimale Nutzung der Android-Haptik-APIs.
Die folgende Abbildung veranschaulicht den Aufbau von gemeinsamem Wissen zwischen Geräteherstellern und Entwicklern, was ein entscheidender Schritt bei der Schaffung eines zusammenhängenden Ökosystems ist.
Abbildung 1. Aufbau von Wissen zwischen Geräteherstellern und Entwicklern
Checkliste für die Haptik-Implementierung
- Liste von Konstanten zum Implementieren von Haptik.
Konstanten zwischen HAL und API abbilden
- 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 zur Anleitung des empfohlenen Mappings .
- Anleitung zu gezielten haptischen Effekten. Verwenden Sie diese Anweisungen, um schnelle Überprüfungen Ihrer Hardware durchzuführen.
Wir werden jeden dieser Schritte weiter unten genauer untersuchen.
Schritt 1: Implementieren Sie Konstanten
Führen Sie diese Überprüfungen durch, um festzustellen, ob Ihr Gerät die Mindestanforderungen zum Implementieren von Haptik erfüllt.
Abbildung 2. Implementieren von Effekten
Abbildung 3. Primitive 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 beinhalten stattdessen den Begriff der Energieniveaus, wie 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
Mit
VibrationEffect.createWaveform
erstellte Wellenformvibration und die unterframeworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern
.EFFECT_HEAVY_CLICK
Mit
VibrationEffect.createWaveform
erstellte Wellenformvibration und die unterframeworks/base/core/res/res/values/config.xml##config_longPressVibePattern
.EFFECT_DOUBLE_CLICK
Wellenformvibration erstellt mit
VibrationEffect.createWaveform
und den Timings (0, 30, 100, 30).EFFECT_TICK
Mit
VibrationEffect.createWaveform
erstellte Wellenformvibration und die unterframeworks/base/core/res/res/values/config.xml##config_clockTickVibePattern
.
Abbildung 4. Implementieren von Feedback-Konstanten
Überprüfen Sie den Status der folgenden öffentlichen Feedback-Konstanten.
Haptische Konstanten | Standorte und Zusammenfassungen |
---|---|
| HapticFeedbackConstants -KlasseHaptische 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 zuordnen
Schritt 2 präsentiert empfohlene Zuordnungen zwischen öffentlichen HAL-Konstanten und API-Konstanten. 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. Das Mapping wird durch zwei unterschiedliche Default-Modelle unterstützt.
Diskretes Modell (einfach)
- Die Amplitude ist die Schlüsselvariable dieses Modells. Jede Entität in der HAL repräsentiert eine andere haptische Amplitude.
- Dieses Modell ist eine Mindestanforderung, die benötigt wird, um die grundlegende haptische UX zu implementieren.
- 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 in der 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 erweiterte haptische UX mit
VibrationEffect.Composition
verwenden möchten (für die beste Nutzung der neuesten haptischen APIs), wird empfohlen, ihre Hardware mit diesem Modell zu implementieren.
- Textur und Amplitude sind die Schlüsselvariablen dieses Modells. Jede Entität in der 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. Finden Sie zu Beginn dieses Prozesses heraus, wie viele haptische Wellenformen mit diskreter Amplitude das Gerät im HAL definieren kann. Eine spezifische Frage, die um diesen Begriff herum strukturiert ist, sieht folgendermaßen aus: Wie viele haptische Einzelimpulseffekte mit vom Menschen wahrnehmbaren Amplitudenunterschieden können in meinem Telefon definiert werden? Die Antwort auf diese Frage bestimmt das Mapping.
Das Definieren von HAL-Konstanten ist ein hardwareabhängiger Prozess. Beispielsweise verfügt ein Telefon der Einstiegsklasse möglicherweise nur über die Hardwarefähigkeiten, um eine einzelne haptische Wellenform zu erzeugen. Geräte mit fortschrittlicheren Hardwarekomponenten erzeugen einen größeren Bereich diskreter Amplitudenpegel und können mehrere haptische Wellenformen in der HAL definieren. Die HAL-API-Konstantenzuordnung nimmt die HAL-Konstante (unter Verwendung der mittleren Amplitude als Basislinie) und arrangiert dann stärkere oder schwächere Effekte von dort aus.
Abbildung 5. HAL-Konstantbereich nach Amplitude
Wenn die Anzahl der HAL-Konstanten mit diskreter Amplitude definiert ist, ist es an der Zeit, die HAL- und API-Konstanten der Anzahl der HAL-Konstanten zuzuordnen. Dieser Abbildungsprozess kann eine einzelne Impuls-API-Konstante in bis zu drei diskrete Gruppen von Amplitudenpegeln segmentieren. Die Art und Weise, wie API-Konstanten segmentiert werden, basiert auf UX-Prinzipien für begleitende Eingabeereignisse. 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 HAL-Konstanten mit mittlerer und hoher Amplitude zusammenführen. Ein praktisches Beispiel für diesen Begriff wäre das Abbilden EFFECT_CLICK
und EFFECT_HEAVY_CLICK
auf dieselbe HAL-Konstante, die die HAL-Konstante für den mittleren Amplitudenpegel wäre. Wenn Ihr Gerät nur eine HAL-Konstante mit diskreter Amplitude unterstützt, sollten Sie alle drei Ebenen zu einer zusammenführen.
Kontinuierliches Modell
Das kontinuierliche Modell mit Amplituden-Skalierbarkeit kann angewendet werden, um HAL-Konstanten zu definieren. Auf die HAL-Konstanten (z. B. HAL_H0
, HAL_H1
) kann ein Skalierungsfaktor ( S
) angewendet werden, um den skalierten HAL ( HAL_H0
x S
) zu erzeugen. In diesem Fall wird der skalierte HAL abgebildet, um API-Konstanten zu definieren ( HAL_H0
x S1
= H0S1
= EFFECT_TICK
), wie in Abbildung 7 gezeigt. Durch die Verwendung der Amplitudenskalierbarkeit des kontinuierlichen Modells kann ein Gerät eine kleine Anzahl von HAL-Konstanten mit unterschiedlichen Texturen speichern und Amplitudenvariationen durch Anpassen des Skalierungsfaktors ( S
) hinzufügen. Gerätehersteller können die Anzahl der HAL-Konstanten basierend darauf definieren, wie viele verschiedene haptische Texturen sie bereitstellen möchten.
Abbildung 7. HAL-Konstantbereich nach Textur (HAL_H0) und Amplitudenskala (S)
Abbildung 8. HAL-API-Konstantenzuordnung: Kontinuierliches Modell
In dem kontinuierlichen Modell repräsentieren unterschiedliche HAL-Konstanten eher unterschiedliche haptische Texturen als 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 empfohlen, die Textur und den Skalierungsfaktor (im Designprozess des HAL-API-Mappings) zu kombinieren.
Fig. 7 veranschaulicht die konstante Abbildung durch Erhöhen der Variation von einer HAL zu vielen API-Konstanten mit Amplituden-Skalierbarkeit.
Abbildung 9. Zunehmende Variation mit Amplitudenskalierbarkeit
Hinweis: Die obige Abbildung zeigt eine bestimmte Instanz der Konstantenzuordnung, daher sind die Namenskonventionen hypothetisch. Die Durchführung dieses Prozesses ist für jeden Gerätehersteller einzigartig.
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 getrennt gestaltet werden. Dieser Ansatz wird empfohlen, wenn Sie der Textur Variation hinzufügen möchten.
Schritt 3: Bewerten Sie die Hardware
Die Hardwarebewertung 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 Konstante VibrationEffect.EFFECT_CLICK
ist der Grundlinieneffekt oder gemeinsame Nenner in der in Schritt 2 bereitgestellten HAL-API-Zuordnung. Sie ist dem am häufigsten verwendeten Effekt zugeordnet, HapticFeedbackConstants.KEYBOARD_PRESS
. Die Bewertung dieses Effekts hilft dabei, die Bereitschaft Ihres Zielgeräts für eine klare Haptik zu bestimmen.
Effekt 2: Kurzer benutzerdefinierter haptischer Effekt
Die VibrationEffect.createOneShot(20,255)
ist für benutzerdefinierte haptische Effekte. Für kurze, einzelne benutzerdefinierte Impulse ist 20 ms die empfohlene maximale Schwelle zum Definieren der Dauer. Ein einzelner Impuls, der länger als 20 ms ist, wird nicht empfohlen, da er als summende Vibration wahrgenommen wird .
Abbildung 10. Kurzer benutzerdefinierter haptischer Effekt
Effekt 3: Langer benutzerdefinierter 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, um die Fähigkeiten des Geräts für reichhaltige Haptik zu bewerten. Die empfohlenen timings []
und amplitudes []
sind {500, 500}
bzw. {128, 255}
, was bei einer Abtastrate von 500 ms einen zunehmenden Trend der Amplitude von 50 % auf 100 % darstellt.
Abbildung 11. Langer benutzerdefinierter haptischer Effekt mit Amplitudenvariation
Verwenden Sie die Methode Vibrator.hasAmplitudeControl()
, um die Hardwarefähigkeiten der Amplitudensteuerung für Effekt 3 zu überprüfen. Das Ergebnis muss true
sein, um VibrationEffect.createWaveform
wie beabsichtigt mit variierender Amplitude auszuführen.
Abbildung 12. Probandenbewertung des haptischen Effekts 1, 2 und 3
Durchführung einer subjektiven Bewertung
Führen Sie für eine schnelle Kohärenzprüfung zunächst eine subjektive Bewertung durch. Das Ziel der subjektiven Bewertung ist es, die Amplitude der haptischen Effekte zu beobachten, um festzustellen, ob das Gerät Haptiken mit menschlich wahrnehmbaren Amplituden erzeugen kann.
Eine spezifische Frage, die um diesen Begriff herum strukturiert ist, sieht folgendermaßen aus: Kann das Gerät wie erwartet leicht wahrnehmbare haptische Effekte für die Benutzer erzeugen? Die Beantwortung dieser Frage hilft Ihnen, fehlerhafte Haptik zu vermeiden, einschließlich nicht wahrnehmbarer Haptik, die Benutzer nicht fühlen können, oder unbeabsichtigter Haptik, bei der Wellenformen nicht wie beabsichtigt Muster erzeugen.