Переход на входной 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();
}