Как перейти на Input SDK 1.0.0-beta

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

Kotlin

Удалите () из определения класса, поскольку в 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 больше не принимает аргумент, поэтому вам не нужно сохранять ссылку на поставщика, чтобы отменить его регистрацию.

Kotlin

Чтобы зарегистрировать поставщика карты ввода, найдите вызов 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();
}