スキルのLambda関数でのAPL Viewport特性
スキルサービスに送信されたリクエストには、デバイスがAPLをサポートしている場合、viewport特性が含まれます。スキルコードのこの情報を使用して、デバイスの表示特性に依存する、カスタマイズした応答を作成できます。詳細については、Viewportプロパティを参照してください。
このリクエストのViewportオブジェクト
viewportの詳細は、スキルリクエストのcontext.Viewport
オブジェクトで確認できます。
{
"version": "1.0",
"session": {
...
},
"context": {
"AudioPlayer": {
"playerActivity": "IDLE"
},
"Display": {
"token": "listToken"
},
"Viewport": {
"experiences": [
{
"canRotate": true,
"canResize": true
},
{
"canRotate": false,
"canResize": false
}
],
"shape": "RECTANGLE",
"pixelWidth": 1024,
"pixelHeight": 600,
"dpi": 160,
"currentPixelWidth": 640,
"currentPixelHeight": 500,
"touch": [ "SINGLE" ],
"keyboard": [ "DIRECTION" ],
"video": {
"codecs": ["H_264_42", "H_264_41"]
}
},
"System": {
...
}
},
"request": {
...
}
}
プロパティ
viewport
オブジェクトでは、次のプロパティが定義されています。
プロパティ | 型/値 | 説明 |
---|---|---|
experiences |
experience オブジェクトの配列 |
ユーザーがviewportととの対話で求めている別のモードです。 |
shape |
ROUND またはRECTANGLE |
viewportの形状です。 |
pixelHeight |
整数 | ピクセル単位のviewportの高さです。 |
pixelWidth |
整数 | ピクセル単位のviewportの幅です。 |
currentPixelWidth |
整数 | 現在使用しているピクセル単位のviewportの幅です。 |
currentPixelHeight |
整数 | 現在使用しているピクセル単位のviewportの高さです。 |
dpi |
整数 | viewportのピクセル密度です。 |
touch |
文字列の配列 | viewportがサポートするタッチイベントです。 |
keyboard |
文字列の配列 | viewportとの対話で使用する入力メカニズムです。 |
video |
オブジェクト | デバイスでのビデオ再生に使用できる技術の仕様です。 |
エクスペリエンス
experiences
プロパティには、デバイスがサポートしているエクスペリエンスのタイプのリストが含まれています。エクスペリエンスのタイプは、viewportがサポートするモードによって異なります。この情報を使用して、特定のエクスペリエンスでのスキルの動作を最適化できます。たとえば、タブレットデバイスには2つの異なるエクスペリエンスがあります。1つは、タブレットがドックに装着されている場合、もう1つはユーザーがタブレットを手に持っている場合です。これらの場合、スキルの表示応答は両方のエクスペリエンスに最適化される必要があります。デバイスの所有者は、自由にエクスペリエンスを切り替えることができるようにするためです。
experienceプロパティ
プロパティ | 型/値 | 説明 |
---|---|---|
canRotate |
ブール値 | viewportが90、180、270度回転できるかどうかを示します。 |
canResize |
ブール値 | viewportのサイズが変更できるかどうかを示します。 |
pixel高さおよび幅
pixelHeight
およびpixelWidth
プロパティは、高さと幅が上限の場合にviewportで表示されるピクセル数を表します。これらの値は静的なデバイスの向きとみなされ、viewportの領域が現在他のアプリケーションで使用されているかいないかに関係なく、viewport全体のサイズを表します。
現在のpixel幅および高さ
currentPixelWidth
およびcurrentPixelHeight
プロパティは、Alexaがエクスペリエンスをレンダリングできる縦横のピクセル数を表します。これらの値も静的なデバイスの向きとみなされます。
形状
画面のshape
は、ROUND
またはRECTANGLE
のどちらかに設定されています。
dpi
画面非依存ピクセル(dp)は、携帯電話を見るときの距離で画面を持ち、画面のピクセル密度が1インチ(3cm)あたり約160ピクセルであると仮定した場合の画面のビジュアルサイズを表す測定単位です。物理的な大きさが同じ2つの画面を同じ距離から見た場合、画面の実際のピクセル密度にかかわらず、2つの画面のdpディメンションはほぼ同じになります。
viewportのdpi(インチあたりのドット数)とは、人が見たとおりのポイントまたはピクセルのサイズを表した値であり、画面の実際のインチあたりのピクセル数とは異なります。dpiを求める公式は次のとおりです。
dpi = 160 * (ピクセルサイズ/dpサイズ)
簡略化のため、dpiの値は120、160、240、320などのバケットにまとめられています。
タッチ
touch
プロパティは、デバイスがサポートするタッチ入力の種類を表します。touch
配列には、次の値を含めることができます。
SINGLE
- デバイスがシングルタッチ入力をサポートしていることを示します。
キーボード
keyboard
プロパティは、viewportとの対話に使用できる物理ボタン入力メカニズムを表します。keyboard
配列には、次の値を含めることができます。
DIRECTION
- ボタンと同様に、現在の位置で選択する上下左右方向の入力があります。
ビデオ
video
プロパティは、デバイスでのビデオ再生に使用できる技術を詳細に指定します。videoプロパティを使用して、APL応答に送信するビデオリソースの種類を決定します。たとえば、スキルのAPL応答が、デバイスがサポートするビデオコーデックのレベルに応じて、異なるエンコードのビデオリソースを返す場合があります。
画面付きのデバイスでも、ビデオ再生をサポートしていないものもあることに注意してください。この場合、video
プロパティはありません。スキルにビデオが含まれる場合、このプロパティを確認して、ビデオをサポートしていないデバイス向けに適切なエクスペリエンスを提供するようにしてください。ビデオをサポートしていないデバイスにVideo
を送信する場合は、そのコンポーネントは画面上に表示されていますが、コンテンツは表示されないため、ユーザーには画面に空白の領域が見えることになります。
videoプロパティ
プロパティ | 型/値 | 説明 |
---|---|---|
codecs |
文字列の配列 |
出力デバイスがサポートするビデオコーデックです。サポートされる値:
|
コードのviewport情報にアクセスする
Alexa Skills Kit SDKsには、スキルのリクエストからviewport情報を取得する、ヘルパー関数が含まれます。getViewportProfile
メソッドは、context.Viewport
内で複数の判断基準を確認して、viewportプロファイルパッケージで使用できるviewportプロファイルに対応する値を返します。
HUB-ROUND-SMALL
HUB-LANDSCAPE-SMALL
HUB-LANDSCAPE-MEDIUM
HUB-LANDSCAPE-LARGE
TV-LANDSCAPE-XLARGE
UNKNOWN-VIEWPORT-PROFILE
このサンプルコードは、Alexa Skills Kit SDK for Node.js(v2)を使用しています。 このコードを含む完全な作業用サンプルは、次を参照してください。 APL Pager Karaokeサンプル
ハンドラーでは、以下のようにgetViewportProfile
にアクセスします。
const Alexa = require('ask-sdk-core');
//...他のコード
const viewportProfile = Alexa.getViewportProfile(handlerInput.requestEnvelope);
// HUB_LANDSCAPE_LARGEなどのViewportProfileを返します。
このサンプルコードは、Alexa Skills Kit SDK for Pythonを使用しています。 このコードを含む完全な作業用サンプルは、次を参照してください。 APL Pager Karaokeサンプル
ハンドラーでは、以下のようにget_viewport_profile
にアクセスします。
from ask_sdk_core.utils import viewport
# other code...
viewport.get_viewport_profile
# Returns a ViewportProfile such as viewport.ViewportProfile.HUB_LANDSCAPE_MEDIUM
このサンプルコードはAlexa Skills Kit SDK for Javaを使用しています。 このコードを含む完全な作業用サンプルは、次を参照してください。 APL Pager Karaokeサンプル
ViewportUtils
静的クラスを使用して、viewport情報を取得してください。以下のコードは、ViewportProfile
列挙値から値を返します。
ViewportProfile viewportProfile = ViewportUtils
.getViewportProfile(input.getRequestEnvelope());