Changes in this update:
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.
Changes in this update:
**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](https://github.com/alexa/avs-device-sdk/issues/400) Fixed a bug where the alert reminder did not iterate as intended after loss of network connection.
* [Issue 477](https://github.com/alexa/avs-device-sdk/issues/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`](https://github.com/alexa/avs-device-sdk/blob/master/Integration/AlexaClientSDKConfig.json#L62) 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 sometimes hangs on exit.
* GDP receives a `SIGPIPE` when troubleshooting the Windows sample app.
**Enhancements**
* ContextManager now passes the namespace/name of the desired state to StateProv
iderInterface::provideState(). This is helpful when a single StateProvider obje
ct provides multiple states, and needs to know which one ContextManager is askin
g for.
* The mime parser was hardened against duplicate boundaries.
* Added functionality to add and remove AudioPlayer observers to the DefaultClie
nt.
* 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 lo
nger 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 a
nd poll/block until it arrives.
* Added support for blocking Writers in the SharedDataStream class.
* Changed the default status code sent by MessageRequestObserverInterface::onSen
dCompleted() 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 bac
kground 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.
- Changes in this update:
- Better GStreamer error reporting. MediaPlayer used to only report `MEDIA_ERROR_UNKNOWN`, now reports more specific errors as defined in `ErrorType.h`.
- Codebase has been formatted for easier reading.
- `DirectiveRouter::removeDirectiveHandler()` signature changed and now returns a bool indicating if given handler should be successfully removed or not.
- Cleanup of raw and shared pointers in the creation of `Transport` objects.
- `HTTP2Stream`s now have IDs assigned as they are acquired as opposed to created, making associated logs easier to interpret.
- `AlertsCapabilityAgent` has been refactored.
- Alert management has been factored out into an `AlertScheduler` class.
- Creation of Reminder (implements Alert) class.
- Added new capability agent for `PlaybackController` with unit tests.
- Added Settings interface with unit tests.
- Return type of `getOffsetInMilliseconds()` changed from `int64_t` to `std::chronology::milliseconds`.
- Added `AudioPlayer` unit tests.
- Added teardown for all Integration tests except Alerts.
- Implemented PlaylistParser.
- Bug fixes:
- AIP getting stuck in `LISTENING` or `THINKING` and refusing user input on network outage.
- SampleApp crashing if running for 5 minutes after network disconnect.
- Issue where on repeated user barge-ins, `AudioPlayer` would not pause. Specifically, the third attempt to “Play iHeartRadio” would not result in currently-playing music pausing.
- Utterances being ignored after particularly long TTS.
- GStreamer errors cropping up on SampleApp exit as a result of accessing the pipeline before it’s been setup.
- Crashing when playing one URL after another.
- Buffer overrun in Alerts Renderer.
- [SampleApp crashing when issuing "Alexa skip" command with iHeartRadio.](https://github.com/alexa/avs-device-sdk/issues/153)
- [`HTTP2Transport` network thread triggering a join on itself.](https://github.com/alexa/avs-device-sdk/issues/127)
- [`HTTP2Stream` request handling truncating exception messages.](https://github.com/alexa/avs-device-sdk/issues/67)
- [`AudioPlayer` was attempting an incorrect state transition from `STOPPED` to `PLAYING` through a `playbackResumed`.](https://github.com/alexa/avs-device-sdk/issues/138)
Changes in this update
- Added a fix to the sample app so that the StateSynchronization event is the first that gets sent to AVS.
- Added a POST_CONNECTED enum to ConnectionStatusObserver.
- StateSychronizer now automatically sends a StateSynchronization event when it receives a notification that ACL is CONNECTED.
- Added make install for installing the AVS Device SDK.
- Added an optional make networkIntegration for integration tests for slow network (only on Linux platforms).
- Added shutdown management which fully cleans up SDK objects during teardown.
- Fixed an issue with AudioPlayer barge-in which was preventing subsequent audio from playing.
- Changed Mediaplayer buffering to reduce stuttering.
- Known Issues:
- Connection loss during listening keeps the app in that state even after connection is regained. Pressing ‘s’ unsticks the state.
- Play/Pause media restarts it from the beginning.
- SpeechSynthesizer shows wrong UX state during a burst of Speaks.
- Quitting the sample app while AudioPlayer is playing something causes a segmentation fault.
- AudioPlayer sending PlaybackPaused during flash briefing.
- Long Delay playing live stations on iHeartRadio.
- Teardown warnings at the end of integration tests.
Changes in this update
- Added a getConfiguration() method to DirectiveHandlerInterface to register Capability Agents with Directive Sequencer.
- Fix race condition with reading attachments before a writer exists.
- Use of new Logging abstraction layer in modules - ADSL,AFML,ContextManager,AuthDelegate,AIP,KWD,Mediaplayer.
- Added ACL stream processing with Pause and redrive.
- Removed the dependency of ACL Library on Authdelegate.
- Added and interface to allow ACL to Add/Remove ConnectionStatusObserverInterface.
- Fixed compile errors in KittAi, DirectiveHandler and compiler warnings in AIP test.
- Corrected formatting on the files.
- Fixes for the following Github issues
- https://github.com/alexa/alexa-client-sdk/issues/21
- https://github.com/alexa/alexa-client-sdk/issues/25
Changes in this update:
- Added the SpeechSynthesizer, an implementation of the SpeechRecognizer capability agent.
- Implemented a reference MediaPlayer based on [GStreamer](https://gstreamer.freedesktop.org/) for audio playback.
- Added the MediaPlayerInterface that allows you to implement your own media player.
- Updated ACL to support asynchronous receipt of audio attachments from AVS.
Bug Fixes:
-Some intermittent unit test failures were fixed.
Known Issues:
-ACL's asynchronous receipt of audio attachments may manage resources poorly in scenarios where attachments are
received but not consumed.
- When an AttachmentReader does not deliver data for prolonged periods MediaPlayer may not resume playing the
delayed audio.