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

Z tego przewodnika dowiesz się, jak przenieść grę, aby używała najnowszego pakietu wejściowego SDK. Pakiet SDK w wersji 1.0.0 w wersji beta ma znaczne ulepszenia w porównaniu z poprzednią wersją przedpremierową 0.0.4. Zalecamy jak najszybsze przejście z poprzednich podglądów. Pakiet SDK w wersji 0.0.4 będzie działać do marca 2023 r.

Aktualizowanie zależności

Usuń bibliotekę 0.0.4 z katalogu libs, ponieważ jest ona teraz dostępna w Maven. Następnie odszukaj 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'

Wdrażanie nowego interfejsu wejściowego komponentu FeedMappingProvider

Poprzednia klasa abstrakcyjna InputMappingProvider zmieniła się w interfejs w wersji 1.0.0-beta. Metoda onProvideInputMap() nadal jest częścią interfejsu.

Kotlin

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

Znajdź implementację InputMappingProvider:

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

Zmień go na taki:

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

Java

Zastąp extends elementem implements, aby wskazać, że implementujesz interfejs, a nie rozszerzasz klasę.

Znajdź zakres rozszerzenia InputMappingProvider:

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

I zmień go, aby zaimplementować InputMappingProvider:

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

Użyj nowego elementu FeedClient

Elementy registerInputMappingProvider i unregisterInputMappingProvider zostały zastąpione przez setInputMappingProvider i clearInputMappingProvider. Ponadto clearInputMappingProvider nie przyjmuje już argumentów, więc nie musisz już przechowywać odwołania do dostawcy, aby później go wyrejestrować.

Kotlin

Aby zarejestrować dostawcę mapy wejściowej, znajdź połączenie do 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)
}

I zastąp go 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ę danych wejściowych, znajdź połączenie z numerem unregisterInputMappingProvider:

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

    super.onDestroy()
}

I zastąp go tekstem clearInputMappingprovider:

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

    super.onDestroy()
}

Java

Aby zarejestrować dostawcę mapy wejściowej, znajdź połączenie do 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);
}

I zastąp go 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 do unregisterInputMappingProvider:

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

    super.onDestroy();
}

I zastąp go tekstem clearInputMappingProvider:

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

    super.onDestroy();
}