Esegui la migrazione all'SDK di immissione 1.0.0-beta

Questa guida descrive come eseguire la migrazione del tuo gioco per utilizzare l'SDK di input più recente. L'SDK 1.0.0-beta presenta miglioramenti sostanziali rispetto alla precedente anteprima 0.0.4. Devi eseguire la migrazione dalle anteprime precedenti appena 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é la libreria è 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

La precedente 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 richiamare in InputMappingProvider.

Individua la tua implementazione di InputMappingProvider:

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

e aggiornalo 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 estendi InputMappingProvider:

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

E modificala per implementare InputMappingProvider:

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

Utilizza il nuovo InputClient

registerInputMappingProvider e unregisterInputMappingProvider sono stati sostituiti con setInputMappingProvider e clearInputMappingProvider. Inoltre, clearInputMappingProvider non prende più un argomento, quindi non devi più conservare un riferimento al tuo provider per annullarne la registrazione in un secondo momento.

Kotlin

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

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 tua chiamata a unregisterInputMappingProvider:

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

    super.onDestroy()
}

Sostituiscila 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 tua 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);
}

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 fornitore di mapping degli input, individua la tua chiamata a unregisterInputMappingProvider:

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

    super.onDestroy();
}

Sostituiscila con clearInputMappingProvider:

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

    super.onDestroy();
}