Esegui la migrazione all'SDK di immissione 1.0.0-beta

Questa guida descrive come eseguire la migrazione del gioco per utilizzare l'ultima versione dell'SDK Input. L'SDK 1.0.0-beta presenta miglioramenti sostanziali rispetto alla versione di 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.

Aggiornare la dipendenza

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

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

Sostituiscila con il seguente codice:

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

Implementare la nuova interfaccia InputMappingProvider

La precedente 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 è presente alcun costruttore da richiamare 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 il punto in cui estendi InputMappingProvider:

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

E modificalo in modo da 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 conservare un riferimento al provider per annullarne la registrazione in un secondo momento.

Kotlin

Per registrare il provider della mappa 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 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 della mappa 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 sostituiscila 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 provider della mappa 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();
}