Bermigrasi ke Input SDK 1.0.0-beta

Panduan ini menjelaskan cara memigrasikan game Anda untuk menggunakan SDK Input terbaru. SDK 1.0.0-beta memiliki peningkatan substansial dibandingkan pratinjau 0.0.4 sebelumnya. Anda harus bermigrasi dari pratinjau awal sesegera mungkin. SDK 0.0.4 akan terus berfungsi hingga Maret 2023.

Mengupdate dependensi

Hapus library 0.0.4 dari direktori libs Anda karena library baru kini tersedia di Maven. Lalu, temukan baris ini dalam file build.grade level modul Anda:

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

Ganti dengan kode berikut:

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

Menerapkan antarmuka InputMappingProvider baru

Class abstrak InputMappingProvider sebelumnya diubah menjadi antarmuka di versi 1.0.0-beta. Metode onProvideInputMap() masih menjadi bagian dari antarmuka.

Kotlin

Hapus () dari definisi class karena tidak ada konstruktor yang akan dipanggil di InputMappingProvider.

Temukan implementasi InputMappingProvider Anda:

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

Lalu, perbarui menjadi:

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

Java

Ganti extends dengan implements untuk menunjukkan bahwa Anda menerapkan antarmuka, bukan memperluas class.

Temukan tempat Anda memperluas InputMappingProvider:

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

Dan ubah untuk mengimplementasikan InputMappingProvider:

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

Menggunakan InputClient baru

registerInputMappingProvider dan unregisterInputMappingProvider telah diganti dengan setInputMappingProvider dan clearInputMappingProvider. Selanjutnya, clearInputMappingProvider tidak lagi menggunakan argumen sehingga Anda tidak perlu lagi menyimpan referensi ke penyedia untuk membatalkan pendaftarannya nanti.

Kotlin

Untuk mendaftarkan penyedia peta input Anda, temukan panggilan ke 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)
}

Dan ganti dengan setInputMappingProvider:

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

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

Untuk menghapus peta input, temukan panggilan ke unregisterInputMappingProvider:

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

    super.onDestroy()
}

Dan ganti dengan clearInputMappingprovider:

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

    super.onDestroy()
}

Java

Untuk mendaftarkan penyedia peta input Anda, temukan panggilan ke 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);
}

Dan ganti dengan setInputMappingProvider:

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

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

Untuk menghapus penyedia pemetaan input, temukan panggilan ke unregisterInputMappingProvider:

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

    super.onDestroy();
}

Dan ganti dengan clearInputMappingProvider:

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

    super.onDestroy();
}