Esegui la migrazione all'SDK di immissione 1.0.0-beta

Questa guida descrive come eseguire la migrazione del tuo gioco in modo che utilizzi l'SDK Input più recente. L'SDK 1.0.0 beta presenta miglioramenti sostanziali rispetto alla precedente anteprima 0.0.4. Dovresti eseguire la migrazione dalle anteprime 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 perché ora è disponibile su Maven. Poi 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 è stata trasformata in un'interfaccia nella versione 1.0.0-beta. Il metodo onProvideInputMap() fa ancora parte dell'interfaccia.

Kotlin

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

Individua l'implementazione di InputMappingProvider:

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

E aggiornala come segue:

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 con setInputMappingProvider e clearInputMappingProvider. Inoltre, clearInputMappingProvider non accetta più un argomento, quindi non è più necessario mantenere un riferimento al fornitore per annullarne la registrazione in un secondo momento.

Kotlin

Per registrare il fornitore di mappe inserito, 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 sostituiscila 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 sostituiscila con clearInputMappingprovider:

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

    super.onDestroy()
}

Java

Per registrare il provider delle 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 di input, individua la chiamata a unregisterInputMappingProvider:

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

    super.onDestroy();
}

e sostituiscila con clearInputMappingProvider:

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

    super.onDestroy();
}