Configurable SDKClient
The SDKClient
consists of the SDKClientBuilder
and the SDKClientRegistry
. Together they provide a configurable method that enables you to add AVS Device SDK features to your device.
The AVS Device SDK provides a few feature clients to conveniently add functionality to your applications. The feature clients add functionality on top of the functionality provided by the DefaultClient
. You can use the SDKClientBuilder
to construct these features in an appropriate order and make them available in the SDKClientRegistry
. The DefaultClient
is provided as one of the feature clients.
DefaultClient
in AVS Device SDK 1.2x, you can continue to use the DefaultClient
without having to use the SDKClient
.Feature clients
Feature client | Description | Depends on |
---|---|---|
AlexaPresentationFeatureClient |
Provides support for APL directives through the use of Alexa.Presentation and Alexa.Presentation.APL components |
DefaultClient |
PresentationOrchestratorFeatureClient |
Provides functionality to manage and track the lifecycle of presentations across multiple windows through the use of the PresentationOrchestrator , PresentationOrchestratorClient , and VisualTimeoutManager components |
VisualStateTrackerFeatureClient |
VisualCharacteristicsFeatureClient |
Provides functionality to report the visual characteristics of a device through the use of the VisualCharacteristics and VisualCharacteristicsSerializer components |
DefaultClient VisualStateTrackerFeatureClient (optional) |
VisualStateTrackerFeatureClient |
Provides visual state tracking functionality through the use of the VisualActivityTracker and PresentationOrchestratorStateTracker components |
DefaultClient |
The following example shows how the IPCServerSampleApp
uses all these feature clients to create a Smart Screen Sample Application.
/*
* Creating the various feature clients, which adds all the features that are used by the application.
* The FeatureClientBuilder connects them together and builds a single client that can access them.
*/
sdkClient::SDKClientBuilder sdkClientBuilder;
/*
* Creating the DefaultClient builder. This client builds most of the core functionality required by the
* application.
*/
auto defaultClientBuilder = defaultClient::DefaultClientBuilder::create(...);
sdkClientBuilder.withFeature(std::move(defaultClientBuilder));
/**
* Creating the VisualCharacteristicsFeatureClientBuilder, which adds visual characteristics features to the
* application.
*/
auto visualCharacteristicsFeatureBuilder = featureClient::VisualCharacteristicsFeatureClientBuilder::create();
sdkClientBuilder.withFeature(std::move(visualCharacteristicsFeatureBuilder));
/**
* Creating the VisualStateTrackerFeatureClientBuilder, which adds visual state tracking features to the
* application.
*/
auto visualStateTrackerFeatureBuilder = featureClient::VisualStateTrackerFeatureClientBuilder::create();
sdkClientBuilder.withFeature(std::move(visualStateTrackerFeatureBuilder));
/**
* Creating the PresentationOrchestratorFeatureClientBuilder, which adds presentation orchestrator features to
* the application.
*/
auto presentationOrchestratorFeatureBuilder = featureClient::PresentationOrchestratorFeatureClientBuilder::create();
sdkClientBuilder.withFeature(std::move(presentationOrchestratorFeatureBuilder));
/**
* Creating the AlexaPresentationFeatureClientBuilder, which adds APL features to the application.
*/
auto alexaPresentationFeatureBuilder =
featureClient::AlexaPresentationFeatureClientBuilder::create(APLVersion, aplRuntimePresentationAdapter);
sdkClientBuilder.withFeature(std::move(alexaPresentationFeatureBuilder));
m_clientRegistry = sdkClientBuilder.build();
if (!m_clientRegistry) {
ACSDK_CRITICAL(LX("Failed to build SDK Client!"));
return false;
}
auto defaultClient = m_clientRegistry->get<defaultClient::DefaultClient>();
auto poFeatureClient = m_clientRegistry->get<featureClient::PresentationOrchestratorFeatureClient>();
auto aplFeatureClient = m_clientRegistry->get<featureClient::AlexaPresentationFeatureClient>();
Related topics
Last updated: Nov 30, 2022