В этом руководстве описывается, как перенести игру на использование последней версии Input SDK. Бета-версия SDK 1.0.0 имеет существенные улучшения по сравнению с предыдущей предварительной версией 0.0.4. Вам следует как можно скорее перейти с более ранних предварительных версий. SDK 0.0.4 будет продолжать работать до марта 2023 года.
Обновить зависимость
Удалите библиотеку 0.0.4 из каталога libs
поскольку теперь библиотека доступна в 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()
по-прежнему является частью интерфейса.
Котлин
Удалите ()
из определения класса, поскольку в InputMappingProvider
нет конструктора, который можно было бы вызвать.
Найдите реализацию InputMappingProvider
:
class MyInputMapProvider : InputMappingProvider() {
override fun onProvideInputMap(): InputMap {
TODO("Not yet implemented")
}
}
И обновите его до этого:
class MyInputMapProvider : InputMappingProvider {
override fun onProvideInputMap(): InputMap {
TODO("Not yet implemented")
}
}
Ява
Замените 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
registerInputMappingProvider
и unregisterInputMappingProvider
заменены на setInputMappingProvider
clearInputMappingProvider
. Кроме того, clearInputMappingProvider
больше не принимает аргумент, поэтому вам больше не нужно сохранять ссылку на своего провайдера, чтобы отменить его регистрацию позже.
Котлин
Чтобы зарегистрировать поставщика карт ввода, найдите свой вызов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()
}
Ява
Чтобы зарегистрировать поставщика карт ввода, найдите свой вызов 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();
}