Migrieren Sie zum 1.0.0-beta Input SDK

In diesem Leitfaden wird beschrieben, wie Sie Ihr Spiel auf das neueste Input SDK umstellen. Das 1.0.0-Beta-SDK bietet erhebliche Verbesserungen gegenüber der vorherigen 0.0.4-Vorabversion. Sie sollten so schnell wie möglich aus den früheren Vorschauen migrieren. Das SDK 0.0.4 funktioniert noch bis März 2023.

Abhängigkeit aktualisieren

Löschen Sie die Bibliothek 0.0.4 aus Ihrem libs-Verzeichnis, da sie jetzt bei Maven verfügbar ist. Suchen Sie dann in der Datei build.grade auf Modulebene nach dieser Zeile:

implementation files('libs/inputmapping-0.0.4.aar')

Ersetzen Sie ihn durch den folgenden Code:

implementation 'com.google.android.libraries.play.games:inputmapping:1.0.0-beta'

Neue InputMappingProvider-Schnittstelle implementieren

Die ehemalige abstrakte Klasse InputMappingProvider wurde in Version 1.0.0-beta in eine Schnittstelle umgewandelt. Die Methode onProvideInputMap() ist weiterhin Teil der Benutzeroberfläche.

Kotlin

Entfernen Sie () aus der Klassendefinition, da in InputMappingProvider kein Konstruktor aufgerufen wird.

InputMappingProvider-Implementierung suchen:

class MyInputMapProvider : InputMappingProvider() {
    override fun onProvideInputMap(): InputMap {
        TODO("Not yet implemented")
    }
}

und aktualisieren Sie sie auf Folgendes:

class MyInputMapProvider : InputMappingProvider {
    override fun onProvideInputMap(): InputMap {
        TODO("Not yet implemented")
    }
}

Java

Ersetzen Sie extends durch implements, um anzugeben, dass Sie eine Schnittstelle implementieren, anstatt eine Klasse zu erweitern.

Suchen Sie die Stelle, an der Sie InputMappingProvider erweitern möchten:

public class MyInputMapProvider extends InputMappingProvider {
    @NonNull
    @Override
    public InputMap onProvideInputMap() {
        // TODO: return an InputMap
    }
}

Ändern Sie es, um InputMappingProvider zu implementieren:

public class MyInputMapProvider implements InputMappingProvider {
    @NonNull
    @Override
    public InputMap onProvideInputMap() {
        // TODO: return an InputMap
    }
}

Neuen InputClient verwenden

registerInputMappingProvider und unregisterInputMappingProvider wurden durch setInputMappingProvider und clearInputMappingProvider ersetzt. Außerdem nimmt clearInputMappingProvider kein Argument mehr an. Sie müssen also keinen Verweis auf Ihren Anbieter mehr speichern, um ihn später abzumelden.

Kotlin

Wenn Sie Ihren Kartenanbieter für Eingaben registrieren möchten, suchen Sie den Aufruf von 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)
}

Und ersetzen Sie es durch setInputMappingProvider:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val inputMappingClient = Input.getInputMappingClient(this)
    inputMappingClient.setInputMappingProvider(MyInputMapProvider())
}

Um die Eingabekarte zu löschen, suchen Sie Ihren Aufruf an unregisterInputMappingProvider:

override fun onDestroy() {
    val inputMappingClient = Input.getInputMappingClient(this)
    inputMappingClient.unregisterInputMappingProvider(myInputMapProvider)

    super.onDestroy()
}

Und ersetzen Sie es durch clearInputMappingprovider:

override fun onDestroy() {
    val inputMappingClient = Input.getInputMappingClient(this)
    inputMappingClient.clearInputMappingProvider()

    super.onDestroy()
}

Java

Wenn Sie Ihren Kartenanbieter für Eingaben registrieren möchten, suchen Sie den Aufruf von 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);
}

Ersetzen Sie es durch setInputMappingProvider:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    InputMappingClient inputMappingClient = Input.getInputMappingClient(this);
    inputMappingClient.setInputMappingProvider(new MyInputMapProvider());
}

Wenn Sie den Anbieter der Eingabezuordnung löschen möchten, suchen Sie den Aufruf von unregisterInputMappingProvider:

@Override
protected void onDestroy() {
    InputMappingClient inputMappingClient = Input.getInputMappingClient(this);
    inputMappingClient.unregisterInputMappingProvider(myInputMapProvider);

    super.onDestroy();
}

Und ersetzen Sie es durch clearInputMappingProvider:

@Override
protected void onDestroy() {
    InputMappingClient inputMappingClient = Input.getInputMappingClient(this);
    inputMappingClient.clearInputMappingProvider();

    super.onDestroy();
}