swirl logo

About     Archive     Feed     Impressum

Android: Vibrationsalarm verwenden

Hintergrund

Der Vibrationsalarm eignet sich grundsätzlich, um nahezu lautlos den Besitzer des Smartphones auf ein Ereignis hinzuweisen.

Implementierung

Die Vibrationsfunktion ist grundsätzlich mit nur wenigen Zeilen Code integriert und bietet dennoch einen hohen Grad an Flexibilität bezüglich dem Vibrationsmuster.

Zum einem lässt sich sowohl ein Vibrationsmuster definieren, als auch eine einmalige Zeitspanne definieren, in der vibriert werden soll.

In beiden Fällen jedoch wird die Berechtigung zur Vibration benötigt:

<uses-permission android:name="android.permission.VIBRATE"/>

Einmalige Vibration

Die einmalige Vibration eignet sich um ein haptisches Feedback abzubilden. Dazu genügt es die zu vibrierende Zeitspanne in Millisekunden anzugeben:

Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(300);  // Vibration für 300 Millisekunden

Vibrationsmuster

Zu Benachrichtigungszwecken eignet sich besonderns, ein Vibrationsmuster anzuwenden, welches den Benutzer auf ein Ereignis hinweist.

Hierbei lässt sich das Muster der Vibration in einem long-Array ausdrücken:

long pattern[]={0,200,400,600,800};

Der erste long (0) definiert die Zeitspanne in Millisekunden bis zur Aktivierung der Vibration. Alle folgenden Variablen definieren abwechselnd die Zeitspanne in Millisekunden der aktiven Vibration bzw. der dazwischenliegenden Pause.

Das abgebildete Pattern beschreibt dabei konkret folgendes Muster:

Über ein weiteres Argument lässt sich nun definieren, ob dieses Muster wiederholt werden soll bzw. falls ja, welche Position der Startpunkt der Wiederholung darstellt.

 
vibrator.vibrate(pattern, modus); // modus == -1: Keine Wiederholung; modus == 0: Wiederholung ab Position 1 ... 

Um Zugriff auf die Vibrationsfunktion zu erhalten gilt es nun den zugehörigen System-Service zu beziehen:

 
long pattern[] = { 0, 100, 200, 300, 400 };
Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(pattern, 0);

Erfolgt eine Wiederholung des Vibrationsmusters, muss entsprechend der Abbruch der Vibration herbeigeführt werden. Dies könnte klassischerweise das Annehmen eines Telefonats sein und erfolgt mit Aufruf von cancel():

 
vibrator.cancel();
Hire me!