开发者控制台

从Google Input SDK迁移

从Google Input SDK迁移

Amazon Input SDK可以帮助您的应用在各种设备上为用户提供键盘和鼠标输入控件。Google Input SDK专门用于支持Google Play Games的设备和处理帮助屏幕调用的服务。Amazon 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设备。

迁移至Amazon Input SDK

如果您的应用已经与Google Input SDK集成,请考虑迁移到Amazon Input SDK。Amazon Input SDK使用的接口与Google Input SDK所用的相似。因此,在更新导入语句后,您为支持Google Input SDK而编写的大多数代码都可以用于Amazon Input SDK,只需要很少的更改。

添加对于Amazon Input SDK的支持的步骤

要添加对于Amazon Input SDK的支持,请使用以下步骤。

  1. 将Amazon Input SDK作为依赖项添加到您的项目中。有关详细信息,请参阅将Input SDK添加到您的项目
  2. 实现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));
         }
     }
    
  3. 根据设备环境,从Amazon Input SDK或Google Input SDK注册输入映射。有关详细信息,请参阅同时支持Amazon Input SDK和Google Input SDK
  4. Amazon Input SDK需要在应用中处理帮助屏幕调用。Google Input SDK不需要如此。请确保仅在应用使用Amazon Input SDK注册输入映射的情况下启用此方案。

有关API的更多详细信息,请参阅Amazon Input SDK

同时支持Amazon Input SDK和Google Input SDK

Google Input SDK需要搭配Google Play Games服务使用。如果您希望在应用中同时支持Amazon Input SDK和Google Input SDK,亚马逊应用商店建议您在Google Play Games服务不可用的设备上启用Amazon Input SDK。这包括Amazon 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 {
    //初始化Amazon 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 {
    //初始化Amazon 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服务可以控制何时显示帮助屏幕。通过Amazon Input SDK,您可以控制如何处理帮助屏幕调用。

要显示帮助屏幕,请考虑向用户显示一个视觉元素,在单击该元素时会打开帮助屏幕。您可以将视觉指示器放置在游戏窗口中,也可以放置在单独的屏幕中,例如首选项或控件页面。


Last updated: 2023年9月7日