Podcast
Videos
September 6, 2022
Nov 2022
6 Min

Alexa-App mit AVS programmieren

"Alexa, stell bitte meinen Wecker auf 7:30 Uhr!".

Sprachassistenten sind in kurzer Zeit für viele Nutzer zu einer Alltagserscheinung geworden. Sofern sie uns richtig verstehen, wählen sie die Musik aus, sagen uns, wie das Wetter wird und vieles mehr. Glücklicherweise stellt beispielsweise Amazon seinen Sprachassistenten als Open Source zur Verfügung, so dass man als Android-Entwickler viele Möglichkeiten zur individuellen Programmierung hat.

Alexa mobil – immer an deiner Seite

Ich persönlich habe einen Amazon Echo Dot zuhause, wollte aber auch unterwegs die Funktionalität meiner personalisierten Alexa nutzen können. Entsprechend habe ich mich daran gemacht, eine eigene App zu entwickeln. Es gibt zwar schon fertige Versionen zum Download – aber für uns als App-Agentur ist es sehr interessant, hinter die Fassade zu schauen, um in Zukunft Schnittstellen zu Sprachassistenten in unsere Apps integrieren zu können, wenn der Kunde das wünscht. Mehr noch, wenn man nicht nur den von Amazon auf Amazon Developer bereitgestellten Amazon Voice Service (AVS) nutzen will, sondern darauf aufbauend neue Alexa Skills, die man nach eigenen Vorstellungen programmiert hat, mit seiner App verbinden will, lohnt sich der Zugriff auf den eigens optimierten Quellcode allemal. So kann man sich seine passgenau programmierte Alexa erstellen, die nicht nur mobil auf dem Smartphone, sondern wenn man will auch im Auto oder anderweitig verfügbar ist.

Libraries zusammenfassen und updaten

Als Ausgangspunkt diente mir ein Github-Projekt von Will Blaschko.
https://github.com/willblaschko/AlexaAndroid

Der von ihm geschriebene Code ist super hilfreich, denn Amazon stellt bisher noch keinen Quellcode zur Verfügung, um den AVS in eine Android- oder iOS-App zu integrieren. Um seinen Code meinen Zwecken anzupassen, musste ich zunächst drei einzelnen Module zusammenfassen und daraufhin die Dependencies updaten. Das war mit die größte Herausforderung. Die wichtigsten Learnings werde ich daher kurz erläutern. Für diejenigen, die das nicht interessiert, und die lieber gleich auf meinem Projekt aufbauen möchten, geht es hier weiter.

Mein Ziel war es, das Projekt insgesamt möglichst einfach zu halten, um es für weitere Entwickler leicht zugänglich zu machen. Ursprünglich enthielt es drei Module, die ich zu einer Library zusammengefasst habe. Die Schwierigkeit hierbei war, dass die drei Module teilweise die gleichen Dependencies in unterschiedlichen Versionen enthielten. Um dies zu lösen, wurden die Dependencies allesamt in einer build.gradle festgehalten und die restlichen Dependencies dann nach längerer Suche in den einzelnen Modulen lokal gelöscht.

Ein besonderes Rätsel war, warum sich der Login-Screen sich nicht in der WebView aufrufen lies. In Will Blaschko’s Android App im Play Store funktionierte alles - aber nicht auf seinem GitHub-Projekt. Erst längeres Debugging seiner Webview ergab, dass der Link zum Login völlig veraltet und das Projekt anscheinend seit langem nicht upgedatet worden war. {:affe_sieht_nichts:} Nach geändertem Link funktionierte der Login einwandfrei, sowohl in einer WebView, als auch über einen externen Browser.

Login-Screen erstellen

Um die App schlank zu halten, übernahm ich aus Will Blaschkos Projekt nur die Push-to-Talk-Funktionalität, da sie mir nach wie vor am nützlichsten erscheint. Zusätzlich integrierte ich die neue WorkFlowActivity, indem ich sie im Manifest eingefügt habe. Mit der WorkFlowActivity erlaubt Amazon es, einen eigenen Login-Screen zu bauen, so dass man auch ohne Echo Dot tatsächlich Zugriff auf seine eigene Alexa hat. Der Login öffnet sich dann wahlweise per Webview oder im Browser des Smartphones.

<activity
   android:name="com.amazon.identity.auth.device.workflow.Workflowactivity"
   android:allowTaskReparenting="true"
   android:launchMode="singleTask"
   android:theme="@android:style/Theme.NoDisplay">
   <intent-filter>
       <action android:name="android.intent.action.VIEW" />

       <category android:name="android.intent.category.DEFAULT" />
       <category android:name="android.intent.category.BROWSABLE" />

       <data
           android:host="${applicationID}"
           android:scheme="amzn" />
   </intent-filter>
</activity>

Schritt-für-Schritt-Tutorial

Eine detaillierte Anleitung, wie ihr mit Android-Studio eure portable Alexa-App schreibt, einen eigenen Login-Screen baut oder auch gleich die von mir aktualisierten Libraries nutzt, findet ihr in meinem GitHub-Account als Best Practice.

Eine App – viele Möglichkeiten

Mit dem AVS lassen sich vor allem die Grundfunktionen des Handys steuern: Timer stellen, To-Dos und Einkaufslisten sind damit dank Sprachsteuerung einfach und unkompliziert ausführbar. Aber das ist erst der Anfang! Mit einer Erweiterung durch das Alexa Skills Kit gelingt es zum Beispiel auch, Alexa dazu zu bringen, einem je nach Wetter die passende Kleidung zu empfehlen, sie bestimmte Informationen auswendig lernen zu lassen und vieles mehr. Die Grenzen setzt (fast) nur die eigene Fantasie. Mit genug Kreativität lässt sich der Funktionsumfang der mobilen Alexa also deutlich erweitern.

Also, Alexa: "Setz die Entwicklung eines Alexa-Skills auf meine To-Do Liste!"

Grafik von Amazon Developer: https://developer.amazon.com/de/alexa-voice-service/dev-kits

Andreas Link
Andreas Link
Anh Dung Pham
Anh Dung Pham
Cihat Gündüz
Cihat Gündüz
Andreas Link
Ekrem Sentürk
Eva Maria Stock
Eva-Marie Stock
Andreas Link
Giulia Maier
Inken Marei Kolthoff
Inken Marei Kolthoff
Janina Baumann
Janina Baumann
Janina Bokeloh
Janina Bokeloh
Jeanette Schmidt
Jeanette Schmidt
Jens Krug
Jens Krug
Kajorn Pathomkeerati
Kajorn Pathomkeerati
Karl Barth
Karl Barth
Kay Dollt
Kay Dollt
Murat Yilmaz
Murat Yilmaz
Thorsten Hack
Thorsten Hack
Thorsten Hack
Thorsten Hack
Inken Marei Kolthoff
Cynthia Murat
Inhaltsverzeichnis

Weitere Artikel

Sommer, Sonne, Sommerfest
Eva-Maria Stock
26.11.2022
3 Min

Sommer, Sonne, Sommerfest

Es ist immer schön, wenn alle Kollegen Zeit finden, sich zusammen zu setzen.

Artikel lesen
Mehr als Codes und Bugs (Teil 2)
Janina Bokeloh
26.11.2022
4 Min

Mehr als Codes und Bugs (Teil 2)

Diese Woche geht es weiter mit unserem kleinen Beitrag zum besseren Verstehen zwischen Entwicklern und Nicht-Entwicklern.

Artikel lesen
Erfolg messbar machen?
Janina Bokeloh
26.11.2022
3 Min

Erfolg messbar machen?

Es gibt viele gute Ideen für Apps. Einige werden umgesetzt, andere nicht. Landet die eigene App in den App Stores, hat man es geschafft - oder?

Artikel lesen

Jetzt kostenloses Strategiegespräch sichern!

Die Beratungen sind grundsätzlich schnell ausgebucht, deshalb fülle jetzt in 2 Minuten das kurze Formular aus.

Jetzt Strategiegespräch sichern