Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Apps für Android Wear Grundkurs

Benachrichtigungen mit Spracheingabe

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Sie können Spracheingaben auf Ihrer Smartwatch entgegennehmen und damit Ihre App auf dem Smartphone steuern. Wie das geht, erfahren Sie in diesem Video.

Transkript

Smartwatches können in Benachrichtigungen auch Spracheingaben entgegennehmen. Diese werden dann in einen Java-String konvertiert und an das Smartphone gesendet. Ich bin hier in meinem Projekt VoiceNotifications. Wenn die MainActivity gestartet wird, dann wird ein PendingIntent um die DetailActivity erstellt und hier mit setContentIntent beim Builder angemeldet. Um die Anwendung ausführen und testen zu können, brauche ich zwei richtige Geräte, also ein richtiges Smartphone und eine richtige Smartwatch. Das liegt ganz einfach daran, dass ein Emulator keine Spracheingaben entgegennehmen kann. Wenn ich die Anwendung nun starte, dann sieht das folgendermaßen aus: Auf dem Smartphone ist hier oben die Benachrichtigung angekommen. Wenn ich da drauftippe, dann wird die DetailActivity geöffnet, aber auf der Smartwatch erhalte ich nur den allgemeinen Bildschirm, das Hotel wurde also offensichtlich nicht gefunden. Das Hotel wird bisher ja auf der Smartwatch nur angezeigt, wenn der Nutzer aus der Hotelliste ein entsprechendes Hotel auswählt, indem er drauftippt. Das gleiche Problem habe ich auf der Uhr. Ich schiebe die Nachricht mal nach oben und nach links und dann tippe ich Auf Smartphone öffnen und wieder bekomme ich nicht, was ich haben wollte. Ich entferne also die Benachrichtigung von der Uhr und dadurch verschwindet Sie auch auf dem Smartphone. Gehen wir also zurück zu unserem Code. Hier müssen wir eine Reihe von Änderungen vornehmen, um das Problem zu lösen. Zuerst müssen wir die Spracheingabe vom Nutzer entgegennehmen und in der entsprechenden Activity verarbeiten. Damit diese Schritte korrekt einander zugeordnet werden können, erstellen wir uns eine Konstante, die dann auf beiden Seiten verwendet wird. Das mache ich hier oben direkt unter der Deklaration der Hotelliste. Eine Konstante sollte final sein, sie wird im Intent als Extra hinzugefügt. Ich nenne sie also EXTRA_VOICE_REPLY. Den Wert können Sie grundsätzlich frei wählen, um es besser zuordnen zu können und lesbarer zu machen, nenne ich das hier extra_reply. Als nächstes benötige ich nun ein Objekt, um die Spracheingabe entgegennehmen zu können. Ich gehe hier unten in meine sendNotification Methode, gleich am Anfang und ich verwende dafür einen RemoteInput. Achten Sie darauf, dass Sie die Version aus der V4 Bibliothek verwenden. Die Variable können wir remoteInput nennen, aber ich erstelle das Objekt natürlich nicht selbst, sondern ich hole es mir von einem RemoteInput Builder. Diesem Builder übergebe ich nun meine Konstante, die ich oben deklariert habe, damit die beiden Seiten sich später abstimmen können. Hier vorne muss natürlich noch ein new hin, ich erzeuge ja ein neues Objekt. Damit der User später weiß, was er tun soll, gebe ich noch einen kurzen Beschreibungstext dazu und das mache ich mit setLabel und als Text sage ich Wählen Sie ein Hotel aus. Damit weiß der Nutzer, dass er ein Hotel auswählen soll. Und zum Schluss rufe ich beim Builder die Methode build auf, damit wird das RemoteInput Objekt erzeugt. Als nächstes erstelle ich mir nun einen Action Button, damit der Nutzer die Spracheingabe initiieren kann. Ich schreibe also NotificationCompat.Action ich nenne sie action und hole mir diese vom NotificationCompat.Action.Builder Der bekommt jetzt drei Argumente, das Icon, den Titel und den pendingIntent. Das Icon bekomme ich aus R.drawable.ic_notify, als Titel gebe ich wieder Wählen Sie ein Hotel aus an und das dritte Argument ist mein pendingIntent, den deklariere ich aber eigentlich erst hier unten, deshalb müssen diese zwei Zeilen unter die Deklaration des pendingIntents. Jetzt gebe ich dem Builder noch mein RemoteInput Objekt mit addRemoteInput – hier fehlt wieder das new – und hier kommt mein remoteInput rein, das ich gerade erstellt habe und schließlich am Ende build. Nun kann ich diese Action meinem NotificationBuilder hinzufügen. setContentIntent brauchen wir nicht mehr, kann ich also auskommentieren und zum Hinzufügen einer Erweiterung, nehme ich den WearableExtender. Dazu die Methode extend, einen neuen i Variable WearableExtender, dem ich wiederum die Action gebe. Ich fasse das nochmal zusammen. Hier oben haben wir unser RemoteInput Objekt erstellt, das später die Eingabe entgegennehmen soll. Das habe ich in ein Action Objekt gepackt und dieses mit einem WearableExtender dem NotificationBuilder hinzugefügt. Nun gehe ich in meine DetailActivity. Wenn diese erstellt wird, dann soll sie die Daten aus dem RemoteInput entgegennehmen. Dazu gehe ich in die onCreate Methode und schaue, was hier angekommen ist. Bisher gingen wir hier davon aus, dass der Nutzer eine Stadt ausgewählt hat und wir die dann über City zugreifen können. Erfolgt die Auswahl aber über die Spracheingabe, dann ist city == null. Diesen Fall müssen wir also erstmal abtesten. Nun schauen wir, ob das Remote- Input Objekt etwas enthält. Jetzt machen wir hier ein Bundle, um den Rückgabewert entgegennehmen zu können. Das bekommen wir von der RemoteInput Klasse mit der Methode getResultsFromIntent und den wiederum erhalten wir mit getIntent. Auch dieses RemoteInput kann jetzt wieder null sein. Bevor wir es verarbeiten können, testen wir, ob es das nicht ist, also ob was enthalten ist. Wenn ja, dann ist das der Name unserer Stadt, wir können das als in die Variable city einschreiben. Die Daten kommen im Basistyp CharSequence an, die Methode heißt also getChar- Sequence und als Identifier kommt hier unsere Konstante rein, also aus der Klasse MainActivity, EXTRA_VOICE_REPLY. Nun müssen wir das Ganze noch in einen String umwandeln, dafür nehmen wir die Methode toString und dann können wir diesen Text in die Variable city reinschreiben. Jetzt habe ich also den Namen der Stadt. Entweder weil der Nutzer die Stadt aus der Liste ausgewählt hat oder weil er den Namen eingesprochen hat. Jetzt kann ich also zum Data Provider gehen und wie bisher mit dem Namen der Stadt das entsprechende Hotel rausfinden. Ich kann meine App nun also erneut testen. Auch diesmal erscheint die Nachricht wieder auf beiden Geräten, auf dem Smartphone und auf der Smartwatch. Wenn ich also auf dem Phone hier runterziehe und die Nachricht anklicke, dann passiert gar nichts mehr, den Code haben wir ja entfernt. Auf der Smartwatch hingegen sieht es nun anders aus. Ich schiebe das wieder hoch, ich tippe hier auf die Nachricht drauf, zieh sie ein Stück hoch und schieb sie dann nach links. Ich tippe auf den Button und spreche den Namen meiner gewünschten Stadt. Hong Kong. Wie Sie sehen können, wird der Name erkannt, es sei denn die Pause ist zu kurz, dann wird alles noch weiter erkannt. Ich mache das Ganze also nochmal – Hong Kong. Und siehe da, der Stadtname wurde korrekt erkannt. Meine Spracheingabe wird an das Smartphone gesendet, dieses wiederum schickt es an einen Google-Server, der versucht etwas zu erkennen das Ganze geht zurück an das Smartphone. Passt der erkannte Text zu einem unserer Städtenamen, dann wird das entsprechende Hotel ausgewählt. Jetzt haben Sie also gesehen, wie die Spracheingabe funktioniert und wie Sie diese in Ihre eigenen Apps einbauen können. Nun müssen Ihre Nutzer also nicht mehr auf kleine Knöpfchen zielen, sondern sie können ihre Wünsche direkt in die Smartwatch hineinsprechen.

Apps für Android Wear Grundkurs

Erstellen Sie Anwendungen für das Internet der Dinge mit Android Wear.

2 Std. 39 min (29 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:19.08.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!