-
Notifications
You must be signed in to change notification settings - Fork 604
Android Quick Start Guide
This guide provides step-by-step instructions to set up the Alexa Voice Service (AVS) Device SDK for Android. When finished, you'll have a working sample app to test interactions with Alexa.
Hardware: You'll need a Linux or MacOS machine that meets these system requirements.
Software: These dependencies must be installed on your machine.
We recommend installing the Android sample app onto the internal storage of your Android device or emulator.
Installing onto external storage may result in installation failures, depending on the storage format. For example, the sample app will not work on FAT32.
You can use any of these platform types to test and debug your build:
Device Type | Minimum Requirements |
---|---|
Android Emulator | 500 MB minimum of available disk space. |
Android Device, such as a phone | 500 MB minimum of available disk space. |
Android Things-supported Hardware | See requirements here. |
-
Install Android tools by either by downloading Android Studio (which includes the tools by default) or via the command line.
-
After you've installed Android tools, you'll need to install platformtools using the Android sdkmanager, which is part of the Android tools package.
During this process, you'll need to specify the CPU type and Android version number.
In this example, this is how we would install Android API 23 on arm:
# install cmake, ndk-bundle, and android abi sdkmanager "ndk-bundle"
sdkmanager "cmake;3.6.4111459"
sdkmanager "system-images;android-23;google_apis;armeabi-v7a"
sdkmanager "platform-tools"
- Once the tools are installed, set your
PATH
environment variable to include the Android tools.
For example, if you've installed the Android tools on your home directory ~/Android/sdk
, run this command:
export PATH=$PATH:~/Android/sdk/platform-tools:~/Android/sdk/tools:~/Android/sdk/tools/bin
- Install additional dependencies
Once the tools are installed, you'll need to install these packages: autoconf
, automake
, libtool
, pkg-config
.
MacOS:
brew install autoconf automake libtool pkg-config
Linux:
sudo apt-get update
sudo apt-get install autoconf automake libtool pkg-config
-
You'll need to connect your target device to the Android Debug Bridge (ADB) in order to install the SDK on your device.
For Android devices and Android Things-enabled hardware, you'll need to enable USB debugging and connect your device to the ADB before you run the
startsample.sh
build script.The Android Emulator is connected to the ADB by default. No configuration is required.
To connect your device to the ADB, follow these steps:
1. Physically connect your device to your Mac or Linux machine via USB. 2. [Enable USB debugging](https://developer.android.com/studio/command-line/adb#Enabling) for your device. 3. Connect your device to the ADB:
adb root adb connect <device_ip>
-
Download installation script and configuration file:
Note: You can specify any directory you prefer to run the scripts and download these files to. The following commands will download all the necessary files:
wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/androidConfig.txt
wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/setup.sh
wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/genConfig.sh
wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/android.sh
Next, you'll need to authorize your build of the sample app.
Before you can use the Device SDK sample app, you'll need to authorize it with the Alexa cloud in order to leverage the full range of Alexa capabilities and features available to the sample app.
You must register an AVS Product and Create a Security Profile, if you haven't already.
Note: The product must be enabled for code-based linking.
-
Navigate to the directory where you downloaded the set up android.sh script.
-
Update
androidConfig.txt
with the following variables:Parameter Value PLATFORM
This variable should be set to "android"
.API_LEVEL
The Android API level. See this table to identify the target level. The API level will depend on the device or emulator configuration.
Supported version: API 23+ or greater is supported.TARGET_SYSTEM
Choose this value according to the CPU architecture of your target device. For example, choose arm
for the Raspberry Pi.
Accepted values:arm
andx86
.DEVICE_INSTALL_PATH
The file path on the device where the script should install the sample app and dependencies.
Note: Make sure this path exists on the device, and that you have write permissions.BUILD_TYPE
The type of build that will be used.
Accepted values:debug
,release
,MinSizeRel
, andRelWithDebInfo
. -
Run android.sh, using config.json, androidConfix.txt, and the device serial number (DSN) as arguments. You can either provide your own DSN, or use the system default (
123456
). The DSN can be any unique alpha-numeric string (up to 64 characters). You should use this string to identify your product or application instance. Many developers choose to use a product's SKU for this value.For example:
sudo bash setup.sh config.json -a androidConfig.txt -s 998987
Note: If you don't supply a DSN, then the default value
123456
will be generated by the SDK.
-
Initialize the sample app using the
startsample.sh
script that you previously generated when you ran thesetup.sh
script. Typebash startsample.sh
to run the sample app.Note: Because this script is a batch file and not a bash script, you can run the script either from the command line, or by locating the file and then double-clicking it.
-
Wait for the sample app to display a message like this:
################################## # NOT YET AUTHORIZED # ################################## ################################################################################################ # To authorize, browse to: 'https://amazon.com/us/code' and enter the code: {XXXX} # ################################################################################################
-
Use a browser to navigate to the URL specified in the message from the sample app.
-
If requested to do so, authenticate using your Amazon user credentials.
-
Enter the code specified in the message from sample app.
-
Select “Allow”.
-
Wait (it may take a few seconds) for the sample app to report that it is authorized, and that Alexa is idle. It will look something like this:
########################### # Authorized! # ########################### ######################################## # Alexa is currently idle! # ########################################
-
You are now ready to use the sample app. The next time you start the sample app, you will not need to go through the authorization process.
Note: if you exit out of sample app via the k
command, the CBLAuthDelegate
database will be cleared, and you will need to reauthorize your client.
Now that you have a working sample app, try an interaction with Alexa.
If you have quit the sample app, start it again:
bash startsample.sh
Press T+Enter, and ask Alexa something.
For example:
User taps-to-talk (T+Enter): "Alexa, what's the weather like?"
Alexa: "Right now in Portland, it's 71 degrees with sun..."
Interaction options
Action | Command |
---|---|
Tap to talk | t+Enter, followed by your query (no need to say "Alexa..."). |
Hold to talk | h+Enter, followed by your query (no need to say "Alexa..."). |
Simulate button release | h+Enter |
Stop an interaction | s+Enter |
Playback controls
Action | Command |
---|---|
Play | 1 |
Pause | 2 |
Next | 3 |
Previous | 4 |
Settings
Action | Command |
---|---|
View available settings | c+Enter |
Adjust speaker settings | p+Enter |
Report firmware version | f+Enter |
Help screen | i+Enter |
Reset device | k+Enter; this will erase any data stored on the device, and you will have to re-register it. This will also exit the application. |
Quit | q+Enter |
API Reference
Quick-start Guides
- All Quick-start Guides
- For Android
- Cross-compile for iOS
- Generic Linux
- For macOS
- For Raspberry Pi
- For Ubuntu Linux
- For Windows 64-bit
Other Guides + Optimizations
- Authorizing AVS Device SDK Software with AVS
- Build libcurl with mbed TLS and nghttp2
- Build libcurl with nghttp2 for macOS
- Optimize libcurl for Size
- Runtime Configuration for CA Certificates
- Updating the SDK
Development Kits
Resources