Skip to content
This repository has been archived by the owner on Jan 16, 2024. It is now read-only.

Releases: alexa/avs-device-sdk

v1.10

24 Oct 18:45
Compare
Choose a tag to compare

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 populate AlexaClientSDKConfig.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 new z command.
  • Added ExternalMediaPlayerObserver, which receives notification of player state, track, and username changes.
  • HTTP2ConnectionInterface was factored out of HTTP2Transport to enable unit testing of HTTP2Transport and re-use of HTTP2Connection 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 to DialogUXState in order to handle EXPECT_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 a THINKING and IDLE state.
  • Fixed a bug in which the AudioPlayer attempted to play when it wasn't in the FOREGROUND 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

08 Sep 00:40
Compare
Choose a tag to compare

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 the System interface has been updated to support SoftwareInfo.

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 and PlaybackStutterFinished 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 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 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

09 Jul 21:47
Compare
Choose a tag to compare

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 now AVS_SPEAKER_VOLUME.
    • LOCAL is now AVS_ALERTS_VOLUME.

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 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

28 Jun 00:18
Compare
Choose a tag to compare

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 for BlueZ implementations of BlueZBluetoothDevice and BlueZHostController.

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 own glib 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 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 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

04 May 22:56
Compare
Choose a tag to compare

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

19 Apr 01:06
Compare
Choose a tag to compare

Enhancements

  • AuthDelegate and AuthServer.py have been replaced by CBLAUthDelegate, which uses Code Based Linking for authorization.
  • Added new properties to AlexaClientSDKConfig:
    • cblAuthDelegate - This object specifies parameters for CBLAuthDelegate.
    • miscDatabase - A generic key/value database to be used by various components.
    • dcfDelegate - This object specifies parameters for DCFDelegate. Within this object, values were added for endpoint and overridenDcfPublishMessageBody. endpoint is the endpoint for the Capabilities API. overridenDcfPublishMessageBodyis the message that is sent to the Capabilities API. Note: Values in the dcfDelegate object will only work in DEBUG builds.
    • deviceInfo - Specifies device-identifying information for use by the Capabilities API and CBLAuthDelegate.
  • 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 in AlexaClientSDKConfig.
  • Added audioSink as a configuration option. This allows users to override the audio sink element used in Gstreamer.
  • 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> OR SampleApp -C file1 -C file2 ... -L loglevel.

Bug Fixes

  • Fixed Issues 447 and 553.
  • Fixed the AttachmentRenderSource's handling of BLOCKING AttachmentReaders.
  • Updated the Logger implementation to be more resilient to nullptr 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 uses GAINING_FOCUS and LOSING_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 the deviceInfo section of AlexaClientSDKConfig.json, the error will be reported as an unrecoverable authorization error, rather than a more specific error.

v1.6

09 Mar 00:59
Compare
Choose a tag to compare

Enhancements

  • rapidJson is now included with "make install".
  • Updated the TemplateRuntimeObserverInterface to support clearing of displayCards.
  • 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 uses GAINING_FOCUS and LOSING_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

12 Feb 23:49
Compare
Choose a tag to compare

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 the sampleApp object as an integer value named firmwareVersion.
  • The new f command was added to the SampleApp 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 called logger, and the value itself is named logLevel. This allows you to limit the degree of logging to that default value, such as ERRORor INFO.

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 the GStreamer-based MediaPlayer implementation.
  • The TZ variable no longer needs to be set to UTC when building the SampleApp.
  • 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 to UrlContentToAttachmentConverter.h,and UrlToAttachmentConverter.cpp to UrlContentToAttachmentConverter.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 uses GAINING_FOCUS and LOSING_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

13 Jan 00:15
Compare
Choose a tag to compare

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 the SampleApp by providing a positive decimal integer as the "firmwareVersion" value in "sampleApp" object of the AlexaClientSDKConfig.json. The reported firmware version can be updated after starting the SampleApp by calling SoftwareInfoSender::setFirmwareVersion(). This code path can be exercised in the SampleApp 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 in Config.
  • 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 call executeStop() in cancelDirective().
  • 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 uses GAINING_FOCUS and LOSING_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

11 Dec 14:29
Compare
Choose a tag to compare

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.