Ý định tham gia

"Ý định tham gia" là một tính năng mới của Android Sender (Trình gửi Android) cho phép ứng dụng của người gửi để "tham gia" phiên Truyền do các ứng dụng khác hoặc giọng nói của bạn. Bạn thiết lập để ứng dụng dành cho người gửi khởi chạy theo ý định do Cast tạo SDK.

Ví dụ: khi sử dụng giọng nói để bắt đầu một phiên Truyền, SDK Truyền sẽ tạo một thông báo cho phép người dùng kiểm soát quá trình phát trên tất cả điện thoại Android trên cùng một mạng. Khi thông báo được nhấn, SDK Truyền sẽ tạo ý định khởi chạy ứng dụng của bạn để tham gia phiên Truyền.

Xem Mẫu CastVideos-Android để triển khai Ý định tham gia một cách hiệu quả.

Sử dụng Trình gửi Android

Để bật tính năng này, hãy thực hiện các bước sau trong ứng dụng của bạn:

Đảm bảo rằng ứng dụng của bạn đang sử dụng phiên bản SDK Người gửi Android cao hơn 11.4.0. Trong build.gradle:

dependencies {
    api 'com.google.android.gms:play-services-cast-framework:11.4.0'
}

Thêm bộ lọc ý định mới vào hoạt động mà bạn muốn xử lý ý định. Chiến lược phát hành đĩa đơn ý định sẽ được Thông báo điều khiển từ xa (RCN) sử dụng để khởi chạy ứng dụng của bạn và tham gia một phiên Truyền. Bạn nên sử dụng hoạt động mà bạn nên sử dụng SessionManagerListener được lưu trữ và onSessionStarted() hoặc onSessionStartFailed() sẽ được gọi. Đảm bảo bộ lọc ý định mới là duy nhất trên toàn bộ hệ thống Android. T4 bạn nên sử dụng thẻ <data> để làm việc đó, như sau:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="your_app_scheme" android:host="your_app_host"
        android:path="your_app_path"/>
</intent-filter>

Ví dụ về thẻ <data>:

<data android:scheme="https" android:host="example.com"
      android:path="/cast/join"/>

Trong hoạt động mà bạn xác định bộ lọc ý định mới, hãy gọi SessionManager.startSession(Intent) trong onResume():

Kotlin
override fun onResume() {
    ...
    val intent = intent
    // Intent with format: "<your_app_scheme>://<your_app_host><your_app_path>"
    val intentToJoinUri = Uri.parse("https://example.com/cast/join")
    if (intent.data != null && intent.data == intentToJoinUri) {
        mCastContext.sessionManager.startSession(intent)
    }
    ...
}
Java
@Override
protected void onResume() {
    ...
    Intent intent = getIntent();
    // Intent with format: "<your_app_scheme>://<your_app_host><your_app_path>"
    Uri intentToJoinUri = Uri.parse("https://example.com/cast/join");
    if (intent.getData() != null && intent.getData().equals(intentToJoinUri)) {
        mCastContext.getSessionManager().startSession(intent);
    }
    ...
}

Thiết lập Google Cast Developer Console

Để sử dụng tính năng Ý định tham gia, URI ứng dụng và tên gói phải là đã thêm vào Bảng điều khiển dành cho nhà phát triển Google Cast.

Bộ thu của bạn cũng phải được liệt kê và xuất bản để Ý định tham gia hoạt động đúng cách.

Để liệt kê ứng dụng của bạn, hãy chuyển tuỳ chọn danh sách thành "CÓ" và cung cấp tiêu đề, mô tả và hình ảnh 512x512 cho ứng dụng của bạn.

Sau khi thiết lập, bạn có thể kiểm tra việc triển khai bằng Thông báo điều khiển từ xa (RCN) như sau:

  1. Cài đặt ứng dụng Google Home trên điện thoại Android và kết nối với Wi-Fi trên điện thoại.
  2. Thiết bị hỗ trợ Cast thiết lập thiết bị Google Home trong cùng một mạng.
  3. Bắt đầu phiên Truyền với thiết bị Google Home bằng Công cụ Command và Control (CaC), một thiết bị Android hay iOS khác hoặc thông qua giọng nói và kiểm tra xem Bộ thu trên web có phải là khởi chạy.
  4. Hãy đợi vài giây để nhận RCN trên điện thoại, sau đó nhấn vào thông báo để kích hoạt ý định. Ý định phải được truyền đi đến bất kỳ ứng dụng nào đăng ký ý định với dữ liệu cần thiết để tham gia phiên hoạt động.

SessionManagerListener.onSessionStarted(T, String) sẽ được kích hoạt và tham gia phiên.

Xác minh

Nếu ứng dụng của bạn tham gia thành công phiên này, SessionManagerListener.onSessionStarted(T, String) sẽ được gọi. Nếu không, SessionManagerListener.onSessionStartFailed(T, int) sẽ được gọi. Giả sử ứng dụng của bạn đã xử lý những sự kiện đó đúng cách (ví dụ: như khởi chạy tay điều khiển mở rộng hoặc tay điều khiển thu nhỏ), bạn không cần làm bất cứ điều gì tiếp theo.