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

遷移至 1.0.0 Beta Input SDK

本指南會說明如何將您的遊戲遷移至最新版的 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();
}