В этом руководстве описано, как перевести вашу игру на использование последней версии Input SDK. Версия 1.0.0-beta SDK содержит существенные улучшения по сравнению с предыдущей предварительной версией 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")
}
}
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
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()
}
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();
}