מעבר ל-SDK לקליטת נתונים בגרסת 1.0.0 בטא

במדריך הזה מוסבר איך להעביר את המשחק לשימוש בגרסה העדכנית של Input SDK. גרסת הבטא של SDK‏ 1.0.0 כוללת שיפורים משמעותיים בהשוואה לגרסת טרום ההשקה הקודמת 0.0.4. מומלץ לבצע מיגרציה מהגרסאות הקודמות של התצוגות המקדימות בהקדם האפשרי. ערכת ה-SDK בגרסה 0.0.4 תמשיך לפעול עד מרץ 2023.

עדכון התלות

מוחקים את הספרייה 0.0.4 מהספרייה 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() עדיין חלק מהממשק.

Kotlin

הסרת () מהגדרת המחלקה כי אין קונסטרוקטור להפעלה ב-InputMappingProvider.

מאתרים את ההטמעה של InputMappingProvider:

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

מעדכנים אותו לערך הבא:

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

Java

מחליפים את 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 לא מקבלת יותר ארגומנט, ולכן לא צריך יותר לשמור הפניה לספק כדי לבטל את הרישום שלו בהמשך.

Kotlin

כדי לרשום את ספק מפת הקלט, מאתרים את הקריאה אל: 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()
}

Java

כדי לרשום את ספק מפת הקלט, מאתרים את הקריאה אל: 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();
}