All Projects → alexa → Alexa Auto Sdk

alexa / Alexa Auto Sdk

Licence: apache-2.0
The Alexa Auto SDK is for automotive OEMs to integrate Alexa directly into vehicles.

Labels

Overview of the Alexa Auto SDK

The Alexa Auto SDK contains essential client-side software required to integrate Alexa into the automobile. The software includes the source code and function libraries in C++ and Java. The Auto SDK is modular and abstract, providing a runtime engine for your vehicle to communicate with the Alexa service. It also provides interfaces for you to implement platform-specific behavior, such as audio input, media playback, template and state rendering, phone control, and navigation. After you build and install the Auto SDK, you can use the included sample applications, one for C++ and one for Android, to learn about the Auto SDK interfaces and to test interactions before integration.

Table of Contents

Auto SDK Architecture and Modules

Note: This diagram shows only some of the available platform interfaces.

The following sections describe the Auto SDK modules and extensions, which are optional modules.

Alexa Auto SDK Engine Alexa Auto SDK Engine

The Auto SDK Engine is the runtime implementation of the Auto SDK. Platform-specific behavior in the Alexa Auto SDK is abstracted into interfaces called "platform interfaces." Modules in the Auto SDK extend the Engine by providing services and defining the runtime behavior for platform interfaces that are registered by the application. The platform interfaces define the API that determines how the application communicates with the Engine.

Alexa Auto SDK Engine Core Module

The Core module (for C++ or Android) includes the Engine class and platform interfaces. It also provides the infrastructure for audio input and output. The infrastructure is necessary for any modules that provide platform interfaces involving audio (for example, the Alexa module). All modules depend on the Core module, which provides them with logging, location reporting, and network monitoring services.

The Auto SDK provides a Java version of each C++ platform interface in the Android platform portion of the SDK. The Java interfaces are built, using the Java Native Interface (JNI), on top of the core C++ interfaces. As a result, Android integrations can use Auto SDK interfaces directly.

Alexa Auto SDK Engine Alexa Module

The Alexa module (for C++ or Android) includes platform interfaces and runtime Engine support for Alexa features in the Auto SDK, including speech input and output, audio output, authorization, Alexa speaker, media playback, equalizer control, template and state rendering, local media sources, alerts, notifications, and Do Not Disturb (DND).

Alexa Auto SDK Engine Navigation Module

The Navigation module (for C++ or Android) includes platform interfaces and runtime Engine support for Alexa to interface with the onboard navigation system.

Alexa Auto SDK Engine Phone Call Controller Module

The Phone Control module (for C++ or Android) includes platform interfaces and runtime Engine support for Alexa to interface with the onboard telephony system.

Address Book Module

The Address Book module (for C++ or Android) includes platform interfaces and runtime Engine support to augment the communications and navigation capabilities of Alexa with user data such as phone contacts and navigation favorites ("home", "work", etc.)

Code-Based Linking (CBL) Module

The CBL module (for C++ or Android) includes platform interfaces and runtime Engine support to implement the CBL mechanism of acquiring Login with Amazon (LWA) access tokens.

Alexa Presentation Language (APL) Module

The APL module (for C++ or Android) includes platform interfaces and runtime Engine support to enable devices with graphical user interface (GUI) support to implement APL directives and events.

Note: APL rendering on the Android Sample App requires a component that is available by request from your Amazon Solutions Architect (SA) or Partner Manager.

Messaging Module

The Messaging module (for C++ or Android) includes platform interfaces and runtime Engine support for Short Message Service (SMS) capabilities of Alexa such as sending and reading text messages.

Car Control Module

The Car Control module (for C++ or Android) enables your application to build a custom vehicle-control experience that allows the user to voice-control vehicle features using Alexa.

Connectivity Module

The Connectivity module (for C++ or Android) creates a lower data consumption mode for Alexa, allowing automakers to offer tiered functionality based on the status of their connectivity plans.

Text To Speech (TTS) Module

The TTS module (for C++ or Android) enables a platform implementation to request synthesis of Alexa speech on demand from a text or Speech Synthesis Markup Language (SSML) string.

Text To Speech (TTS) Provider Module

The TTS provider module (for C++ or Android) synthesizes Alexa speech on demand. This module requires Auto SDK to be built with the Local Voice Control extension.

AmazonLite Wake Word Extension

Wake Word enables hands-free, voice-initiated interactions with Alexa. The Wake Word extension enables AmazonLite Wake Word support in the Auto SDK.

Alexa Communications Extension

The Alexa Communications extension enables integration with Alexa-to-Alexa calling, Alexa-to-PSTN calling, and messaging capabilities.

Local Voice Control (LVC) Extension

The Local Voice Control (LVC) extension provides car control, communication, navigation, and entertainment functionality, with and without an internet connection. It includes components that run an Alexa endpoint inside the vehicle's head unit. Local Voice Control is currently supported on Linux x86 64-bit, Linux ARM 64-bit, Android x86 64-bit, and Android ARM 64-bit platforms.

Local Navigation Module

The Local Navigation module enables you to provide customers with Alexa local search and navigation without WiFi or data plan connectivity.

Device Client Metrics (DCM) Extension

The Device Client Metrics (DCM) extension enables logging and uploading Alexa Auto SDK metrics to the Amazon cloud. Voice request metrics, for example, include start and end timestamps of user and Alexa speech and user perceived latency (UPL) between the request and Alexa’s response. Metrics may be tagged Beta, Gamma, or Prod depending on the vehicle lifecycle. The DCM extension is available for all Linux and Android platforms.

Voice Chrome for Android Extension

The Voice Chrome extension adds Voice Chrome support to the Auto SDK for Android x86 64-bit and Android ARM 32/64-bit platforms. Voice Chrome provides a consistent set of visual cues representing Alexa attention state across a range of Alexa-enabled devices. The Voice Chrome extension includes a prebuilt Android AAR library for easy integration with your applications, as well as a patch to the Android Sample App that adds the Voice Chrome functionality.

Note: Auto SDK extensions are available by request. Contact your Amazon Solutions Architect (SA) or Partner Manager for more information.

Alexa Auto Client Service (AACS)

The Auto SDK includes AACS, an APK (Android package) that enables OEMs of Android-based devices to simplify the process of integrating the Auto SDK. After you install, configure, and initialize AACS, it communicates with the applications, providing an interface between the applications and various Alexa functions, such as navigation and car control. For more information about AACS, see the AACS README.

AACS requires the Alexa Auto Service Bridge (AASB) extension, which provides a message-based interface to the Auto SDK Engine. For more information about AASB, see the AASB README.

Security Best Practices

All Alexa products are required to follow the Security Best Practices for Alexa. When building an Alexa experience using the Alexa Auto SDK, additionally adhere to the following security principles:

  • Protect configuration files for the Auto SDK Engine from tampering and inspection.
  • Protect configuration parameters, such as those found in Auto SDK Engine configuration files, from tampering and inspection, including but not limited to the following: SQLite database files, Unix Domain Sockets, wake word models, and metrics sink files.
  • Protect components used for the Local Voice Control (LVC) extension, including associated LVC language model packages (Linux) and APKs (Android), from tampering and inspection, including but not limited to the following: Unix Domain Sockets, model directories, skill and service executables, prompts and assets JSON files, and all files configuring these components.
  • Your C++ implementation of Auto SDK interfaces must not retain locks, crash, hang, or throw exceptions.
  • Use exploit mitigation flags and memory randomization techniques when you compile your source code to prevent vulnerabilities from exploiting buffer overflows and memory corruptions.

See Also

The following documents or websites provide more information about the Auto SDK.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].