迁移到 1.0.0-beta 版输入 SDK

本指南介绍了如何迁移游戏以使用最新的输入 SDK。与之前的 0.0.4 预览版相比,1.0.0-beta SDK 实现了大量改进。您应该尽快从之前的预览版进行迁移。0.0.4 SDK 将继续运作至 2023 年 3 月。

更新依赖项

libs 目录中删除 0.0.4 库,因为此库现在可在 Maven 中找到。然后在模块级 build.grade 文件中找到以下代码行:

implementation files('libs/inputmapping-0.0.4.aar')

将其替换为以下代码:

implementation 'com.google.android.libraries.play.games:inputmapping:1.0.0-beta'

实现新的 InputMappingProvider 接口

之前的抽象类 InputMappingProvider 在版本 1.0.0-beta 中变成了一个接口。方法 onProvideInputMap() 仍是该接口的一部分。

Kotlin

从类定义中移除 (),因为 InputMappingProvider 中没有要调用的构造函数。

找到 InputMappingProvider 实现:

class MyInputMapProvider : InputMappingProvider() {
    override fun onProvideInputMap(): InputMap {
        TODO("Not yet implemented")
    }
}

然后更新为以下代码:

class MyInputMapProvider : InputMappingProvider {
    override fun onProvideInputMap(): InputMap {
        TODO("Not yet implemented")
    }
}

Java

extends 替换为 implements,以表示您实现了接口,而非扩展类。

找到要扩展 InputMappingProvider 的位置:

public class MyInputMapProvider extends InputMappingProvider {
    @NonNull
    @Override
    public InputMap onProvideInputMap() {
        // TODO: return an InputMap
    }
}

并将其更改为实现 InputMappingProvider

public class MyInputMapProvider implements InputMappingProvider {
    @NonNull
    @Override
    public InputMap onProvideInputMap() {
        // TODO: return an InputMap
    }
}

使用新的 InputClient

registerInputMappingProviderunregisterInputMappingProvider 已替换为 setInputMappingProviderclearInputMappingProvider。此外,clearInputMappingProvider 不再接受参数,因此您不再需要保留对提供程序的引用以之后将其取消注册。

Kotlin

如需注册输入映射提供程序,请找到对 registerInputMappingProvider 的调用:

private val myInputMapProvider by lazy {
    MyInputMapProvider()
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val inputMappingClient = Input.getInputMappingClient(this)
    inputMappingClient.registerInputMappingProvider(myInputMapProvider)
}

并将其替换为 setInputMappingProvider

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val inputMappingClient = Input.getInputMappingClient(this)
    inputMappingClient.setInputMappingProvider(MyInputMapProvider())
}

如需清除输入映射,请找到对 unregisterInputMappingProvider 的调用:

override fun onDestroy() {
    val inputMappingClient = Input.getInputMappingClient(this)
    inputMappingClient.unregisterInputMappingProvider(myInputMapProvider)

    super.onDestroy()
}

并将其替换为 clearInputMappingprovider

override fun onDestroy() {
    val inputMappingClient = Input.getInputMappingClient(this)
    inputMappingClient.clearInputMappingProvider()

    super.onDestroy()
}

Java

如需注册输入映射提供程序,请找到对 registerInputMappingProvider 的调用:

private final MyInputMapProvider myInputMapProvider = new MyInputMapProvider();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    InputMappingClient inputMappingClient = Input.getInputMappingClient(this);
    inputMappingClient.registerInputMappingProvider(myInputMapProvider);
}

并将其替换为 setInputMappingProvider

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    InputMappingClient inputMappingClient = Input.getInputMappingClient(this);
    inputMappingClient.setInputMappingProvider(new MyInputMapProvider());
}

如需清除输入映射提供程序,请找到对 unregisterInputMappingProvider 的调用:

@Override
protected void onDestroy() {
    InputMappingClient inputMappingClient = Input.getInputMappingClient(this);
    inputMappingClient.unregisterInputMappingProvider(myInputMapProvider);

    super.onDestroy();
}

并将其替换为 clearInputMappingProvider

@Override
protected void onDestroy() {
    InputMappingClient inputMappingClient = Input.getInputMappingClient(this);
    inputMappingClient.clearInputMappingProvider();

    super.onDestroy();
}