במדריך הזה מוסבר איך להעביר את המשחק לשימוש בגרסה העדכנית של Input SDK. גרסת בטא 1.0.0 של ה-SDK כוללת שיפורים משמעותיים לעומת גרסת טרום ההשקה הקודמת 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. ה-method 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();
}