Chuyển sang SDK đầu vào 1.0.0-beta

Hướng dẫn này mô tả cách di chuyển trò chơi của bạn để sử dụng SDK đầu vào mới nhất. SDK phiên bản thử nghiệm 1.0.0 có những cải tiến đáng kể so với bản xem trước 0.0.4 trước đó. Bạn nên di chuyển từ các bản xem trước trước đó sớm nhất có thể. SDK 0.0.4 sẽ tiếp tục hoạt động đến hết tháng 3 năm 2023.

Cập nhật phần phụ thuộc

Xóa thư viện 0.0.4 khỏi thư mục libs của bạn vì thư viện hiện có sẵn trên maven. Sau đó, tìm dòng này trong tệp build.grade ở cấp mô-đun:

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

Thay thế bằng mã sau:

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

Triển khai giao diện InputMappingProvider mới

Lớp trừu tượng InputMappingProvider trước đây đã chuyển thành giao diện trong phiên bản 1.0.0-beta. Phương thức onProvideInputMap() vẫn là một phần của giao diện.

Kotlin

Xóa () khỏi định nghĩa lớp vì không có hàm dựng nào để gọi trong InputMappingProvider.

Xác định vị trí triển khai InputMappingProvider của bạn:

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

Và cập nhật nó như sau:

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

Java

Thay thế extends bằng implements để cho biết bạn đang triển khai giao diện thay vì mở rộng một lớp.

Định vị nơi bạn mở rộng InputMappingProvider:

public class MyInputMapProvider extends InputMappingProvider {
    @NonNull
    @Override
    public InputMap onProvideInputMap() {
        // TODO: return an InputMap
    }
}

Và thay đổi nó để triển khai InputMappingProvider:

public class MyInputMapProvider implements InputMappingProvider {
    @NonNull
    @Override
    public InputMap onProvideInputMap() {
        // TODO: return an InputMap
    }
}

Sử dụng InputClient mới

registerInputMappingProviderunregisterInputMappingProvider đã được thay thế bằng setInputMappingProviderclearInputMappingProvider. Hơn nữa, clearInputMappingProvider không còn chấp nhận đối số nữa, do đó bạn không cần giữ lại thông tin tham chiếu đến nhà cung cấp của mình để hủy đăng ký đối tượng đó sau này.

Kotlin

Để đăng ký nhà cung cấp bản đồ đầu vào của bạn, hãy định vị cuộc gọi của bạn đến 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)
}

Và thay thế bằng setInputMappingProvider:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val inputMappingClient = Input.getInputMappingClient(this)
    inputMappingClient.setInputMappingProvider(MyInputMapProvider())
}

Để xóa bản đồ nhập vào, hãy định vị cuộc gọi của bạn đến unregisterInputMappingProvider:

override fun onDestroy() {
    val inputMappingClient = Input.getInputMappingClient(this)
    inputMappingClient.unregisterInputMappingProvider(myInputMapProvider)

    super.onDestroy()
}

Và thay thế bằng clearInputMappingprovider:

override fun onDestroy() {
    val inputMappingClient = Input.getInputMappingClient(this)
    inputMappingClient.clearInputMappingProvider()

    super.onDestroy()
}

Java

Để đăng ký nhà cung cấp bản đồ đầu vào của bạn, hãy định vị cuộc gọi của bạn đến 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);
}

Và thay thế bằng setInputMappingProvider:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    InputMappingClient inputMappingClient = Input.getInputMappingClient(this);
    inputMappingClient.setInputMappingProvider(new MyInputMapProvider());
}

Để xóa nhà cung cấp của liên kết đầu vào, hãy định vị cuộc gọi của bạn đến unregisterInputMappingProvider:

@Override
protected void onDestroy() {
    InputMappingClient inputMappingClient = Input.getInputMappingClient(this);
    inputMappingClient.unregisterInputMappingProvider(myInputMapProvider);

    super.onDestroy();
}

Và thay thế bằng clearInputMappingProvider:

@Override
protected void onDestroy() {
    InputMappingClient inputMappingClient = Input.getInputMappingClient(this);
    inputMappingClient.clearInputMappingProvider();

    super.onDestroy();
}