Google Play 遊戲正在進行 Beta 版公開測試。

遷移至 1.0.0 Beta Input SDK

Stay organized with collections Save and categorize content based on your preferences.

本指南會說明如何將您的遊戲遷移至最新版的 Input SDK。與先前的 0.0.4 預先發布版相較,1.0.0 Beta SDK 在功能上有非常實質的改進。您應儘快從先前的預先發布版遷移至新版。0.0.4 SDK 可持續使用至 2023 年 3 月。

更新依附元件

由於 maven 現已有提供程式庫,請從 libs 目錄中刪除 0.0.4 程式庫。然後,在模組層級 build.grade 檔案中尋找這一行:

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

將該行內容替換成以下的程式碼:

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

實作新的 InputMappingProvider 介面

1.0.0-beta 版本中,之前的抽象類別 InputMappingProvider 已變為介面。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

setInputMappingProviderclearInputMappingProvider 已經取代 registerInputMappingProviderunregisterInputMappingProvider。另外,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();
}