Stałe i elementy dotykowe są definiowane przez interfejs HAL wibratora i mapowane przez platformę Androida na interfejsy API dostępne publicznie. Aby sprawdzić, czy urządzenie spełnia minimalne wymagania dotyczące implementacji haptyki:
Rysunek 2. Implementowanie efektów
Rysunek 3. Implementowanie elementów podstawowych
Implementowanie stałych
Deweloperzy mogą używać stałych wartości haptycznych w VibrationEffect za pomocą funkcji VibrationEffect.createPredefined(). Sprawdź stan implementacji tych stałych wartości haptycznych.
Stałe dotyczące haptyki | Lokalizacje i streszczenia |
---|---|
EFFECT_TICK , EFFECT_CLICK ,
EFFECT_HEAVY_CLICK ,
EFFECT_DOUBLE_CLICK |
VibrationEffect
classKonstante haptyczne w VibrationEffect nie zawierają żadnych informacji o zdarzeniach wejściowych i nie mają elementów interfejsu użytkownika. Stała zawiera zamiast tego poziomy energii, takie jak EFFECT_CLICK i EFFECT_HEAVY_CLICK , które są wywoływane przez
createPredefined() . |
Opisane poniżej alternatywne wibracje są wykonywane na urządzeniach, które nie implementują stałych wartości VibrationEffect
. Zalecamy zaktualizowanie tych konfiguracji, aby zapewnić optymalną wydajność na takich urządzeniach.
EFFECT_CLICK
Wibracje w postaci fali utworzone za pomocą
VibrationEffect.createWaveform
i czasów skonfigurowanych wframeworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern
.EFFECT_HEAVY_CLICK
Wibracje w postaci fali utworzone za pomocą
VibrationEffect.createWaveform
i czasów ustawionych wframeworks/base/core/res/res/values/config.xml##config_longPressVibePattern
.EFFECT_DOUBLE_CLICK
Wibracje w postaci fali utworzone za pomocą
VibrationEffect.createWaveform
i czasów trwania (0, 30, 100, 30).EFFECT_TICK
Wibracje w postaci fali utworzone za pomocą
VibrationEffect.createWaveform
i czasów skonfigurowanych wframeworks/base/core/res/res/values/config.xml##config_clockTickVibePattern
.
Rysunek 4. Implementacja stałych wartości opinii
Deweloperzy mogą używać stałych wartości haptycznych w HapticFeedbackConstants za pomocą metody View.performHapticFeedback(). Sprawdź stan tych publicznych stałych wartości reakcji.
Stałe dotyczące haptyki | Lokalizacje i streszczenia |
---|---|
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 classKonstante haptyczne w HapticFeedbackConstants wspomagają zdarzenia wejścia z pewnymi elementami UI, takimi jak KEYBOARD_PRESS i KEYBOARD_RELEASE , które są wywoływane przez performHapticFeedback() . |
Implementowanie elementów podstawowych
W VibrationEffect.Composition
można skalować intensywność, co pozwala deweloperom na stosowanie addPrimitive(int primitiveId, float scale, int delay)
.
Pierwiastki można podzielić na 2 kategorie:
Krótkie prymitywy: prymitywy o krótkim czasie trwania, zwykle krótszym niż 20 ms. Są to
CLICK
,TICK
iLOW_TICK
.Sygnalizowanie: sygnały o zmiennej amplitudzie i częstotliwości, zazwyczaj trwające dłużej niż sygnały krótkie. Są to
SLOW_RISE
,QUICK_RISE
,QUCK_FALL
,THUD
iSPIN
.
Krótkie elementy
Krótkie prymitywy można opisać przy użyciu profilu przyspieszenia wyjściowego silnika wibracyjnego. Częstotliwość bezwzględna zależy od danego prymitywu i zmienia się w zależności od częstotliwości rezonansowej danego aktuatora. Więcej informacji o konfigurowaniu sprzętu i narzędziach do pomiaru wyjścia znajdziesz w artykule Konfigurowanie sprzętu do testowania.
Cenna miara jakości krótkich wibracji to współczynnik pulsu do dzwonienia (PRR), pokazany na rysunku 5. PRR to stosunek głównego impulsu, zdefiniowanego przez sygnał w oknie czasu, w którym amplituda maleje do 10% amplitudy szczytowej, do impulsu pierścieniowego, zdefiniowanego przez sygnał, w którym amplituda maleje z 10% amplitudy szczytowej do mniej niż 1% amplitudy szczytowej. Formuła PRR:
Więcej informacji o PRR znajdziesz w artykule Analiza przebiegu fali, a więcej o analizowaniu i porównywaniu wyników – w artykule Porównywanie wyników za pomocą mapy wydajności.
Rysunek 5. Definicja współczynnika tętna do dzwonka
Stosuj krótkie prymitywy jako informacje zwrotne dotyczące danych wejściowych użytkownika lub odtwarzaj je w dłuższych kompozycjach, aby tworzyć miękkie tekstury. Oznacza to, że są one zwykle często wywoływane i odtwarzane szybko po sobie. Odbierana intensywność pojedynczego krótkiego prymitywu może zwiększać intensywność efektu. Z tego powodu należy skalibrować pojedynczy element typu tick lub low tick za pomocą większej kompozycji, na przykład 100 kolejnych ticków.
Kliknij obiekt
Kliknięcie to silny, wyraźny efekt, który zwykle działa w pobliżu częstotliwości rezonansowej urządzenia, aby osiągnąć maksymalną moc w krótkim czasie. Jest ona silniejsza i głębsza niż inne prymitywy, a jej działanie jest maksymalnie intensywne.
Jeśli to możliwe, użyj przesterowania silnika na początku i aktywnego hamowania na końcu, aby uzyskać krótki czas wzrostu i obniżenia prędkości silnika. W przypadku niektórych silników użycie sygnału prostokątnego zamiast sygnału sinusoidalnego może przyspieszyć przyspieszanie. Na rysunku 6. widać przykładowy profil przyspieszania wyjścia dla komponentu kliknięcia:
Rysunek 6. Przykład profilu przyspieszania wyjścia dla prymitywu kliknięcia
Parametr | Wytyczna |
---|---|
Czas działania |
Docelowo: 12 ms Limit: < 30 ms |
Przyspieszenie wyjścia szczytowego |
Cel: 2 G Limit: > 1 G |
Częstotliwość | w przybliżeniu w częstotliwości rezonansowej. |
Element podstawowy „ptaszek” (jasny)
Tick primitive to ostry, krótki efekt, który zwykle działa w wyższym zakresie częstotliwości. Ten typ można też opisać jako kliknięcie o średniej intensywności o wyższej częstotliwości z krótkim ogonem. Te same wskazówki dotyczą uzyskiwania krótkiego czasu narastania za pomocą przesterowania silnika lub sygnału prostokątnego na potrzeby początkowego narastania oraz aktywnego hamowania w przypadku przesunięcia. Rysunek 7 przedstawia przykładowy profil przyspieszenia wyjściowego dla prymitywu tick:
Rysunek 7. Przykład profilu przyspieszania wyjścia dla prymitywu tick
Parametr | Wytyczna |
---|---|
Czas działania |
Docelowo: 5 ms Limit: < 20 ms |
Przyspieszenie wyjścia szczytowego |
Docelowo: połowa Limit: od 0,5 G do 1 G |
Częstotliwość |
Docelowo: 2-krotne rezonansowe częstotliwości Limit: < 500 Hz |
Podstawowy element znaku
Pierwotny dźwięk tyknięcia w niskim zakresie to łagodniejsza, słabsza wersja dźwięku tyknięcia w niskim zakresie, który działa w niższym zakresie częstotliwości, aby nadać efektowi większą gęstość. Ten prymityw można też opisać jako kliknięcie o średniej intensywności o niższej częstotliwości, które ma być używane wielokrotnie w celu dynamicznego wyświetlania informacji zwrotnych. Te same wskazówki dotyczą osiągania krótkiego czasu narastania za pomocą przesterowania silnika lub sygnału prostokątnego na potrzeby początkowego narastania. Rysunek 8 przedstawia przykładowy profil przyspieszenia wyjściowego dla prymitywu niskoczęstotliwościowego:
Rysunek 8. Przykład profilu przyspieszenia wyjścia dla prymitywu o niskiej częstotliwości
Parametr | Wytyczna |
---|---|
Czas działania |
Docelowo: 12 ms Limit: < 30 ms |
Przyspieszenie wyjścia szczytowego |
Cel: 1/4 Limit: od 0,2 G do 0,5 G |
Częstotliwość |
Docelowo: 2/3 częstotliwości rezonansowej Limit: < 100 Hz |
Elementy podstawowe Chirp
Pierwiastki ćwierkania można opisać za pomocą sygnałów wejściowych dotyczących poziomu napięcia i częstotliwości wibracji. Przyspieszenie, które silnik jest w stanie wygenerować w różnych zakresach częstotliwości, zależy od krzywej odpowiedzi częstotliwościowej aktuatora. Zakresy częstotliwości i poziomy napięcia muszą być dostosowane do poszczególnych urządzeń.
Powolne zwiększanie
Powolne wznoszenie to stopniowy wzrost amplitudy i częstliwości z łagodnym początkiem oraz stale wzrastającą intensywnością wibracji. Można go zastosować przez stały skanowanie amplitudy i częstotliwości za pomocą niższego zakresu częstotliwości, który działa poza rezonansem. Rysunek 9 przedstawia parametry wejściowe i przykładowy profil przyspieszenia danych wyjściowych w przypadku tej implementacji. (czerwona linia odpowiada etykietom amplitudy po lewej stronie i przedstawia, jak amplituda wibracji zmienia się w czasie. Niebieska linia odpowiada etykietom częstotliwości po prawej stronie i przedstawia, jak częstotliwość wibracji zmienia się w czasie.
Rysunek 9. Parametry wejściowe i przykład profilu przyspieszenia wyjściowego dla powolnego wzrostu
Jeśli odpowiedź częstotliwościowa silnika jest ograniczona (niewystarczająco odbiega od częstotliwości rezonansowej), alternatywną implementacją jest skanowanie sinusoidalne od 1/2 do 1 raza częstotliwości rezonansowej. Rezonans silnika przyczynia się do osiągnięcia szczytu sygnału na końcu.
Parametr | Wytyczna |
---|---|
Czas działania |
Cel: 500 ms Tolerancja: 20 ms |
Przyspieszenie wyjścia szczytowego |
Docelowo: 0,5 g Limit: od 0,5 G do 1 G |
Częstotliwość |
Docelowa wartość: 1/2 do 2/3 częstotliwości rezonansowej Alternatywnie: 1/2 do częstotliwości rezonansowej |
Szybki wzrost
Szybki wzrost to szybsze zwiększanie amplitudy i częstotliwości z łagodnym początkiem oraz stale rosnącą intensywnością wibracji. Docelowe wartości przyspieszenia i częstotliwości wibracji powinny być takie same jak w przypadku prymitywnego sygnału wolnego narastania, ale osiągane w krótszym czasie. Rysunek 10 przedstawia parametry wejściowe wibracji oraz przykładowy profil przyspieszenia wyjściowego dla prymitywu powolnego wzrostu. (czerwona linia odpowiada etykietom amplitudy po lewej stronie i przedstawia, jak amplituda wibracji zmienia się w czasie. Niebieska linia odpowiada etykietom częstotliwości po prawej stronie i przedstawia, jak częstotliwość wibracji zmienia się w czasie.
Rysunek 10. Parametry wejściowe i przykład profilu przyspieszenia wyjściowego dla szybkiego wzrostu
Parametr | Wytyczna |
---|---|
Czas działania |
Docelowo: 150 ms Tolerancja: 20 ms |
Przyspieszenie wyjścia szczytowego |
Cel: taki sam jak w Limit: taki sam jak w |
Częstotliwość |
Cel: taki sam jak w Opcja: taka sama jak w hotelu |
Szybki spadek
Szybkie opadanie to szybkie obniżanie amplitudy i częstotliwości z łagodnym początkiem. Jako punktu wyjścia możesz użyć wyższej częstotliwości, gdy silnik przyspiesza, aby osiągnąć maksymalne przyspieszenie wyjściowe. Częstotliwość powinna stale spadać w całym zakresie skanowania, nawet w czasie narastania. Rysunek 11 przedstawia parametry wejściowe i przykładowy profil przyspieszenia danych wyjściowych w przypadku tej implementacji. (czerwona linia odpowiada etykietom amplitudy po lewej stronie i przedstawia, jak amplituda wibracji zmienia się w czasie. Niebieska linia odpowiada etykietom częstotliwości po prawej stronie i przedstawia, jak częstotliwość wibracji zmienia się w czasie.
Rysunek 11. Parametry wejściowe i przykład profilu przyspieszenia wyjściowego dla szybkiego spadku
Parametr | Wytyczna |
---|---|
Czas działania |
Docelowo: 100 ms Tolerancja: 20 ms |
Przyspieszenie wyjścia szczytowego |
Docelowo: 1 G. Limit: od 0,5 G do 2 G |
Częstotliwość |
Docelowa wartość: 2 do 1 raza częstotliwość rezonansowa |
Element podstawowy Thud
Thud to głośny, niski efekt perkusyjny, który symuluje fizyczne wrażenie pukania w puste drewno. Ten prymityw działa w zakresie niskiej częstotliwości, podobnie jak prymityw low tick, aby zapewnić większą płynność efektu. Możesz zaimplementować dźwięk uderzenia jako spadek amplitudy i częstotliwości w niższym zakresie częstotliwości (najlepiej poniżej 100 Hz). Rysunek 12 przedstawia parametry wejściowe i przykładowy profil przyspieszenia wyjściowego w przypadku tej implementacji. (czerwona linia odpowiada etykietom amplitudy po lewej stronie i przedstawia, jak amplituda wibracji zmienia się w czasie. Niebieska linia odpowiada etykietom częstotliwości po prawej stronie i przedstawia, jak częstotliwość wibracji zmienia się w czasie.
Rysunek 12. Parametry wejściowe i przykład profilu przyspieszenia wyjściowego dla prymitywu dźwięku
Jeśli odpowiedź częstotliwościowa silnika jest ograniczona, można zastosować alternatywne rozwiązanie, zaczynając od sygnału napędowego o pełnej intensywności przy częstotliwości rezonansowej i zmniejszając ją do najniższej możliwej częstotliwości, którą można jeszcze wyczuć. Aby wibracje były odczuwalne, może być konieczne zwiększenie intensywności sygnału napędu przy niższej częstotliwości.
Parametr | Wytyczna |
---|---|
Czas działania |
Docelowo: 300 ms Tolerancja: 20 ms |
Przyspieszenie wyjścia szczytowego |
Docelowo: 0,25 g Limit: od 0,2 G do 0,5 G |
Częstotliwość |
Docelowa wartość: 1/2 do 1/3 częstotliwości rezonansowej Alternatywa: 1 x do 1/2 częstotliwości rezonansowej |
Podstawowy obiekt wirowania
Obrót symuluje szybkie obracanie się wokół własnej osi z lekko zaznaczonym środkiem. Obrócenie można zaimplementować, przesuwając amplitudę i częstotliwość niezależnie, w przeciwnych kierunkach, a następnie odwrotnie. Ważne jest używanie niższego zakresu częstotliwości (najlepiej poniżej 100 Hz). Na rysunku 13 przedstawiono parametry wejściowe i przykładowy profil przyspieszenia wyjściowego dla tej implementacji. (czerwona linia odpowiada etykietom amplitudy po lewej stronie i przedstawia, jak amplituda wibracji zmienia się w czasie. Niebieska linia odpowiada etykietom częstotliwości po prawej stronie i przedstawia, jak częstotliwość wibracji zmienia się w czasie.
Aby uzyskać efekt wirowania i niestabilności, zalecamy wywołanie prymitywu wirowania 2 razy z rzędu lub 3 razy w kompozycjach.
Jeśli odpowiedź częstotliwościowa silnika jest ograniczona, alternatywną implementacją jest szybkie przeskanowanie sinusa od 1/2x do 1x częstotliwości rezonansowej i z powrotem. Rezonans silnika automatycznie nadaje sygnałowi akcent w środku.
Rysunek 13. Parametry wejściowe i przykład profilu przyspieszenia wyjściowego dla prymitywu obrotu
Parametr | Wytyczna |
---|---|
Czas działania |
Docelowo: 150 ms Tolerancja: 20 ms |
Przyspieszenie wyjścia szczytowego |
Docelowo: 0,5 g Limit: od 0,25 g do 0,75 g |
Częstotliwość |
Docelowo: 2/3 do 1/3, a potem z powrotem do 1/2 częstotliwości rezonansowej Alternatywa: 2/3 do 1 x, a następnie z powrotem do 1/2 częstotliwości rezonansowej |