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