Vibrationsschalter Grundierung

Bevor Sie auf einem Android-Gerät Haptische Effekte entwerfen, sollten Sie sich einen Überblick über die Funktionsweise von Vibrationsantrieben.

Abbildung der Komponenten einer haptischen LRA

Die am häufigsten verwendeten Vibrationsaktuatoren sind Linear Resonant Actuators (LRAs). Jedes LRA besteht aus einer Schwingspule, die gegen eine magnetische bewegte Masse gedrückt wird, die an einer Feder befestigt ist. Mit einer Wechselspannung an die Schwingspule entsteht ein elektromagnetische Kraft, die eine Bewegung der Masse bewirkt. Die Feder sorgt dafür, Wiederherstellungskraft, die die Masse in ihre Ausgangsposition zurückkehrt. Die Eine Rück- und Vorwärtsbewegung der Masse führt dazu, dass das LRA vibriert. Sie haben eine Resonanzfrequenz, mit der die Ausgabe maximal ist.

Bei gleicher Eingangsspannung bei zwei verschiedenen Frequenzen ergibt die Vibrationsausgabe Amplituden unterschiedlich sein können. Je weiter die Frequenz von den LRAs entfernt ist, Resonanzfrequenz, desto geringer ist ihre Vibrations amplitude.

Eine häufige Funktion von LRAs in einem Gerät besteht darin, das Gefühl einer Schaltfläche zu simulieren auf eine nicht reagierende Glasoberfläche. Sie sorgt dafür, dass sich die Nutzenden natürlicher. Bei Anwendung auf die Eingabe auf einer Bildschirmtastatur kann die Eingabegeschwindigkeit erhöhen und Fehler reduzieren. Ein klares und klares Feedback-Signal für Klicks liegt normalerweise unter 10 bis 20 Millisekunden. Einen guten Klick erzielen erfordert Kenntnisse über die LRA, die auf einem Gerät verwendet wird. Deshalb ist es so wichtig, vorgefertigte Wellenformen liefern das beste Feedback für einen Klick. Sie können mit den von der Plattform bereitgestellten Konstanten, wenn ein Klick-Feedback erforderlich.

Die haptischen Effekte, die in einem Gerät möglich sind, werden sowohl durch die und dessen Treiber. Haptische Treiber wie Overdrive und aktive und Bremsfunktionen die Anstiegszeit und das Klingeln der LRAs verringern, was zu einer stärkeren reaktionsschnelles und deutliches Vibrieren. Sehen wir uns zur Veranschaulichung an, wie eine benutzerdefinierte das Wellenformmuster auf einem generischen Gerät verhält.

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));

Das folgende Diagramm zeigt die Wellenform, die den gezeigten Code-Snippets entspricht oben.

Darstellung der Eingabewellenform der Schrittfunktion

Die entsprechende Beschleunigung ist unten zu sehen:

Darstellung der tatsächlich gemessenen Wellenform mit mehr organischen Übergängen zwischen den Stufen

Beachten Sie, dass die Beschleunigung allmählich und nicht plötzlich zunimmt, wenn eine schrittweise Änderung der Amplitude im Muster (z.B. bei 0 ms, 150 ms, 200 ms, 250 ms, 700ms). Es gibt auch eine Überlappung bei jedem Schrittänderung der Amplitude ist ein sichtbares „Klingeln“, das mindestens 50 ms dauert, wenn die Eingabe amplitude plötzlich auf 0 sinkt.

Dieses haptische Muster kann verbessert werden, indem die Amplituden erhöht und verringert werden. schrittweise, um eine Überschreitung zu vermeiden und die Klingeldauer zu reduzieren. Nachfolgend sehen Sie die Wellenform- und Beschleunigungsdiagramme der überarbeiteten Version.

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));

Darstellung der Eingabewellenform mit zusätzlichen Schritten

Darstellung der gemessenen Wellenform mit weicheren Übergängen

Daraus folgt, dass für einen haptischen Effekt auf einem Android-Gerät mehr als Frequenz- und Amplitudenwert angeben. Es ist keine leichte Aufgabe, Haptikeffekt von Grund auf neu, ohne Zugriff auf die technischen Spezifikationen des Vibrationsantriebs und des Treibers. Android-APIs bieten Konstanten, können Sie Folgendes tun:

  • Führe klare Effekte und Primitive durch.

  • Sie können sie verketten, um neue haptische Effekte zu erstellen.

Diese vordefinierten haptischen Konstanten und Primitive können Ihre Arbeit erheblich beschleunigen. und gleichzeitig für qualitativ hochwertige haptische Effekte sorgen.