This repository has been archived by the owner on Jan 16, 2024. It is now read-only.
Releases: alexa/avs-device-sdk
Releases · alexa/avs-device-sdk
v1.10
Enhancements
- New optional configuration for EqualizerController. The EqualizerController interface allows you to adjust equalizer settings on your product, such as decibel (dB) levels and modes.
- Added reference implementation of the EqualizerController for GStreamer-based (MacOS, Linux, and Raspberry Pi) and OpenSL ES-based (Android) MediaPlayers. Note: In order to use with Android, it must support OpenSL ES.
- New optional configuration for the TemplateRuntime display card value.
- A configuration file generator script,
genConfig.sh
is now included with the SDK in the tools/Install directory.genConfig.sh
and it's associated arguments populateAlexaClientSDKConfig.json
with the data required to authorize with LWA. - Added Bluetooth A2DP source and AVRCP target support for Linux.
- Added Amazon for Business (A4B) support, which includes support for handling the new RevokeAuthorization directive in the Settings interface. A new CMake option has been added to enable A4B within the SDK,
-DA4B
. - Added locale support for IT and ES.
- The Alexa Communication Library (ACL),
CBLAUthDelegate
, and sample app have been enhanced to detect de-authorization using the newz
command. - Added
ExternalMediaPlayerObserver
, which receives notification of player state, track, and username changes. HTTP2ConnectionInterface
was factored out ofHTTP2Transport
to enable unit testing ofHTTP2Transport
and re-use ofHTTP2Connection
logic.
Bug Fixes
- Fixed a bug in which
ExternalMediaPlayer
adapter playback wasn't being recognized by AVS. - Issue 973 - Fixed issues related to
AudioPlayer
where progress reports were being sent out of order or with incorrect offsets. - An
EXPECTING
, state has been added toDialogUXState
in order to handleEXPECT_SPEECH
state for hold-to-talk devices. - Issue 948 - Fixed a bug in which the sample app was stuck in a listening state.
- Fixed a bug where there was a delay between receiving a
DeleteAlert
directive, and deleting the alert. - Issue 839 - Fixed an issue where speech was being truncated due to the
DialogUXStateAggregator
transitioning between aTHINKING
andIDLE
state. - Fixed a bug in which the
AudioPlayer
attempted to play when it wasn't in theFOREGROUND
focus. CapabilitiesDelegateTest
now works on Android.- Issue 950 - Improved Android Media Player audio quality.
- Issue 908 - Fixed compile error on g++ 7.x in which includes were missing.
v1.9
Enhancements
- Added Android SDK support, which includes new implementations of the MediaPlayer, audio recorder, and logger.
- Added the InteractionModel interface, which enables Alexa Routines.
- Optional configuration changes have been introduced. Now a network interface can be specified to connect to the SDK via curl.
- Build options can be configured to support Android.
- Added GUI 1.1 support. The
PlaybackController
has been extended to support new control functionality, and theSystem
interface has been updated to supportSoftwareInfo
.
Bug Fixes
- Installation script execution time has been reduced. Now a single branch clone is used, such as the master branch.
- Issue 846 - Fixed a bug where audio stuttered on slow network connections.
- Removed the
SpeakerManager
constructor check for non-zero speakers. - Issue 891 - Resolved incorrect offset in the
PlaybackFinished
event. - Issue 727 - Fixed an issue where the sample app behaved erratically upon network disconnection/reconnection.
- Issue 910 - Fixed a GCC 8+ compilation issue. Note: issues related to
-Wclass-memaccess
will still trigger warnings, but won't fail compilation. - Issue 871 Issue 880 - Fixed compiler warnings.
- Fixed an issue where
PlaybackStutterStarted
andPlaybackStutterFinished
events were not being sent due to a missing Gstreamer queue element. - Fixed a bug where the
CapabilitiesDelegate
database was not being cleared upon logout. - Fixed in issue that caused the following compiler warning “class has virtual functions but non-virtual destructor”.
- Fixed a bug where
BlueZDeviceManager
was not properly destroyed. - Fixed a bug that occurred when the initializer list was converted to
std::unordered_set
. - Fixed a build error that occurred when building with
BUILD_TESTING=Off
.
Known Issues
- If a device is not connected to the Internet at the time that an alarm or reminder is scheduled to sound, the SDK will not play any sound for the alarm or reminder at that scheduled time.
- The
ACL
may encounter issues if audio attachments are received but not consumed. SpeechSynthesizerState
currently usesGAINING_FOCUS
andLOSING_FOCUS
as a workaround for handling intermediate state. These states may be removed in a future release.- The Alexa app doesn't always indicate when a device is successfully connected via Bluetooth.
- Connecting a product to streaming media via Bluetooth will sometimes stop media playback within the source application. Resuming playback through the source application or toggling next/previous will correct playback.
- When a source device is streaming silence via Bluetooth, the Alexa companion app indicates that audio content is streaming.
- The Bluetooth agent assumes that the Bluetooth adapter is always connected to a power source. Disconnecting from a power source during operation is not yet supported.
- On some products, interrupted Bluetooth playback may not resume if other content is locally streamed.
- On Raspberry Pi, when streaming audio via Bluetooth, sometimes the audio stream stutters.
- These
CapabilitiesDelegateTest
tests have been temporarily disabled to prevent build errors for the Android build:CapabilitiesDelegateTest.withCapabilitiesHappyCase
,CapabilitiesDelegateTest.republish
,CapabilitiesDelegateTest.testClearData
. make integration
is currently not available for Android. In order to run integration tests on Android, you'll need to manually upload the test binary file along with any input file. At that point, the adb can be used to run the integration tests.- On Raspberry Pi running Android Things with HDMI output audio, beginning of speech is truncated when Alexa responds to user TTS.
- When the sample app is restarted and network connection is lost, Alerts don't play.
- When network connection is lost, lost connection status is not returned via local TTS.
v1.8.1
Enhancements
- Added support for adjustment of alert volume.
- Added support for deletion of multiple alerts.
- The following
SpeakerInterface::Type
enumeration values have changed:AVS_SYNCED
is nowAVS_SPEAKER_VOLUME
.LOCAL
is nowAVS_ALERTS_VOLUME
.
Known Issues
- The
ACL
may encounter issues if audio attachments are received but not consumed. SpeechSynthesizerState
currently usesGAINING_FOCUS
andLOSING_FOCUS
as a workaround for handling intermediate state. These states may be removed in a future release.- The Alexa app doesn't always indicate when a device is successfully connected via Bluetooth.
- Connecting a product to streaming media via Bluetooth will sometimes stop media playback within the source application. Resuming playback through the source application or toggling next/previous will correct playback.
- When a source device is streaming silence via Bluetooth, the Alexa companion app indicates that audio content is streaming.
- The Bluetooth agent assumes that the Bluetooth adapter is always connected to a power source. Disconnecting from a power source during operation is not yet supported.
- On some products, interrupted Bluetooth playback may not resume if other content is locally streamed.
- On Raspberry Pi, when streaming audio via Bluetooth, sometimes the audio stream stutters.
v1.8
v1.8.0 released 06/27/2018:
Enhancements
- Added local stop functionality. This allows a user to stop an active function, such as an alert or timer, by uttering "Alexa, stop" when an Alexa-enabled product is offline.
- Alerts in the background now stream in 10 sec intervals, rather than continuously.
- Added support for France to the sample app.
- Updated the ACL MIME type for sending JSON to AVS from
"text/json"
to"application/json"
. friendlyName
can now be updated forBlueZ
implementations ofBlueZBluetoothDevice
andBlueZHostController
.
Bug Fixes
- Fixed an issue where the Bluetooth agent didn't clear user data upon reset, including paired devices and the
uuidMapping
table. - Fixed
MediaPlayer
threading issues. Now each instance has it's ownglib
main loop thread, rather than utilizing the default main context worker thread. - Fixed segmentation fault issues that occurred when certain static initializers needed to be initialized in a certain order, but the order wasn't defined.
Known Issues
- The
ACL
may encounter issues if audio attachments are received but not consumed. SpeechSynthesizerState
currently usesGAINING_FOCUS
andLOSING_FOCUS
as a workaround for handling intermediate state. These states may be removed in a future release.- The Alexa app doesn't always indicate when a device is successfully connected via Bluetooth.
- Connecting a product to streaming media via Bluetooth will sometimes stop media playback within the source application. Resuming playback through the source application or toggling next/previous will correct playback.
- When a source device is streaming silence via Bluetooth, the Alexa companion app indicates that audio content is streaming.
- The Bluetooth agent assumes that the Bluetooth adapter is always connected to a power source. Disconnecting from a power source during operation is not yet supported.
- On some products, interrupted Bluetooth playback may not resume if other content is locally streamed.
- On Raspberry Pi, when streaming audio via Bluetooth, sometimes the audio stream stutters.
- On Raspberry Pi,
BlueALSA
must be terminated each time the device boots. See Raspberry Pi Quick Start Guide for more information.
v1.7.1
Enhancements
- Added the Bluetooth interface, which manages the Bluetooth connection between Alexa-enabled products and peer devices. This release supports A2DP-SINK and AVRCP profiles. Note: Bluetooth is optional and is currently limited to Raspberry Pi and Linux platforms.
- Added new Bluetooth dependencies for Linux and Raspberry Pi.
- Device Capability Framework (DCF) renamed to Capabilities.
- Updated the non-CBL client ID error message to be more specific.
- Updated the sample app to enter a limited interaction mode after an unrecoverable error.
Bug Fixes
-
Issue 597 - Fixed a bug where the sample app did not respond to locale change settings.
-
Fixed issue where GStreamer 1.14 MediaPlayerTest failed on Windows.
-
Fixed an issue where a segmentation fault was triggered after unrecoverable error handling.
Known Issues
- The ACL may encounter issues if audio attachments are received but not consumed.
- SpeechSynthesizerState currently uses GAINING_FOCUS and LOSING_FOCUS as a workaround for handling intermediate state. These states may be removed in a future release.
- The Alexa app doesn't always indicate when a device is successfully connected via Bluetooth.
- Connecting a product to streaming media via Bluetooth will sometimes stop media playback within the source application. Resuming playback through the source application or toggling next/previous will correct playback.
- When streaming silence via Bluetooth, the Alexa companion app will sometimes indicate that media content is streaming.
- The Bluetooth agent assumes that the Bluetooth adapter is always connected to a power source. Disconnecting from a power source during operation is not yet supported.
- On some products, interrupted Bluetooth playback may not resume if other content is locally streamed.
- When streaming content via Bluetooth, under certain conditions playback will fail to resume and the sample app hangs on exit. This is due to a conflict between the GStreamer pipeline and the Bluetooth agent.
- On Raspberry Pi, when streaming audio via Bluetooth, sometimes the audio stream stutters.
- On Raspberry Pi, BlueALSA must be terminated each time the device boots. See Raspberry Pi Quick Start Guide for more information.
v1.7
Enhancements
AuthDelegate
andAuthServer.py
have been replaced byCBLAUthDelegate
, which uses Code Based Linking for authorization.- Added new properties to
AlexaClientSDKConfig
:cblAuthDelegate
- This object specifies parameters forCBLAuthDelegate
.miscDatabase
- A generic key/value database to be used by various components.dcfDelegate
- This object specifies parameters forDCFDelegate
. Within this object, values were added forendpoint
andoverridenDcfPublishMessageBody
.endpoint
is the endpoint for the Capabilities API.overridenDcfPublishMessageBody
is the message that is sent to the Capabilities API. Note: Values in thedcfDelegate
object will only work inDEBUG
builds.deviceInfo
- Specifies device-identifying information for use by the Capabilities API andCBLAuthDelegate
.
- Updated Directive Sequencer to support wildcard directive handlers. This allows a handler for a given AVS interface to register at the namespace level, rather than specifying the names of all directives within a given namespace.
- Updated the Raspberry Pi installation script to include
alsasink
inAlexaClientSDKConfig
. - Added
audioSink
as a configuration option. This allows users to override the audio sink element used inGstreamer
. - Added an interface for monitoring internet connection status:
InternetConnectionMonitorInterface.h
. - The Alexa Communications Library (ACL) is no longer required to wait until authorization has succeeded before attempting to connect to AVS. Instead,
HTTP2Transport
handles waiting for authorization to complete. - Device capabilities can now be sent for each capability interface using the Capabilities API.
- The sample app has been updated to send Capabilities API messages, which are automatically sent when the sample app starts. Note: A successful call to the Capabilities API must occur before a connection with AVS is established.
- The SDK now supports HTTP PUT messages.
- Added support for opt-arg style arguments and multiple configuration files. Now, the sample app can be invoked by either of these commands:
SampleApp <configfile> <debuglevel>
ORSampleApp -C file1 -C file2 ... -L loglevel
.
Bug Fixes
- Fixed Issues 447 and 553.
- Fixed the
AttachmentRenderSource
's handling ofBLOCKING
AttachmentReaders
. - Updated the
Logger
implementation to be more resilient tonullptr
string inputs. - Fixed a
TimeUtils
utility-related compile issue. - Fixed a bug in which alerts failed to activate if the system was restarted without network connection.
- Fixed Android 64-bit build failure issue.
Known Issues
- The
ACL
may encounter issues if audio attachments are received but not consumed. SpeechSynthesizerState
currently usesGAINING_FOCUS
andLOSING_FOCUS
as a workaround for handling intermediate state. These states may be removed in a future release.- Some ERROR messages may be printed during start-up event if initialization proceeds normally and successfully.
- If an unrecoverable authorization error is encountered the sample app may crash on shutdown.
- If a non-CBL
clientId
is included in thedeviceInfo
section ofAlexaClientSDKConfig.json
, the error will be reported as an unrecoverable authorization error, rather than a more specific error.
v1.6
Enhancements
rapidJson
is now included with "make install".- Updated the
TemplateRuntimeObserverInterface
to support clearing ofdisplayCards
. - Added Windows SDK support, along with an installation script (MinGW-w64).
- Updated
ContextManager
to ignore context reported by a state provider. - The
SharedDataStream
object is now associated by playlist, rather than by URL. - Added the
RegistrationManager
component. Now, when a user logs out all persistent user-specific data is cleared from the SDK. The log out functionality can be exercised in the sample app with the new command:k
.
Bug Fixes
- Issue 400 Fixed a bug where the alert reminder did not iterate as intended after loss of network connection.
- Issue 477 Fixed a bug in which Alexa's weather response was being truncated.
- Fixed an issue in which there were reports of instability related to the Sensory engine. To correct this, the
portAudio
suggestedLatency
value can now be configured.
Known Issues
- The
ACL
may encounter issues if audio attachments are received but not consumed. SpeechSynthesizerState
currently usesGAINING_FOCUS
andLOSING_FOCUS
as a workaround for handling intermediate state. These states may be removed in a future release.- Music playback doesn't immediately stop when a user barges-in on iHeartRadio.
- The Windows sample app hangs on exit.
- GDB receives a
SIGTRAP
when troubleshooting the Windows sample app. make integration
doesn't work on Windows. Integration tests will need to be run individually.
v1.5
Enhancements
- Added the
ExternalMediaPlayer
Capability Agent. This allows playback from music providers that control their own playback queue. Example: Spotify. - Added support for AU and NZ to the
SampleApp
. - Firmware version can now be sent to Alexa via the
SoftwareInfo
event. The firmware version is specified in the config file under thesampleApp
object as an integer value namedfirmwareVersion
. - The new
f
command was added to theSampleApp
which allows the firmware version to be updated at run-time. - Optional configuration changes have been introduced. Now a default log level can be set for
ACSDK_LOG_MODULE
components, globally or individually. This value is specified under a new root level configuration object calledlogger
, and the value itself is namedlogLevel
. This allows you to limit the degree of logging to that default value, such asERROR
orINFO
.
Bug Fixes
- Fixed bug where
AudioPlayer
progress reports were not being sent, or were being sent incorrectly. - Issue 408 - Irrelevant code related to
UrlSource
was removed from theGStreamer-based MediaPlayer
implementation. - The
TZ
variable no longer needs to be set toUTC
when building theSampleApp
. - Fixed a bug where
CurlEasyHandleWrapper
logged unwanted data on failure conditions. - Fixed a bug to improve
SIGPIPE
handling. - Fixed a bug where the filename and classname were mismatched. Changed
UrlToAttachmentConverter.h
toUrlContentToAttachmentConverter.h
,andUrlToAttachmentConverter.cpp
toUrlContentToAttachmentConverter.cpp
Known Issues
- The
ACL
may encounter issues if audio attachments are received but not consumed. - Display Cards for Kindle don't render.
- If using the GStreamer-based
MediaPlayer
implementation, after muting and un-muting an audio item, the next item in the queue will begin playing rather than continuing playback of the originally muted audio item. SpeechSynthesizerState
currently usesGAINING_FOCUS
andLOSING_FOCUS
as a workaround for handling intermediate state. These states may be removed in a future release.- Music playback doesn't immediately stop when a user barges-in on iHeartRadio.
v1.4
Enhancements
- Added the Notifications Capability Agent. This allows a client to receive notification indicators from Alexa.
- Added support for the
SoftwareInfo
event. This code is triggered in theSampleApp
by providing a positive decimal integer as the "firmwareVersion" value in "sampleApp" object of theAlexaClientSDKConfig.json
. The reported firmware version can be updated after starting theSampleApp
by callingSoftwareInfoSender::setFirmwareVersion()
. This code path can be exercised in theSampleApp
with the new command:f
. - Added unit tests for Alerts.
- The GStreamer-based pipeline allows for the configuration of
MediaPlayer
output based on information provided inConfig
. - Playlist streaming now uses a
BLOCKING
writer, which improves streaming efficiency.
Bug Fixes
- Fixed bug where
SpeechSynthesizer
would not stop playback when a state change timeout was encountered. - Fixed the
SampleApplication
destructor to avoid segfaults if the object is not constructed correctly. - Fixed bug where
AudioPlayer
would erroneously callexecuteStop()
incancelDirective()
. - Issue 396 - Fixed bug for compilation error with GCC7 in
AVSCommon/SDKInterfaces/include/AVSCommon/SDKInterfaces/Audio/AlertsAudioFactoryInterface.h
- Issue 384 - Fixed bug that caused
AuthServer.py
to crash. - Fixed bug where a long delay was encountered after pausing and resuming a large Audible chapter.
- Fixed bug that caused named timers and reminders to loop for an additional
loopCount
. - Fixed memory corruption bug in
MessageInterpreter
. - Fixed illegal memory accesses in
MediaPlayer
logging.
Known Issues
- The
ACL
may encounter issues if audio attachments are received but not consumed. - Display Cards for Kindle don't render.
- If using the GStreamer-based
MediaPlayer
implementation, after muting and un-muting an audio item, the next item in the queue will begin playing rather than continuing playback of the originally muted audio item. SpeechSynthesizerState
currently usesGAINING_FOCUS
andLOSING_FOCUS
as a workaround for handling intermediate state. These states may be removed in a future release.- Music playback doesn't immediately stop when a user barges-in on iHeartRadio.
v1.3
Enhancements
- ContextManager now passes the namespace/name of the desired state to StateProviderInterface::provideState(). This is helpful when a single StateProvider object provides multiple states, and needs to know which one ContextManager is asking for.
- The mime parser was hardened against duplicate boundaries.
- Added functionality to add and remove AudioPlayer observers to the DefaultClient.
- Unit tests for Alerts were added.
- Added en-IN, en-CA and ja-JP to the SampleApp locale selection menu.
- Added default alert and timer audio data to the SDK SampleApp. There is no longer a requirement to download these audio files and configure them in the json configuration file.
- Added support in SDS Reader and AttachmentReader for seeking into the future. This allows a reader to move to an index which has not yet arrived in the SDS and poll/block until it arrives.
- Added support for blocking Writers in the SharedDataStream class.
- Changed the default status code sent by MessageRequestObserverInterface::onSendCompleted() to SERVER_OTHER_ERROR, and mapped HTTP code 500 to SERVER_INTERNAL_ERROR_V2.
- Added support for parsing stream duration out of playlists.
- Added a configuration option ("sampleApp":"displayCardsSupported") that allows the displaying of display cards to be enabled or disabled.
- Named Timers and Reminders have been updated to fall back to the on-device background audio sound when cloud urls cannot be accessed or rendered.
Bug Fixes
- Removed floating point dependencies from core SDK libraries.
- Fixed bug in SpeechSynthesizer where it's erroneously calling stop more than once.
- Fixed an issue in ContentFetcher where it could hang during destruction until an active GET request completed.
- Fixed a couple of parsing bugs in LibCurlHttpContentFetcher related to case-sensitivity and mime-type handling.
- Fixed a bug where MediaPlayerObserverInterface::onPlaybackResumed() wasn't being called after resuming from a pause with a pending play/resume.
- Fixed a bug in LibCurlContentFetcher where it could error out if data is written to the SDS faster than it is consumed.
- The GStreamer-based MediaPlayer reference implementation now uses the ACL HTTP configured client.
- An API change has been made to MediaPlayerInterface::setSource(). This method now takes in an optional offset as well to allow for immediately streaming to the offset if possible.
- Next and Previous buttons now work with Audible.
- Pandora resume stuttering is addressed.
- Pausing and resuming Amazon music no longer seeks back to the beginning of the song.
- libcurl CURLOPT_NOSIGNAL option is set to 1 (https://curl.haxx.se/libcurl/c/CURLOPT_NOSIGNAL.html) to avoid crashes observed in SampleApp.
- Fixed the timing of the PlaybackReportIntervalEvent and PlaybackReportDelayEvent as specified in the directives.
- Fixed potential deadlocks in MediaPlayer during shutdown related to queued callbacks.
- Fixed a crash in MediaPlayer that could occur if the network is disconnected during playback.
- Fixed a bug where music could keep playing while Alexa is speaking.
- Fixed a bug which was causing problems with pause/resume and next/previous with Amazon Music.
- Fixed a bug where music could briefly start playing between speaks.
- Fixed a bug where HLS playlists would stop streaming after the initial playlist had been played to completion.
- Fixed a bug where Audible playback could not advance to the next chapter.
- Fixed some occurrences of SDK entering the IDLE state during the transition between Listening and Speaking states.
- Fixed a bug where PlaybackFinished events were not reporting the correct offset.
- An API change has been made to MediaPlayerInterface::getOffset(). This method is now required to return the final offset when called after playback has stopped.
- Fixed a problem where AIP was erroneously resetting its state upon getting a cancelDirective() callback.
Known Issues
- Capability agent for Notifications is not included in this release.
ACL
's asynchronous receipt of audio attachments may manage resources poorly in scenarios where attachments are received but not consumed.- GUI cards don't show for Kindle.
- The new SpeechSynthesizerState state values GAINING_FOCUS and LOSING_FOCUS were added as part of a work-around. The will likely be removed in subsequent releases.
- With the gstreamer-based MediaPlayer, after muting and unmuting, the next item starts playing rather than continuing with the current item.