Переход на входной SDK версии 1.0.0-бета

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