In diesem Android-Kurztipp erfahren Sie zwei neue Methoden, um Benutzer auf Ereignisse aufmerksam zu machen: Vibration und LED- / Trackball-Beleuchtung. Diese Methoden werden als "Hardware-Indikatoren" bezeichnet und werden in verschiedenen Android-Apps sparsam eingesetzt, um dringende Informationen oder aktuelle Nachrichten zu übermitteln. Dieser Artikel steht in enger Verbindung mit Android SDK: Verwenden von Warnmeldungen, Toasts und Benachrichtigungen.
Vibrationen werden von einem dedizierten Service auf Systemebene gesteuert: dem Vibrator Service. Um diesen Dienst nutzen zu können, muss Ihre Anwendung jedoch das anfordern VIBRIEREN Erlaubnis, die zuerst in deklariert werden muss AndroidManifest.xml, wie so (Zeile 5):
Erstellen Sie zunächst eine Instanz von Vibrator, indem Sie getSystemService () aufrufen:
Vibrator vibr = (Vibrator) getSystemService (Context.VIBRATOR_SERVICE);
Jetzt können Sie mit den Methoden des Objekts beginnen. Insgesamt gibt es drei:
Vibration für eine bestimmte Dauer (in Millisekunden).
Mit dem angegebenen Muster vibrieren und optional wiederholen (unten erklärt).
Aktuelle Schwingungen abbrechen.
Bezüglich vibrieren (langes [] Muster, int Wiederholung): Sie müssen ein Ein-Aus-Muster in Form eines übergeben lange[] Array. Der erste Wert gibt an, wie lange gewartet werden muss, wie lange dann zu vibrieren ist und so weiter. Das wiederholen Der Parameter kann entweder "-1" sein, wenn er nicht wiederholt werden soll, oder den Index des Pattern-Arrays, an dem wiederholt werden soll. Wenn Sie möchten, dass es wiederholt wird, vergessen Sie nicht, es irgendwann abzubrechen, um ein unbegrenztes Wiederholen zu verhindern.
Das folgende Beispiel veranschaulicht die Verwendung beider vibrate () -Methoden:
Vibrator vibr = (Vibrator) getSystemService (Context.VIBRATOR_SERVICE); Vibrationsvibrat (500); // Eine halbe Sekunde lang vibrieren (500 Millisekunden) long [] pattern = 400, 200; vibr.vibrate (Muster 0); // 400ms Pause, 200ms Vibration. Beginnen Sie bei Index 0 zu wiederholen.
In der Regel sind Vibrationen mit dem Empfang eines Telefonanrufs oder einer anderen wichtigen Systembenachrichtigung verbunden, die Benutzer erwarten. Vibrationen fordern die Aufmerksamkeit der Benutzer. Selbst wenn sich das Telefon des Benutzers im Standby-Modus befindet oder es eingesteckt ist, handelt es sich bei Vibrationen um eine Art Benachrichtigung, die die größte Garantie dafür bietet, dass der Benutzer etwas bemerkt und sein Telefon überprüfen möchte, um herauszufinden, was passiert. Sie wollen definitiv nicht, dass vielbeschäftigte Personen alle paar Minuten durch einen zufälligen Alarm geärgert werden, da die Wahrscheinlichkeit besteht, dass sie die App wahrscheinlich vollständig entfernen!
Wann und wie sollten Sie Vibrationen einsetzen? Die einfache Antwort: Nur wenn dies zu einer besseren Benutzererfahrung beiträgt. Selbst dann ist es eine gute Praxis, eine Art Einstellungsfenster zu bieten, in dem Benutzer die Verwendung in Ihrer Anwendung deaktivieren können. Ein Beispiel für eine geeignete Verwendung dieses Dienstes ist eine Kalender-App, die den Benutzer über ein bevorstehendes Ereignis informiert.
Zusammenfassend verwenden Sie Vibrationen nur für geeignete Zwecke. Überbeanspruchen Sie sie nicht und halten Sie sie kurz, es sei denn, die Anwendung erfordert sofortige Aufmerksamkeit.
Beginnen Sie mit einer Instanz von NotificationManager, einem anderen Kernsystemdienst:
NotificationManager notifMgr = (NotificationManager) getSystemService (NOTIFICATION_SERVICE);
Als Nächstes erstellen Sie ein neues Benachrichtigungsobjekt:
Benachrichtigungsbenachrichtigung = neue Benachrichtigung (); notif.ledARGB = Color.argb (255, 0, 255, 0); notif.flags | = Notification.FLAG_SHOW_LIGHTS; notif.ledOnMS = 200; notif.ledOffMS = 300;
ledARGB wird verwendet, um einen Alpha-, Rot-, Grün- und Blau-Farbwert anzugeben, der zu einer einzelnen Ganzzahl kombiniert wird. android.graphics.ColorDie praktische argb () - Methode ist die einfachste Methode, um sie zu erstellen. Im obigen Beispiel spuckt es rot mit voller Intensität aus (255 für Rot und 255 für Alpha). Sie können natürlich einfach eine Konstante der Color-Klasse wie Color.RED verwenden.
Flaggen hat das Flag FLAG_SHOW_LIGHTS über eine bitweise Operation hinzugefügt. Es zeigt lediglich an, dass Sie die LED eines Geräts in diesem Benachrichtigungsobjekt verwenden möchten.
ledOnMS und ledOffMS: Die LED blinkt, wobei ledOnMS angibt, wie lange die LED eingeschaltet ist, und ledOffMS zeigt an, wie lange sie zwischen den Blitzen ausgeschaltet bleiben soll. Der folgende Code demonstriert das:
// Blinkt die LED ein und aus. (Zeiten in Millisekunden) notif.ledOnMS = 1000; notif.ledOffMS = 300; // LED einschalten. Wenn Sie diese Einstellung so vornehmen, wird eine Standardpause zwischen zwei Blitzen ausgelöst, die etwa 2 Sekunden dauert. notif.ledOnMS = 1; notif.ledOffMS = 0;
Rufen Sie schließlich notify (int id, Notification) auf und übergeben Sie das Benachrichtigungsobjekt, das wir erstellt und konfiguriert haben. Für den Moment sollte es in Ordnung sein, ihm einen zufälligen Wert als ID zu geben. Behalten Sie ihn jedoch im Auge, damit Sie die Benachrichtigung später abbrechen können. Die bessere Methode ist, sie in einer Konstanten zu speichern, anstatt die Zahl als Parameter fest zu kodieren. Dies ist jedoch ein Lernprogramm, das wir zu Demonstrationszwecken einfach hart kodieren.
notifMgr.notify (1234, notif);
Nun, woraus resultiert dies? Die LED beginnt nur zu blinken, wenn der Bildschirm ausgeschaltet ist, und stoppt, wenn Sie ihn wieder einschalten oder den Anruf abbrechen (). So wurde das Android-Benachrichtigungssystem entwickelt. Derzeit gibt es keine Möglichkeit, die LED / Trackball-Beleuchtung direkt zu steuern. Denken Sie auch daran, dass Sie anrufen müssen notifMgr.cancel (1234) schließlich - 1234 ist die ID, die Sie zuvor angegeben haben. Sie können einen Timer einrichten, um sich darum zu kümmern, oder Sie können ihn aufrufen, wenn Ihre Aktivität wieder aktiv ist.
Ich werde diesen Beitrag mit ein paar Worten zur Kompatibilität abrunden: Jede Gerätelinie unterscheidet sich in gewisser Weise. Einige Telefone verfügen über einen Trackball mit Beleuchtungsfunktionen, andere haben eine LED und einige haben keine. Das Android-System wird sein Bestes geben, um zu tun, was Sie ihm gesagt haben, aber es kann keine Garantie geben.
Denken Sie immer daran: Verwenden Sie jede Art von Alarm sparsam und weise. Es ist besser, auf der sicheren Seite zu bleiben und sich gegen die Verwendung von Vibrationen / Lichtern zu entscheiden, als diese zu überbeanspruchen, was den Benutzer stört, was zu einer schlechten Benutzererfahrung führen kann. Wenn Sie den Code des Tutorials getestet haben, müssen Sie ein echtes Android-Gerät verwenden, da der Emulator weder Vibrationen noch LEDs unterstützt. Leider zeigt der Simulator im Moment nicht die Anzeige "LED blinkt gerade!" Pop-up. Vielleicht wird es in Zukunft so sein ... hoffe ich doch.