Cómo migrar al SDK de entrada 1.0.0-beta

En esta guía, se describe cómo migrar tu juego para usar el SDK de entrada más reciente. El SDK 1.0.0-beta presenta mejoras importantes con respecto a la vista previa anterior de 0.0.4. Debes migrar de las vistas previas anteriores lo antes posible. El SDK 0.0.4 seguirá funcionando hasta marzo de 2023.

Cómo actualizar la dependencia

Borra la biblioteca 0.0.4 del directorio libs, ya que la biblioteca ahora está disponible en Maven. Luego, busca esta línea en el archivo build.grade de nivel de módulo:

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

Reemplázala por el siguiente código:

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

Cómo implementar la nueva interfaz InputMappingProvider

La antigua clase abstracta InputMappingProvider se convirtió en una interfaz en la versión 1.0.0-beta. El método onProvideInputMap() sigue siendo parte de la interfaz.

Kotlin

Quita () de la definición de clase, ya que no hay constructor para invocar en InputMappingProvider.

Localiza tu implementación de InputMappingProvider:

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

Y actualízala a lo siguiente:

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

Java

Reemplaza extends por implements para indicar que estás implementando una interfaz en lugar de extendiendo una clase.

Localiza dónde extiendes InputMappingProvider:

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

Y cámbialo para implementar InputMappingProvider:

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

Cómo usar el InputClient nuevo

Se reemplazaron registerInputMappingProvider y unregisterInputMappingProvider por setInputMappingProvider y clearInputMappingProvider. Además, clearInputMappingProvider ya no acepta argumentos, por lo que ya no necesitas conservar una referencia al proveedor para cancelar el registro más adelante.

Kotlin

Para registrar tu proveedor de mapa de entrada, ubica tu llamada 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)
}

Y reemplázala por setInputMappingProvider:

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

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

Para borrar el mapa de entrada, ubica tu llamada a unregisterInputMappingProvider:

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

    super.onDestroy()
}

Y reemplázala por clearInputMappingprovider:

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

    super.onDestroy()
}

Java

Para registrar tu proveedor de mapa de entrada, ubica tu llamada 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);
}

Y reemplázala por setInputMappingProvider:

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

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

Para borrar tu proveedor de asignación de entrada, ubica tu llamada a unregisterInputMappingProvider:

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

    super.onDestroy();
}

Y reemplázala por clearInputMappingProvider:

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

    super.onDestroy();
}