Element dm. do czynników wibracyjnych

Zanim zaprojektujesz efekty haptyczne na urządzeniu z Androidem, warto zastanowić się, omówienie działania silników wibracyjnych.

Ilustracja komponentów układu haptycznego LRA

Najpowszechniej stosowane są aktuatory wibracyjne (LRA). Każdy LRA składa się z cewki głosowej dociśniętej do magnetycznego magnesu, który jest do sprężyny. Napięcie prądu przemiennego zastosowane do cewki telefonicznej tworzy siła elektromagnetyczna, która powoduje ruch masy. Wiosna zapewnia przywracając siłę, która powoduje, że masa powróciła do pozycji początkowej. ruch masy w obie strony powoduje wibracje LRA. Mają częstotliwość rezonansu, przy której sygnał wyjściowy jest maksymalny.

Przy takim samym napięciu wejściowym dla 2 różnych częstotliwości drgania amplitudy mogą być różne. W miarę oddalania się od częstotliwości LRA częstotliwości rezonansowej, tym niższa jest amplituda wibracji.

Jedną z typowych funkcji LRA na urządzeniach jest symulowanie działania przycisku. kliknij szklaną powierzchnię, która nie reaguje. Zachęcają użytkownika do interakcji bardziej naturalny. Po zastosowaniu do pisania na klawiaturze wirtualnej można kliknąć zwiększyć szybkość pisania i zmniejszyć liczbę błędów. Wyraźny i wyraźny sygnał opinii o kliknięciach jest zwykle krótszy niż 10-20 milisekund. Dobre kliknięcie wymaga pewnej wiedzy o LRA używanej na urządzeniu. Dlatego poleganie na Takie prefabrykowane fale zapewniają najlepszą informację po kliknięciu. Za pomocą ze stałymi udostępnianymi przez platformę każdorazowo przy każdym niezbędną.

Efekty haptyczne osiągane w urządzeniu zależą od wibracji mechanizmu uruchamiania i jego sterownika. Przetworniki haptyczne obejmujące nadmiarowość i aktywność funkcje hamowania mogą skrócić czas nachylenia i dzwonienia LRA, co przekłada się responsywną i wyraźną wibracją. Dla zilustrowania tego twierdzenia zobaczmy, a wzór fali działa na urządzeniu ogólnym.

Kotlin

val timings: LongArray = longArrayOf(50, 50, 50, 50, 50, 100, 350, 250)
val amplitudes: IntArray = intArrayOf(77, 79, 84, 99, 143, 255, 0, 255)
val repeatIndex = -1 // Do not repeat.

vibrator.vibrate(VibrationEffect.createWaveform(timings, amplitudes, repeatIndex))

Java

long[] timings = new long[] { 50, 50, 50, 50, 50, 100, 350, 250 };
int[] amplitudes = new int[] { 77, 79, 84, 99, 143, 255, 0, 255 };
int repeatIndex = -1 // Do not repeat.

vibrator.vibrate(VibrationEffect.createWaveform(timings, amplitudes, repeatIndex));

Na wykresie poniżej pokazana jest fala odpowiadająca pokazanym fragmentom kodu powyżej.

Wykres wejściowej fali wejściowej funkcji schodkowej

Odpowiednie przyspieszenie jest pokazane poniżej:

Wykres rzeczywistej zmierzonej fali przedstawiający więcej naturalnych przejść między poziomami

Zwróć uwagę, że przyspieszenie rośnie stopniowo, a nie nagle, zawsze gdy krokowa zmiana amplitudy we wzorcu (np. przy 0 ms, 150 ms, 200 ms, 250 ms, 700ms). Przy każdej zmianie amplitudy występuje też zbyt widać „dzwonienie”, które trwa co najmniej 50 ms, gdy amplituda sygnału wejściowego nagle wzrasta. spada do 0.

Ten wzorzec haptyczny można poprawić, zwiększając lub zmniejszając amplitudy stopniowo, aby uniknąć przekroczenia limitu czasu i skrócenia czasu dzwonienia. Poniżej przedstawiono wartości wykresów fali i przyspieszenia poprawionej wersji.

Kotlin

val timings: LongArray = longArrayOf(
    25, 25, 50, 25, 25, 25, 25, 25, 25, 25, 75, 25, 25,
    300, 25, 25, 150, 25, 25, 25
)
val amplitudes: IntArray = intArrayOf(
    38, 77, 79, 84, 92, 99, 121, 143, 180, 217, 255, 170, 85,
    0, 85, 170, 255, 170, 85, 0
)
val repeatIndex = -1 // Do not repeat.

vibrator.vibrate(VibrationEffect.createWaveform(timings, amplitudes, repeatIndex))

Java

long[] timings = new long[] {
        25, 25, 50, 25, 25, 25, 25, 25, 25, 25, 75, 25, 25,
        300, 25, 25, 150, 25, 25, 25
    };
int[] amplitudes = new int[] {
        38, 77, 79, 84, 92, 99, 121, 143, 180, 217, 255, 170, 85,
        0, 85, 170, 255, 170, 85, 0
    };
int repeatIndex = -1; // Do not repeat.

vibrator.vibrate(VibrationEffect.createWaveform(timings, amplitudes, repeatIndex));

Wykres fali wejściowej z dodatkowymi krokami

Wykres zmierzonej fali ukazujący płynniejsze przejścia

Z tego powodu osiągnięcie efektu haptycznego na urządzeniu z Androidem wymaga więcej niż podając wartość częstotliwości i amplitudy. Zaprojektowanie efekt haptyczny od podstaw bez pełnego dostępu do specyfikacji inżynieryjnych mechanizmu wibracyjnego i sterownika. Interfejsy API Androida zapewniają stałe, które umożliwiają:

  • Stosuj wyraźne efekty i elementy podstawowe.

  • Połącz je, aby uzyskać nowe efekty haptyczne.

Te wstępnie zdefiniowane stałe i elementy haptyczne mogą znacznie przyspieszyć Twoją pracę a jednocześnie zapewnia wysoką jakość reakcji haptycznych.