به SDK ورودی 1.0.0-بتا مهاجرت کنید

این راهنما نحوه انتقال بازی شما برای استفاده از جدیدترین Input SDK را شرح می‌دهد. SDK نسخه ۱.۰.۰ بتا نسبت به پیش‌نمایش قبلی ۰.۰.۴ پیشرفت‌های قابل توجهی داشته است. شما باید در اسرع وقت از پیش‌نمایش‌های قبلی مهاجرت کنید. SDK نسخه ۰.۰.۴ تا مارس ۲۰۲۳ به کار خود ادامه خواهد داد.

وابستگی را به‌روزرسانی کنید

کتابخانه ۰.۰.۴ را از دایرکتوری libs خود حذف کنید، زیرا این کتابخانه اکنون در maven موجود است. سپس این خط را در فایل build.grade در سطح ماژول خود پیدا کنید:

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

آن را با کد زیر جایگزین کنید:

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

رابط کاربری جدید InputMappingProvider را پیاده‌سازی کنید

کلاس انتزاعی InputMappingProvider که قبلاً وجود داشت، در نسخه 1.0.0-beta به یک رابط تبدیل شد. متد onProvideInputMap() هنوز بخشی از رابط است.

کاتلین

از آنجایی که هیچ سازنده‌ای برای فراخوانی در InputMappingProvider وجود ندارد () را از تعریف کلاس حذف کنید.

پیاده‌سازی InputMappingProvider خود را پیدا کنید:

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

و آن را به این به‌روزرسانی کنید:

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

جاوا

برای نشان دادن اینکه شما در حال پیاده‌سازی یک رابط هستید و نه یک کلاس را بسط می‌دهید extends با implements جایگزین کنید.

جایی که InputMappingProvider ارث بری می‌کنید، پیدا کنید:

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

و آن را برای پیاده‌سازی InputMappingProvider تغییر دهید:

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

از InputClient جدید استفاده کنید

registerInputMappingProvider و unregisterInputMappingProvider با setInputMappingProvider و clearInputMappingProvider جایگزین شده‌اند. علاوه بر این، clearInputMappingProvider دیگر آرگومانی دریافت نمی‌کند، بنابراین دیگر نیازی به نگه داشتن ارجاع به provider خود برای لغو ثبت آن در آینده ندارید.

کاتلین

برای ثبت ارائه‌دهنده نقشه ورودی خود، فراخوانی 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)
}

و آن را با setInputMappingProvider جایگزین کنید:

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

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

برای پاک کردن نقشه ورودی خود، فراخوانی unregisterInputMappingProvider را پیدا کنید:

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

    super.onDestroy()
}

و آن را با clearInputMappingprovider جایگزین کنید:

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

    super.onDestroy()
}

جاوا

برای ثبت ارائه‌دهنده نقشه ورودی خود، فراخوانی 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);
}

و آن را با setInputMappingProvider جایگزین کنید:

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

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

برای پاک کردن ارائه دهنده نگاشت ورودی خود، فراخوانی unregisterInputMappingProvider را پیدا کنید:

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

    super.onDestroy();
}

و آن را با clearInputMappingProvider جایگزین کنید:

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

    super.onDestroy();
}