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 aregisterInputMappingProvider
:
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();
}