Stałe i elementy pierwotne haptyczne są zdefiniowane przez HAL wibratora i mapowane przez platformę Android na publiczne interfejsy API. Aby sprawdzić, czy urządzenie spełnia minimalne wymagania dotyczące wdrożenia haptyki:
Rysunek 2. Wdrażanie efektów
Rysunek 3. Implementowanie elementów podstawowych
Wdrażanie stałych
Stałe haptyczne w klasie VibrationEffect mogą być używane przez programistów za pomocą metody VibrationEffect.createPredefined(). Sprawdź stan implementacji tych stałych haptycznych.
Stałe haptyczne | Lokalizacje i podsumowania |
---|---|
EFFECT_TICK , EFFECT_CLICK ,
EFFECT_HEAVY_CLICK ,
EFFECT_DOUBLE_CLICK |
VibrationEffect
classStałe haptyczne w VibrationEffect nie obejmują żadnych zdarzeń wejściowych i nie mają elementów interfejsu. Stałe obejmują pojęcie poziomów energii, np. EFFECT_CLICK i EFFECT_HEAVY_CLICK , które są wywoływane przez
createPredefined() . |
Alternatywne wibracje opisane poniżej są wykonywane na urządzeniach, które nie implementują stałych VibrationEffect
. Zalecamy zaktualizowanie tych konfiguracji, aby
zapewnić optymalne działanie na takich urządzeniach.
EFFECT_CLICK
Wibracje o kształcie fali utworzone za pomocą funkcji
VibrationEffect.createWaveform
i czasów skonfigurowanych wframeworks/base/core/res/res/values/config.xml##config_virtualKeyVibePattern
.EFFECT_HEAVY_CLICK
Wibracje o kształcie fali utworzone za pomocą funkcji
VibrationEffect.createWaveform
i czasów skonfigurowanych wframeworks/base/core/res/res/values/config.xml##config_longPressVibePattern
.EFFECT_DOUBLE_CLICK
Wibracje o kształcie fali utworzone za pomocą funkcji
VibrationEffect.createWaveform
i czasów (0, 30, 100, 30).EFFECT_TICK
Wibracje o kształcie fali utworzone za pomocą funkcji
VibrationEffect.createWaveform
i czasów skonfigurowanych wframeworks/base/core/res/res/values/config.xml##config_clockTickVibePattern
.
Rysunek 4. Implementowanie stałych opinii
Stałe haptyczne w klasie HapticFeedbackConstants mogą być używane przez deweloperów za pomocą metody View.performHapticFeedback(). Sprawdź stan tych stałych opinii publicznych:
Stałe haptyczne | Lokalizacje i podsumowania |
---|---|
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 classStałe haptyczne w HapticFeedbackConstants zdarzeniach wejściowych
pomagają w przypadku niektórych elementów interfejsu, takich jak KEYBOARD_PRESS i KEYBOARD_RELEASE , które są wywoływane przez performHapticFeedback() . |
Implementowanie elementów podstawowych
Prymitywne wibracje w VibrationEffect.Composition
mają skalowalną intensywność, którą deweloperzy mogą wykorzystywać za pomocą addPrimitive(int primitiveId, float scale, int delay)
.
Elementy pierwotne można podzielić na 2 kategorie:
Krótkie elementy: elementy o krótkim czasie trwania, zwykle poniżej 20 ms. Są to
CLICK
,TICK
iLOW_TICK
.Chirp primitives: primitives o różnej amplitudzie i częstotliwości, zwykle o dłuższym czasie trwania niż krótkie primitives. Są to
SLOW_RISE
,QUICK_RISE
,QUCK_FALL
,THUD
iSPIN
.
Krótkie elementy podstawowe
Krótkie elementy pierwotne można opisać za pomocą profilu przyspieszenia wyjściowego silnika wibracyjnego. Częstotliwość bezwzględna różni się w przypadku poszczególnych elementów pierwotnych, w zależności od częstotliwości rezonansowej siłownika. Więcej informacji o konfiguracji sprzętu i narzędzi do pomiaru mocy wyjściowej znajdziesz w artykule Konfigurowanie sprzętu testowego.
Wartościowym wskaźnikiem jakości krótkich wibracji jest stosunek impulsu do dzwonka (PRR), pokazany na rysunku 5. PRR to stosunek głównego impulsu, zdefiniowanego przez sygnał w oknie czasowym, w którym amplituda spada do 10% amplitudy szczytowej, do impulsu dzwonka, zdefiniowanego przez sygnał, w którym amplituda spada z 10% amplitudy szczytowej do mniej niż 1% amplitudy szczytowej. Wzór na PRR to:
Więcej informacji o PRR znajdziesz w artykule Analizowanie przebiegu, a o analizowaniu i porównywaniu wyników – w artykule Porównywanie wyników za pomocą mapy skuteczności.
Rysunek 5. Definicja stosunku impulsów do dzwonienia
Stosuj krótkie elementy pierwotne 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 w szybkiej kolejności. Postrzegana intensywność pojedynczego krótkiego prymitywu może zwiększać intensywność większego efektu. Z tego powodu skalibruj pojedynczy znacznik lub mały znacznik pierwotny za pomocą większej kompozycji, np. 100 kolejnych znaczników.
Kliknij element podstawowy
Kliknięcie to wyraźny efekt, który zwykle występuje w pobliżu częstotliwości rezonansowej urządzenia, aby w krótkim czasie osiągnąć maksymalną moc wyjściową. Jest silniejszy i głębszy niż inne kształty podstawowe, a jego intensywność jest maksymalna.
Jeśli to możliwe, używaj na początku trybu overdrive silnika, a na końcu aktywnego hamowania, aby uzyskać krótki czas wzrostu i spadku mocy silnika. W przypadku niektórych silników użycie fali prostokątnej zamiast sinusoidalnej może przyspieszyć przyspieszenie. Na rysunku 6 przedstawiono przykładowy profil przyspieszenia wyjścia dla komponentu kliknięcia:
Rysunek 6. Przykład profilu przyspieszenia wyjściowego dla elementu kliknięcia
Parametr | Wytyczna |
---|---|
Czas działania |
Cel: 12 ms Limit: < 30 ms |
Maksymalne przyspieszenie wyjściowe |
Cel: 2 G Limit: > 1 GB |
Częstotliwość | W przybliżeniu przy częstotliwości rezonansowej |
Element podstawowy znacznika (jasny znacznik)
Prymityw „tick” to krótki, ostry efekt, który zwykle działa w wyższym zakresie częstotliwości. Ten typ kliknięcia można też opisać jako kliknięcie o średniej intensywności, które występuje z większą częstotliwością i ma krótki ogon. Te same wskazówki dotyczą uzyskiwania krótkiego czasu narastania za pomocą przesterowania silnika lub fali prostokątnej na początku oraz aktywnego hamowania przy przesunięciu. Na rysunku 7 przedstawiono przykładowy profil przyspieszenia dla elementu tick:
Rysunek 7. Przykład profilu przyspieszenia wyjściowego dla elementu tick
Parametr | Wytyczna |
---|---|
Czas działania |
Cel: 5 ms Limit: < 20 ms |
Maksymalne przyspieszenie wyjściowe |
Cel: połowa z Limit: od 0,5 G do 1 G |
Częstotliwość |
Cel: 2-krotność częstotliwości rezonansowej Limit: < 500 Hz |
Podstawowy znacznik o niskiej wartości
Słabe kliknięcie to łagodniejsza i słabsza wersja lekkiego kliknięcia, która działa w niższym zakresie częstotliwości, aby nadać efektowi większą głębię. Ten rodzaj wibracji można też opisać jako kliknięcie o średniej intensywności i niskiej częstotliwości, które ma być używane wielokrotnie w celu dynamicznego przekazywania informacji zwrotnych. Te same wskazówki dotyczą uzyskiwania krótkiego czasu narastania za pomocą przesterowania silnika lub fali prostokątnej na początku. Rysunek 8 przedstawia przykładowy profil przyspieszenia wyjściowego dla elementu low_tick:
Rysunek 8. Przykładowy profil przyspieszenia wyjściowego dla elementu o niskiej częstotliwości
Parametr | Wytyczna |
---|---|
Czas działania |
Cel: 12 ms Limit: < 30 ms |
Maksymalne przyspieszenie wyjściowe |
Cel: 1/4 Limit: od 0,2 G do 0,5 G |
Częstotliwość |
Cel: 2/3 częstotliwości rezonansowej Limit: < 100 Hz |
Elementy podstawowe Chirp
Prymitywy Chirp można opisać za pomocą sygnałów wejściowych dotyczących poziomu napięcia i częstotliwości wibracji. Przyspieszenie, jakie silnik może osiągnąć w różnych zakresach częstotliwości, zależy od krzywej odpowiedzi częstotliwościowej siłownika. Zakresy częstotliwości i poziomy napięcia należy dostosowywać do każdego urządzenia z osobna.
Podstawowy element powolnego wzrostu
Powolny wzrost to powolne zwiększanie amplitudy i częstotliwości z łagodnym początkiem i stale rosnącą intensywnością wibracji. Można to osiągnąć przez równomierne przesuwanie zarówno amplitudy, jak i częstotliwości, przy użyciu niższego zakresu częstotliwości, który działa poza rezonansem. Ilustracja 9 przedstawia parametry wejściowe i przykładowy profil przyspieszenia wyjściowego dla tej implementacji. (Czerwona linia odpowiada etykietom amplitudy po lewej stronie i pokazuje, jak amplituda drgań zmienia się w czasie. Niebieska linia odpowiada etykietom częstotliwości po prawej stronie i pokazuje, jak częstotliwość wibracji zmienia się w czasie).
Rysunek 9. Parametry wejściowe i przykładowy profil przyspieszenia wyjściowego dla wolnego wzrostu
Jeśli odpowiedź częstotliwościowa silnika jest ograniczona (nie jest wystarczająco silna poza częstotliwością rezonansową), alternatywnym rozwiązaniem jest przebieg sinusoidalny od 1/2x do 1x 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 |
Maksymalne przyspieszenie wyjściowe |
Cel: 0,5 G Limit: od 0,5 G do 1 G |
Częstotliwość |
Docelowy zakres: od 1/2 do 2/3 częstotliwości rezonansowej Alternatywa: 1/2 częstotliwości rezonansowej |
Szybki wzrost
Szybki wzrost to szybsze zwiększanie amplitudy i częstotliwości w górę z łagodnym początkiem i stale rosnącą intensywnością wibracji. Docelowe wartości przyspieszenia i częstotliwości wibracji powinny być takie same jak w przypadku powolnego wzrostu, ale osiągane w krótszym czasie. Na rysunku 10 pokazano parametry wejściowe wibracji i przykładowy profil przyspieszenia wyjściowego dla prymitywu powolnego wzrostu. (Czerwona linia odpowiada etykietom amplitudy po lewej stronie i pokazuje, jak amplituda drgań zmienia się w czasie. Niebieska linia odpowiada etykietom częstotliwości po prawej stronie i pokazuje, jak częstotliwość wibracji zmienia się w czasie).
Rysunek 10. Parametry wejściowe i przykładowy profil przyspieszenia wyjściowego dla szybkiego wzrostu
Parametr | Wytyczna |
---|---|
Czas działania |
Wartość docelowa: 150 ms Tolerancja: 20 ms |
Maksymalne przyspieszenie wyjściowe |
Cel: taki sam jak w przypadku Limit: taki sam jak w przypadku |
Częstotliwość |
Cel: taki sam jak w przypadku Alternatywa: taka sama cena jak w hotelu |
Szybki spadek
Szybki spadek to szybki spadek amplitudy i częstotliwości z łagodnym początkiem. Możesz użyć wyższej częstotliwości jako punktu wyjścia, gdy silnik zwiększa prędkość, aby osiągnąć maksymalne przyspieszenie wyjściowe. Częstotliwość powinna stale maleć w całym zakresie, nawet w czasie narastania. Na ilustracji 11 pokazano parametry wejściowe i przykładowy profil przyspieszenia wyjściowego dla tej implementacji. (Czerwona linia odpowiada etykietom amplitudy po lewej stronie i pokazuje, jak amplituda drgań zmienia się w czasie. Niebieska linia odpowiada etykietom częstotliwości po prawej stronie i pokazuje, jak częstotliwość wibracji zmienia się w czasie).
Rysunek 11. Parametry wejściowe i przykładowy profil przyspieszenia wyjściowego dla szybkiego upadku
Parametr | Wytyczna |
---|---|
Czas działania |
Cel: 100 ms Tolerancja: 20 ms |
Maksymalne przyspieszenie wyjściowe |
Cel: 1 G Limit: od 0,5 G do 2 G |
Częstotliwość |
Docelowa: 2-krotność do 1-krotności częstotliwości rezonansowej |
Element podstawowy „Thud”
Odgłos stukania to niski, perkusyjny efekt, który symuluje fizyczne odczucie stukania w puste drewno. Ten element działa w zakresie niskich częstotliwości, podobnie jak element „low tick”, aby nadać efektowi większą głębię. Możesz zaimplementować dźwięk uderzenia jako opadającą amplitudę i częstotliwość w niższym zakresie częstotliwości (najlepiej poniżej 100 Hz). Na rysunku 12 pokazano parametry wejściowe i przykładowy profil przyspieszenia wyjściowego dla tej implementacji. (Czerwona linia odpowiada etykietom amplitudy po lewej stronie i pokazuje, jak amplituda drgań zmienia się w czasie. Niebieska linia odpowiada etykietom częstotliwości po prawej stronie i pokazuje, jak częstotliwość wibracji zmienia się w czasie).
Rysunek 12. Parametry wejściowe i przykładowy profil przyspieszenia wyjściowego dla elementu pierwotnego „thud”
Jeśli pasmo przenoszenia silnika jest ograniczone, alternatywnym rozwiązaniem jest rozpoczęcie od sygnału o pełnej intensywności przy częstotliwości rezonansowej i obniżenie go do najniższej możliwej częstotliwości, która jest nadal wyczuwalna. Takie podejście może wymagać zwiększenia intensywności sygnału sterującego przy niższej częstotliwości, aby można było poczuć wibracje.
Parametr | Wytyczna |
---|---|
Czas działania |
Cel: 300 ms Tolerancja: 20 ms |
Maksymalne przyspieszenie wyjściowe |
Cel: 0,25 G Limit: od 0,2 G do 0,5 G |
Częstotliwość |
Docelowa: od 1/2 do 1/3 częstotliwości rezonansowej Alternatywa: 1x do 1/2 częstotliwości rezonansowej |
Podstawowy element wirowania
Obrót symuluje szybki ruch w górę i w dół z lekkim akcentem na środku. Obrót można uzyskać, zmieniając amplitudę i częstotliwość niezależnie od siebie, w przeciwnych kierunkach, a następnie wykonując ruch w przeciwną stronę. Ważne jest, aby używać niższego zakresu częstotliwości (najlepiej poniżej 100 Hz). Na rysunku 13 pokazano parametry wejściowe i przykładowy profil przyspieszenia wyjściowego dla tej implementacji. (Czerwona linia odpowiada etykietom amplitudy po lewej stronie i pokazuje, jak amplituda drgań zmienia się w czasie. Niebieska linia odpowiada etykietom częstotliwości po prawej stronie i pokazuje, jak częstotliwość wibracji zmienia się w czasie).
Zalecamy, aby w celu uzyskania efektu wirowania i niestabilności prymityw obrotu był wywoływany 2 razy z rzędu lub 3 razy w kompozycjach.
Jeśli pasmo przenoszenia silnika jest ograniczone, alternatywnym rozwiązaniem jest szybkie przesuwanie częstotliwości 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ładowy profil przyspieszenia wyjściowego dla podstawowej animacji obrotu
Parametr | Wytyczna |
---|---|
Czas działania |
Wartość docelowa: 150 ms Tolerancja: 20 ms |
Maksymalne przyspieszenie wyjściowe |
Cel: 0,5 G Limit: od 0,25 G do 0,75 G |
Częstotliwość |
Docelowa: od 2/3 do 1/3, a potem z powrotem do 1/2 częstotliwości rezonansowej Alternatywa: 2/3 – 1x, a potem z powrotem do 1/2 częstotliwości rezonansowej |