Amazon Input SDK
Amazon Input SDKを使用すると、キーボードとマウスでアプリを操作する方法を説明するヘルプダイアログをユーザーに表示できます。これにより、通常はアプリの操作にキーボードとマウスを使用しないユーザーにも快適で便利なエクスペリエンスを提供できます。このガイドに従う前に、アプリでキーボードとマウスのサポートが有効になっていることを確認してください。キーボードとマウスのサポートを追加する方法については、Windows互換性ガイドの入力コントロールを参照してください。
Unityを使用している場合は、Unity用Amazon Input SDKを参照してください。
要件
Amazon Input SDKを使用するには、APIレベル19以上のバージョンのAndroid SDKが必要です。
Input SDKをプロジェクトに追加する方法
以下からAmazon Input SDKをダウンロードします。
ダウンロードには、AARファイル、Javadoc、サンプルアプリが含まれています。
オプション1: 手動でSDKを追加する方法
プロジェクトにAmazon Input SDKを追加するには、以下の手順に従って、AARファイルをライブラリとしてインポートします。
- Android Studioでプロジェクトを開きます。Projectフォルダ構造ビューを使用してください。
- appフォルダの下にlibsフォルダが存在しない場合は作成します。AARファイルをapp/libsフォルダにコピーします。
- プロジェクトフォルダを右クリックし、[Open Module Settings] を選択します。
- サイドバーで [Dependencies] をクリックし、アプリモジュール (または同等のモジュール) を選択します。
- [Declared Dependencies] の下にある [+] 記号をクリックし、SDK AARの場所のパス(libs/inputmapping-[x].aar)を指定します。これにより、依存関係が自動的にbuild.gradleファイルに追加されます。
- [OK] をクリックします。
-
アプリレベルのbuild.gradleファイルに依存関係が追加されていることを確認します。以下に例を示します。
dependencies { implementation files('libs/inputmapping-1.0.1.aar') }
- アプリレベルのbuild.gradleファイルに次の2つの依存関係を追加します。
implementation 'com.android.support.constraint:constraint-layout:2.0.4' implementation 'com.android.support:recyclerview-v7:28.0.0'
オプション2: Maven Centralを使用してSDKを追加する方法
- 次のように、アプリレベルのbuild.gradleファイルの依存関係セクションにAmazon Input SDKを追加します。
dependencies {
...
implementation 'com.amazon.device.inputmapping:inputmapping:1.0.1'
}
- プロジェクトの最上位のbuild.gradleファイルで、Maven Centralリポジトリが定義されていることを確認します。定義されていない場合は次のように追加します。
allprojects {
repositories {
mavenCentral()
}
dependencies {
...
}
}
入力マップの作成
Amazon Input SDKでは、次の図に示すように、キーイベントとマウスクリックを入力アクションにマッピングし、それらのアクションを入力グループにグループ化して、入力グループから入力マップを作成します。
入力アクションの定義
入力アクションとは、アプリのアクションに対応するイベントです。入力アクションは、キーまたはキーの組み合わせにマッピングできます。次の例では、「Jump」アクションがSpaceキーに、「Move」アクションがマウス移動にマッピングされます。
InputAction jumpInputAction = InputAction.create(
"Jump",
MyGameActions.JUMP, // ここでのMyGameActionsはゲーム内の列挙体
InputControls.create(
Collections.singletonList(KeyEvent.KEYCODE_SPACE),
Collections.emptyList()
)
);
InputAction cmbMove = InputAction.create(
"Move",
MyGameActions.MOVE,
InputControls.create(
Collections.emptyList(),
Collections.singletonList(InputControls.MOUSE_MOVEMENT)
)
);
val jumpInputAction = InputAction.create(
"Jump",
MyGameActions.JUMP.value, // ここでのMyGameActionsはゲーム内の列挙体
InputControls.create(
listOf(KeyEvent.KEYCODE_SPACE),
emptyList()
)
)
val move = InputAction.create(
"Move",
MyGameActions.MOVE.ordinal,
InputControls.create(
emptyList(),
listOf(InputControls.MOUSE_MOVEMENT)
)
)
例で使用されているInput SDKのメソッド:
InputAction.create(String actionLabel, int uniqueId, InputControls inputControls)
- 考慮事項:
uniqueId
には列挙値を使用します。
- 考慮事項:
InputControls.create(List<Integer> keyboardActions, List<Integer> mouseActions)
- 考慮事項:
keyboardActions
には、AndroidフレームワークのKeyEvent
クラスのキーコード定数を使用します。mouseActions
には、Amazon Input SDKのInputControls
クラスの定数を使用します。
- 考慮事項:
入力グループの定義
入力グループとは、複数の入力アクションのグループです。入力グループには、グループラベルと、そのグループに属する入力アクションのリストが含まれます。各InputAction
は、いずれかのInputGroup
に関連付けられている必要があります。次の例では、前のセクションで定義した入力アクションを使用して、「Basic Movement」という入力グループを作成します。
InputGroup movementInputGroup = InputGroup.create("Basic Movement",
Arrays.asList(jumpInputAction, move));
var movementGroup = InputGroup.create("Basic Movement",
listOf(move, jumpInputAction)
)
例で使用されているInput SDKのメソッド:
InputGroup.create(String groupName, List<InputAction> actions)
入力マップの作成
入力マップは、アプリの入力グループのコレクションです。入力マップには、アプリに適用できるマウス設定も格納されます。すべての入力アクションを定義して入力グループにグループ化したら、次の例のように入力マップを作成します。
return InputMap.create(
Arrays.asList(movementInputGroup, specialInputGroup),
MouseSettings.create(true, true));
return InputMap.create(
listOf(moveGroup, gameControls),
MouseSettings.create(true, true)
)
例で使用されているInput SDKのメソッド:
InputMap.create(List<InputGroup> inputGroups, MouseSettings mouseSettings)
MouseSettings.create(boolean adjustableSensitivity, boolean invertedYAxis)
入力マッピングプロバイダーの作成
リクエストに応じて入力マップを提供するには、InputMappingProvider
インターフェイスを実装します。ユーザーがヘルプ画面をリクエストすると、Amazon Input SDKは入力マッピングプロバイダーを呼び出します。
public class CustomInputMapProvider implements InputMappingProvider {
@Override
public InputMap onProvideInputMap() {
// 入力マップを返します。
}
}
class CustomInputMapProvider: InputMappingProvider {
override fun onProvideInputMap(): InputMap {
// 入力マップを返します。
}
}
入力マッピングプロバイダーの登録
一度にアクティブにできる入力マップは1つだけです。ユーザーがヘルプ画面にアクセスすると、現在アクティブな入力マップが表示されます。入力マッピングプロバイダーをアクティブな入力マッピングプロバイダーとして登録するには、次の例のようにInput静的クラスを使用します。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InputMappingClient inputMappingClient = Input.getInputMappingClient(this);
inputMappingClient.setInputMappingProvider(new CustomInputMapProvider());
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val inputMappingClient = Input.getInputMappingClient(this)
inputMappingClient.inputMappingProvider = CustomInputMapProvider();
}
アクティブな入力マッピングプロバイダーは、アクティビティが変わっても変更されず、ライフサイクルイベントの影響を受けません。ただし、InputMappingClient
を使用して別のアクティブな入力マッピングプロバイダーを設定すると、アクティブな入力マップを変更できます。
ヘルプ画面の表示
ヘルプ画面を表示できるようにするために、Amazonアプリストアでは、クリック時にヘルプ画面を開く視覚要素をユーザーに表示することをお勧めします。この視覚的なインジケーターは、ゲームウィンドウ内に配置することも、設定ページや管理ページなどの別の画面に配置することもできます。ヘルプ画面を表示するには、次のようにTriggerHandler.showHelp()
メソッドを使用します。
TriggerHandler.getInstance().showHelp(this, "マイアプリ");
TriggerHandler.getInstance().showHelp(this, "マイアプリ");
Amazon Input SDK APIリファレンス
このセクションでは、Amazon Input SDKのAPIの一部を紹介します。完全なAPIリファレンスについては、Amazon Input SDK APIリファレンス(英語のみ)を参照してください。
InputControls
InputControls.create(List<Integer> keyboardActions, List<Integer> mouseActions)
InputControls
オブジェクトは、キーボードアクションのリストとマウスアクションのリストを格納します。このオブジェクトは、静的メソッドのInputControls.create()
を使用して作成されます。
InputControls.create()
メソッドは新しいInputControls
オブジェクトを返します。InputControls
オブジェクトを使用して、InputAction
を作成します。
InputAction
InputAction.create(String actionLabel, int uniqueId, InputControls inputControls)
InputAction
オブジェクトは、ラベル、一意のID、InputControls
オブジェクトを格納します。このオブジェクトは、静的メソッドのInputAction.create()を使用して作成されます。
InputAction.create()
メソッドは新しいInputAction
オブジェクトを返します。InputAction
オブジェクトを使用して、InputGroup
を作成します。
InputGroup
InputGroup.create(String groupName, List<InputAction> actions)
InputGroup
オブジェクトは、名前とInputAction
オブジェクトのリストを格納します。このオブジェクトは、静的メソッドのInputGroup.create()
を使用して作成されます。
InputGroup.create()
メソッドは新しいInputGroup
オブジェクトを返します。InputGroup
をMouseSettings
と共に使用して、InputMap
を作成します。
MouseSettings
MouseSettings.create(boolean adjustableSensitivity, boolean invertedYAxis)
MouseSettings
オブジェクトは、感度の調整とY軸の反転を表すboolean型のマウス設定を格納します。このオブジェクトは、静的メソッドのMouseSettings.create()
を使用して作成されます。
MouseSettings.create()
メソッドは新しいMouseSettings
オブジェクトを返します。MouseSettings
をInputGroup
と共に使用して、InputMap
を作成します。
InputMap
InputMap.create(List<InputGroup> inputGroups, MouseSettings mouseSettings)
InputMap
オブジェクトは、InputGroup
オブジェクトのリストとMouseSettings
オブジェクトを格納します。このオブジェクトは、静的メソッドのInputMap.create()を使用して作成されます。
InputMap.create()
メソッドは新しいInputMap
オブジェクトを返します。InputMappingProvider
の実装では、InputMap
を戻り値として返します。
InputMappingProvider
InputMappingProvider
インターフェイスは、onProvideInputMap()
メソッドを提供します。独自の実装でこのメソッドをオーバーライドして、InputMap
を返します。ユーザーがヘルプ画面にアクセスすると、InputMap
のデータが表示されます。
InputMappingClient
InputMappingClient
を使用すると、InputMappingProvider
を管理できます。以下のメソッドがあります。
setInputMappingProvider(InputMappingProvider inputMappingProvider)
:そのInputMappingClient
のインスタンスにInputMappingProvider
を割り当てます。clearInputMappingProvider()
:現在割り当てられているInputMappingProvider
を削除し、nullに設定します。getInputMappingProvider()
:現在割り当てられているInputMappingProvider
を返します。
Input
このクラスは、InputMappingClient
をインスタンス化するために使用されます。以下のメソッドがあります。
getInputMappingClient(Activity activity)
:InputMappingClient
のシングルトンインスタンスを返します。
TriggerHandler
このクラスは、ヘルプダイアログを表示するメソッドを提供します。以下のメソッドがあります。
getInstance()
:TriggerHandler
のシングルトンインスタンスを返します。showHelp(Activity activity, String title)
:入力のヘルプダイアログボックスを表示します。登録されているInputMap
からデータを取得し、ダイアログボックスに表示します。次のパラメーターを受け取ります。activity
- ヘルプダイアログを含むアクティビティtitle
- ダイアログに表示するアプリのタイトル
showHelp(Activity activity, String title, UIMode uiMode)
:指定されたテーマ(ライトまたはダーク)で入力のヘルプダイアログボックスを表示します。次のパラメーターを受け取ります。activity
- ヘルプダイアログを含むアクティビティtitle
- ダイアログに表示するアプリのタイトルuiMode
- テーマの設定。有効な値はUIMode.AUTO
、UIMode.LIGHT
、UIMode.DARK
setUiMode(UIMode uiMode)
:ダイアログボックスのテーマを設定します。次のパラメーターを受け取ります。uiMode
- テーマの設定。有効な値はUIMode.AUTO
、UIMode.LIGHT
、UIMode.DARK
UIMode
これは、ヘルプダイアログでテーマを設定するために使用できる定数を定義する列挙型です。定数は以下のとおりです。
AUTO
- システムテーマに従いますDARK
- ダークテーマを使用しますLIGHT
- ライトテーマを使用します
Last updated: 2024年3月5日