Przejdź na pakiet SDK do wprowadzania danych w wersji 1.0.0 w wersji beta

Z tego przewodnika dowiesz się, jak przenieść grę, aby korzystała z najnowszego pakietu SDK Input. Pakiet SDK w wersji 1.0.0-beta zawiera istotne ulepszenia w porównaniu z poprzednią wersją 0.0.4. Jak najszybciej przeprowadź migrację z wcześniejszych wersji podglądowych. Pakiet SDK w wersji 0.0.4 będzie działać do marca 2023 roku.

Aktualizowanie zależności

Usuń bibliotekę 0.0.4 z katalogu libs, ponieważ jest ona teraz dostępna w Mavenie. Następnie znajdź ten wiersz w pliku build.grade na poziomie modułu:

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

Zastąp go tym kodem:

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

Implementowanie nowego interfejsu InputMappingProvider

W wersji 1.0.0-beta dawna klasa abstrakcyjna InputMappingProvider została przekształcona w interfejs. Metoda onProvideInputMap() nadal jest częścią interfejsu.

Kotlin

Usuń () z definicji klasy, ponieważ w InputMappingProvider nie ma konstruktora do wywołania.

Znajdź implementację InputMappingProvider:

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

i zaktualizuj ją do tej wartości:

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

Java

Zastąp extends ciągiem implements, aby wskazać, że implementujesz interfejs, a nie rozszerzasz klasy.

Znajdź miejsce, w którym możesz przedłużyć okres ochrony InputMappingProvider:

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

Zmień go, aby wdrożyć InputMappingProvider:

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

Używanie nowego interfejsu InputClient

registerInputMappingProviderunregisterInputMappingProvider zostały zastąpione przez setInputMappingProviderclearInputMappingProvider. Poza tym funkcja clearInputMappingProvider nie przyjmuje już argumentu, więc nie musisz już przechowywać odwołania do dostawcy, aby później wyrejestrować go.

Kotlin

Aby zarejestrować dostawcę mapy danych wejściowych, znajdź wywołanie funkcji 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)
}

Zastąp go tym tekstem: setInputMappingProvider

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

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

Aby wyczyścić mapę wejściową, znajdź wywołanie funkcji unregisterInputMappingProvider:

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

    super.onDestroy()
}

Zastąp go tym tekstem: clearInputMappingprovider

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

    super.onDestroy()
}

Java

Aby zarejestrować dostawcę mapy danych wejściowych, znajdź wywołanie funkcji 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);
}

Zastąp go tym tekstem: setInputMappingProvider

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

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

Aby wyczyścić dostawcę mapowania danych wejściowych, znajdź wywołanie funkcji unregisterInputMappingProvider:

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

    super.onDestroy();
}

Zastąp go tym tekstem: clearInputMappingProvider

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

    super.onDestroy();
}