从Google Input SDK迁移
亚马逊Input SDK可以帮助您的应用在各种设备上为用户提供键盘和鼠标输入控件。Google Input SDK专门用于支持Google Play Games的设备和处理帮助屏幕调用的服务。亚马逊Input SDK支持所有兼容的Android设备,并让您可以控制控件帮助屏幕的显示。
什么是Google Input SDK?
Google Input SDK适用于在Google Play Games上运行的游戏。通过Google Input SDK,可以为游戏注册其键盘和鼠标控件,并且Google Play Games会在收到请求时显示控件。Google Input SDK仅在支持Google Play Games的设备上可用,不适用于亚马逊设备、Windows 11设备或其他Android设备。
迁移至亚马逊Input SDK
如果您的应用已经与Google Input SDK集成,请考虑迁移到亚马逊Input SDK。亚马逊Input SDK使用的接口与Google Input SDK所用的相似。因此,在更新导入语句后,您为支持Google Input SDK而编写的大多数代码都可以用于亚马逊Input SDK,只需要很少的更改。
添加对于亚马逊Input SDK支持的步骤
要添加对于亚马逊Input SDK的支持,请使用以下步骤。
- 将亚马逊Input SDK作为依赖项添加到您的项目中。有关详细信息,请参阅将Input SDK添加到您的项目。
- 实现
InputMappingProvider
接口。下面的代码显示了如何以Java创建输入映射提供方:public class CustomInputMapProvider implements InputMappingProvider { @Override public InputMap onProvideInputMap() { InputAction jumpAction = InputAction.create( "Jump", MyGameActions.JUMP, //此处MyGameActions是游戏中的枚举 InputControls.create( Collections.singletonList(KeyEvent.KEYCODE_SPACE), Collections.emptyList() ) ); InputAction moveAction = InputAction.create( "Move", MyGameActions.MOVE, InputControls.create( Collections.emptyList(), Collections.singletonList(InputControls.MOUSE_MOVEMENT) ) ); InputGroup movementInputGroup = InputGroup.create("Basic Movement", Arrays.asList(moveAction, jumpAction)); return InputMap.create(Arrays.asList(movementInputGroup), MouseSettings.create(true, true)); } }
- 根据设备环境,从亚马逊Input SDK或Google Input SDK注册输入映射。有关详细信息,请参阅同时支持亚马逊Input SDK和Google Input SDK。
- 亚马逊Input SDK需要在应用中处理帮助屏幕调用。Google Input SDK不需要如此。请确保仅在应用使用亚马逊Input SDK注册输入映射的情况下启用此方案。
有关API的更多详细信息,请参阅亚马逊Input SDK。
同时支持亚马逊Input SDK和Google Input SDK
Google Input SDK需要搭配Google Play Games服务使用。如果您希望在应用中同时支持亚马逊Input SDK和Google Input SDK,亚马逊应用商店建议您在Google Play Games服务不可用的设备上启用亚马逊Input SDK。这包括亚马逊Fire设备、Windows 11设备和一些Android设备。
为此,请确定Google Play Games API是否可用,如以下示例所示。
boolean isGPGEnabled = getPackageManager()
.hasSystemFeature("com.google.android.play.feature.HPE_EXPERIENCE");
if (isGPGEnabled) {
//初始化Google Input SDK输入客户端
com.google.android.libraries.play.games.inputmapping
.InputMappingClient inputMappingClient = com.google.android.libraries.play
.games.inputmapping.Input.getInputMappingClient(this);
inputMappingClient.setInputMappingProvider(new PayGamesInputMapProvider());
} else {
//初始化亚马逊Input SDK输入客户端
com.amazon.device.inputmapping.input.InputMappingClient inputMappingClient
= com.amazon.device.inputmapping.Input.getInputMappingClient(this)
inputMappingClient.setInputMappingProvider(new CustomInputMapProvider());
}
val IsGooglePlayGamesEnabled = packageManager
.hasSystemFeature("com.google.android.play.feature.HPE_EXPERIENCE");
if (IsGooglePlayGamesEnabled) {
//初始化Google Input SDK输入客户端
val inputMappingClient = com.google.android.libraries.play
.games.inputmapping.Input.getInputMappingClient(this);
inputMappingClient.setInputMappingProvider(PayGamesInputMapProvider());
} else {
//初始化亚马逊Input SDK输入客户端
val inputMappingClient = com.amazon.device.inputmapping.input.Input
.getInputMappingClient(this);
inputMappingClient.inputMappingProvider = CustomInputMapProvider();
}
using AmazonInputSDK = Amazon.InputSDK.Input;
using GoogleInputSDK = Google.Play.InputMapping;
//在init方法内
public static bool IsGooglePlayGamesEnabled => PackageManager.Call<bool>("hasSystemFeature",
"com.google.android.play.feature.HPE_EXPERIENCE");
if (isGooglePlayGamesEnabled){
var inputMappingClient = GoogleInputSDK.GetInputMappingClient();
inputMappingClient.SetInputMappingProvider(new MyInputMappingProvider());
else {
var inputMappingClient = AmazonInputSDK.GetInputMappingClient();
inputMappingClient.SetInputMappingProvider(new MyInputMappingProvider());
}
帮助屏幕调用
通过Google Input SDK,Google Play Games服务可以控制何时显示帮助屏幕。通过亚马逊Input SDK,您可以控制如何处理帮助屏幕调用。
要显示帮助屏幕,请考虑向用户显示一个视觉元素,在单击该元素时会打开帮助屏幕。您可以将视觉指示器放置在游戏窗口中,也可以放置在单独的屏幕中,例如首选项或控件页面。
相关资源
Last updated: 2024年3月5日