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

Commit

Permalink
Version 2.1 alexa-smart-screen-sdk
Browse files Browse the repository at this point in the history
***Enhancements***
* Upgraded dependency to Device SDK 1.19.1
* Provided a reference implementation for rendering of captions
* Support for APL 1.3
* Added support for visual metrics
* Moved APL Core integration out of SampleApp into a standalone library

***Bug fixes***
* Fixed browser warnings caused by short-hand definition of "transition" property
* Fixed potentially invalid and corrupted data due to using multiple rapidjson allocators

***Known issues***
* SampleApp screen cut off at the bottom on fullscreen when using emulateDisplayDimensions configuration
* Display of captions is not in sync with Alexa audio and is as expected
* Memory leak issue with resetDevice member function in GUIManager
* Notification cues are not playing
* Potential memory leak issue with executeCommands directive
* Skill session remains alive for a short amount of time after exit
* Control buttons on the Flash briefing page is disabled
* Buttons on Now Playing display card do not update their visual states when updated by voice
* Scrolling on General Knowledge display card does not work when the content does not fit into screen
* Progress bar on Now Playing display card does not reflect the actual audio offset when such information is not provided in RenderPlayerInfo directive
  • Loading branch information
jason-amzn committed Jun 2, 2020
1 parent c2196be commit b6e5a4c
Show file tree
Hide file tree
Showing 252 changed files with 25,939 additions and 690 deletions.
27 changes: 26 additions & 1 deletion CHANGELOG.md
@@ -1,4 +1,29 @@
### v2.0.2 released 04/14/2019:
### v2.1.0 released 06/02/2020:

#### Enhancements
* Upgraded dependency to Device SDK 1.19.1
* Provided a reference implementation for rendering of captions
* Support for APL 1.3
* Added support for visual metrics
* Moved APL Core integration out of SampleApp into a standalone library

#### Bug fixes
* Fixed browser warnings caused by short-hand definition of "transition" property
* Fixed potentially invalid and corrupted data due to using multiple rapidjson allocators

#### Known issues
* SampleApp screen cut off at the bottom on fullscreen when using emulateDisplayDimensions configuration
* Display of captions is not in sync with Alexa audio and is as expected
* Memory leak issue with resetDevice member function in GUIManager
* Notification cues are not playing
* Potential memory leak issue with executeCommands directive
* Skill session remains alive for a short amount of time after exit
* Control buttons on the Flash briefing page is disabled
* Buttons on Now Playing display card do not update their visual states when updated by voice
* Scrolling on General Knowledge display card does not work when the content does not fit into screen
* Progress bar on Now Playing display card does not reflect the actual audio offset when such information is not provided in RenderPlayerInfo directive

### v2.0.2 released 04/14/2020:

#### Bug fixes
* Added support for Raspbian Buster.
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.1 FATAL_ERROR)

project(AlexaSmartScreenSDK VERSION 2.0.2 LANGUAGES CXX)
project(AlexaSmartScreenSDK VERSION 2.1 LANGUAGES CXX)
set(PROJECT_BRIEF "A cross-platform, modular SDK for multi modal interaction with the Alexa Voice Service")
configure_file (
"${PROJECT_SOURCE_DIR}/modules/Alexa/Utils/include/Utils/SmartScreenSDKVersion.h.in"
Expand Down
2 changes: 1 addition & 1 deletion NOTICE.txt
@@ -1,5 +1,5 @@
Alexa Smart Screen SDK
Copyright 2018-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.

*********************************
Alexa Smart Screen SDK COMPONENTS
Expand Down
25 changes: 16 additions & 9 deletions README.md
Expand Up @@ -15,7 +15,6 @@ The Alexa Smart Screen SDK depends on the following additional GitHub repos:

You can set up the Alexa Smart Screen SDK by using the following Quick Start Guides:
* [MacOS Quick Start Guide](https://github.com/alexa/alexa-smart-screen-sdk/wiki/MacOS-Quick-Start-Guide)
* [Ubuntu Quick Start Guide](https://github.com/alexa/alexa-smart-screen-sdk/wiki/Ubuntu-Quick-Start-Guide)
* [Raspberry Pi Quick Start Guide](https://github.com/alexa/alexa-smart-screen-sdk/wiki/Raspberry-Pi-Quick-Start-Guide) (Raspbian Stretch)

You can also create your device prototype by using an [Amazon-qualified development kit](https://developer.amazon.com/en-US/alexa/alexa-voice-service/dev-kits) that supports the Smart Screen SDK, such as:
Expand Down Expand Up @@ -64,20 +63,28 @@ All Alexa products should adopt the [Security Best Practices for Alexa](https://

## Optional Configurations

### Add voice chrome

The default implementation provides information on [Alexa state](https://github.com/alexa/alexa-smart-screen-sdk/blob/master/modules/GUI/SDK-GUI-API.md#alexastatechanged), which you can use to create voice chrome. Be sure to follow the [AVS Voice Chrome guidelines](https://developer.amazon.com/docs/alexa-voice-service/ux-design-attention.html#chrome).

### Run the GUI client with predefined device visual characteristics and GUI client configurations

We provide 4 different sample configuration files of predefined device visual characteristics and GUI client configurations. This can be found under `modules/GUI/config/guiConfigSamples`. To enable a predefined configuration,
You can pass any of them as an extra config file argument after the main Smart Screen SDK config file argument when running the Sample App.
We provide four different sample configuration files containing predefined device visual characteristics and GUI client configurations. These can be found under `modules/GUI/config/guiConfigSamples`.
You can pass any of them as an extra config file argument after the main Smart Screen SDK config file argument when running the Sample App, for example:
```
cd <pathTo>/ss-build
./modules/Alexa/SampleApp/src/SampleApp
-C <pathTo>/sdk-build/Integration/AlexaClientSDKConfig.json
-C <pathTo>/alexa-smart-screen-sdk/modules/GUI/config/SmartScreenSDKConfig.json
-C <pathTo>/alexa-smart-screen-sdk/modules/GUI/config/guiConfigSamples/GuiConfigSample_TvOverlayPortrait.json
-L INFO
```

### Remote control support

Exit and back remote control functionality is minimally supported by the Smart Screen SDK. The following behaviors are expected to occur:
Functionality for Exit and Back buttons (as found on a device's physical remote control) is minimally supported by the Smart Screen SDK. The following behaviors are expected to occur on execution of either a `BACK` or `EXIT` [navigationEvent](./modules/GUI/SDK-GUI-API#navigationevent):

* Clear the rendering screen - Exit fully out of the Alexa-presented display so that no static image or layout is left.
* Release the focus management - Release any focus management that might be held.

Using the predefined device visual characteristics, Esc and B are mapped to Exit and Back respectively.

## Release Notes and Known Issues

For a list of enhancements, bug fixes, and known issues, refer to [CHANGELOG.md](https://github.com/alexa/alexa-smart-screen-sdk/blob/master/CHANGELOG.md).
Using the default gui client configuration's [device keys](./modules/GUI/config/SmartScreenSDKConfig#device-keys-parameters), `Esc` and `B` are mapped to `EXIT` and `BACK` respectively.
4 changes: 4 additions & 0 deletions issue_template.md
Expand Up @@ -31,3 +31,7 @@
- [ ] Raspbian Stretch
- [ ] Raspbian Jessy
- [ ] Other - tell us more:

### Have you tried the same use case with AVS Device SDK SampleApp?
- [ ] The issue is not applicable to the AVS Device SDK SampleApp.
- [ ] The issue is not reproducible on the AVS Device SDK SampleApp.
6 changes: 6 additions & 0 deletions modules/Alexa/ApplicationUtilities/APLClient/CMakeLists.txt
@@ -0,0 +1,6 @@
cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
project(APLClient LANGUAGES CXX)

include(../../build/BuildDefaults.cmake)

add_subdirectory("src")
@@ -0,0 +1,115 @@
/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0/
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/

#ifndef ALEXA_SMART_SCREEN_SDK_APPLICATIONUTILITIES_APL_APLCLIENTBINDING_H_
#define ALEXA_SMART_SCREEN_SDK_APPLICATIONUTILITIES_APL_APLCLIENTBINDING_H_

#include <memory>
#include <string>
#include <rapidjson/document.h>
#include "AplCoreConnectionManager.h"
#include "AplCoreGuiRenderer.h"
#include "AplOptionsInterface.h"

namespace APLClient {

/**
* AplClientBinding abstracts away many of the implementation details of integrating with the APLCoreEngine and exposes
* a smaller interface to allow rendering of APL documents on a remote view host through a client provided IPC layer.
*/
class AplClientBinding {
public:
/**
* Constructor
*/
AplClientBinding(AplOptionsInterfacePtr options);

virtual ~AplClientBinding() = default;

/**
* Pass a message received from the viewhost to the @c AplClientBinding, this should be called before
* @c handleMessage and on a different thread to @c renderDocument.
* @note This is a workaround to allow support for devices which do not support synchronous sends
*
* @param message
* @return true if the message should be passed onwards to handleMessage, false if handling is complete
*/
bool shouldHandleMessage(const std::string& message);

/**
* Pass a message received from the viewhost to the @c AplClientBinding, should only be called if
* @c shouldHandleMessage returns true and must be run on the same thread as @c renderDocument
* @param message The message from the viewhost
*/
void handleMessage(const std::string& message);

/**
* Render an APL document
* @param document The document json payload
* @param data The document data
* @param viewports The supported viewports
* @param token The APL document token
*/
void renderDocument(
const std::string& document,
const std::string& data,
const std::string& viewports,
const std::string& token);

/**
* Clears the current APL document
*/
void clearDocument();

/**
* Execute an APL command sequence
* @param jsonPayload The JSON APL command payload
* @param token The APL document token
*/
void executeCommands(const std::string& jsonPayload, const std::string& token);

/**
* Interrupts the currently executing command sequence
*/
void interruptCommandSequence();

/**
* Requests the visual context
*/
void requestVisualContext(unsigned int stateRequestToken);

/**
* Updates the data source
* @param sourceType The source type
* @param jsonPayload The json payload containing the new data
* @param token The APL token
*/
void dataSourceUpdate(const std::string& sourceType, const std::string& jsonPayload, const std::string& token);

/**
* Updates the rendered document
* @note Ideally this function should should be called once for each screen refresh (e.g. 60 times per second)
*/
void onUpdateTick();

private:
AplOptionsInterfacePtr m_aplOptions;

AplCoreConnectionManagerPtr m_aplConnectionManager;

std::unique_ptr<AplCoreGuiRenderer> m_aplGuiRenderer;
};
} // namespace APLClient
#endif // ALEXA_SMART_SCREEN_SDK_APPLICATIONUTILITIES_APL_APLCLIENTBINDING_H_

0 comments on commit b6e5a4c

Please sign in to comment.