Esegui la migrazione all'SDK di immissione 1.0.0-beta

Questa guida descrive come eseguire la migrazione del gioco per utilizzare l'SDK Input più recente. L'SDK 1.0.0-beta presenta miglioramenti sostanziali rispetto all'anteprima 0.0.4 precedente. Ti consigliamo di eseguire la migrazione dalle versioni di anteprima precedenti il prima possibile. L'SDK 0.0.4 continuerà a funzionare fino a marzo 2023.

Aggiorna la dipendenza

Elimina la libreria 0.0.4 dalla directory libs, poiché ora è disponibile su Maven. Quindi, trova questa riga nel file build.grade a livello di modulo:

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

Sostituiscilo con il seguente codice:

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

Implementare la nuova interfaccia InputMappingProvider

L'ex classe astratta InputMappingProvider è diventata un'interfaccia nella versione 1.0.0-beta. Il metodo onProvideInputMap() fa ancora parte dell'interfaccia.

Kotlin

Rimuovi () dalla definizione della classe perché non esiste un costruttore da richiamare in InputMappingProvider.

Individua l'implementazione di InputMappingProvider:

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

e aggiornalo con questo:

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

Java

Sostituisci extends con implements per indicare che stai implementando un'interfaccia anziché estendere una classe.

Individua dove estendere InputMappingProvider:

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

e modificalo per implementare InputMappingProvider:

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

Utilizzare il nuovo InputClient

registerInputMappingProvider e unregisterInputMappingProvider sono stati sostituiti da setInputMappingProvider e clearInputMappingProvider. Inoltre, clearInputMappingProvider non accetta più argomenti, quindi non è più necessario conservare un riferimento al tuo fornitore per annullare la registrazione in un secondo momento.

Kotlin

Per registrare il tuo fornitore di mappe di input, individua la chiamata a 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)
}

e sostituiscilo con setInputMappingProvider:

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

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

Per cancellare la mappa di input, individua la chiamata a unregisterInputMappingProvider:

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

    super.onDestroy()
}

e sostituiscilo con clearInputMappingprovider:

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

    super.onDestroy()
}

Java

Per registrare il tuo fornitore di mappe di input, individua la chiamata a 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);
}

e sostituiscilo con setInputMappingProvider:

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

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

Per cancellare il fornitore di mappatura dell'input, individua la chiamata a unregisterInputMappingProvider:

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

    super.onDestroy();
}

e sostituiscilo con clearInputMappingProvider:

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

    super.onDestroy();
}