В этом руководстве описывается, как перенести игру на использование последней версии 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();
}