Trong Android 13, tính năng truyền trực tuyến ứng dụng cho phép điện thoại truyền trực tuyến các ứng dụng đến các thiết bị đã kết nối và cho phép những thiết bị đó tương tác với các ứng dụng. Một vai trò COMPANION_DEVICE_APP_STREAMING
mới cho phép ứng dụng tạo và quản lý các proxy cho các thiết bị từ xa đã kết nối để truyền phát trực tuyến ứng dụng từ thiết bị cục bộ đến thiết bị từ xa. Ứng dụng giữ vai trò COMPANION_DEVICE_APP_STREAMING
có thể lấy quyền tạo màn hình ảo, khởi chạy một ứng dụng trên màn hình đó, rồi phát trực tuyến video của ứng dụng đã khởi chạy sang một thiết bị khác. Ứng dụng giữ vai trò này cũng có thể truyền các sự kiện đầu vào và micrô nhận được từ một thiết bị từ xa trở lại thiết bị cục bộ, như thể thiết bị đó được kết nối dưới dạng thiết bị ngoại vi.
Kiến trúc
Kể từ Android 13, Trình quản lý thiết bị ảo và Trình quản lý thiết bị đồng hành (CDM) mới là các khối xây dựng chính để hỗ trợ tính năng phát trực tuyến ứng dụng và tương tác với các thiết bị từ xa, được kết nối.
Trình quản lý thiết bị ảo
Tính năng phát trực tuyến qua ứng dụng hoạt động bằng cách tận dụng màn hình ảo. Trình quản lý thiết bị ảo tạo ra một màn hình ảo tách biệt với màn hình chính có thể nhìn thấy. Khi người dùng đồng ý bắt đầu phát trực tuyến một ứng dụng, ứng dụng đó sẽ được chạy hoặc chuyển sang màn hình ảo. Nội dung của màn hình ảo được truyền dưới dạng luồng video đến thiết bị đã kết nối để hiển thị.
Trình quản lý thiết bị ảo có các API cho phép tạo, đăng ký và quản lý các thực thể VirtualDevice
.
Một phiên bản VirtualDevice
là một proxy cho thiết bị đã kết nối và các chức năng của thiết bị đó. Một phiên bản VirtualDevice
cho phép thiết bị được kết nối nhận, hiển thị và tương tác với luồng ứng dụng đến bằng cách thực hiện những việc sau:
- Tạo một thực thể
VirtualDisplay
dự kiến sẽ xuất hiện trên màn hình của một thiết bị đã kết nối. - Truyền một luồng âm thanh từ xa (chẳng hạn như từ micrô của thiết bị đã kết nối) vào thiết bị cục bộ để phát.
- Truyền các sự kiện đầu vào từ xa (chẳng hạn như từ bàn phím của thiết bị được kết nối) vào thiết bị cục bộ để phát.
Companion Device Manager
CDM quản lý trạng thái kết nối và thực thi các yêu cầu về vai trò mà bạn phải đáp ứng để bật tính năng phát trực tuyến ứng dụng.
Hình sau đây minh hoạ các hoạt động tương tác giữa thiết bị cục bộ và thiết bị từ xa trong quá trình phát trực tuyến ứng dụng:
Hình 1. Tương tác giữa thiết bị cục bộ và thiết bị từ xa trong quá trình phát trực tuyến ứng dụng
Triển khai vai trò truyền phát ứng dụng đồng hành
Các OEM có thể triển khai một ứng dụng có vai trò COMPANION_DEVICE_APP_STREAMING
để mang đến trải nghiệm phong phú và an toàn trên nhiều thiết bị cho người dùng thiết bị của họ.
Để tạo một thiết bị ảo nhằm bật tính năng phát trực tuyến ứng dụng, ứng dụng phải là người nắm giữ vai trò COMPANION_DEVICE_APP_STREAMING
. Khi được cấp vai trò này, ứng dụng sẽ nhận được quyền CREATE_VIRTUAL_DEVICE
, cho phép ứng dụng tạo một thiết bị ảo. Người nắm giữ vai trò dự kiến sẽ triển khai tính năng phát trực tuyến ứng dụng bằng cách tạo một thực thể VirtualDevice
đóng vai trò là một proxy cho thiết bị được kết nối. Lớp VirtualDevice
cung cấp các phương thức cho phép trích xuất một bề mặt kết hợp của màn hình ảo, phù hợp để truyền phát trực tuyến đến một thiết bị khác. Lớp VirtualDevice
cũng cung cấp các API để chèn các sự kiện đầu vào xảy ra trên một thiết bị từ xa vào thiết bị cục bộ, cho phép một ứng dụng đang chạy trên thiết bị cục bộ xuất hiện như thể ứng dụng đó đang chạy nguyên bản trên một thiết bị từ xa.
Hãy làm theo các bước sau để triển khai vai trò phát trực tuyến của ứng dụng đồng hành:
Tạo một ứng dụng yêu cầu quyền
REQUEST_COMPANION_PROFILE_APP_STREAMING
trong tệp kê khai.Nhắc người dùng cấp cho ứng dụng quyền thực hiện quy trình phát trực tuyến qua ứng dụng.
Tạo một phiên bản CDM
AssociationRequest
để yêu cầu vai tròCOMPANION_DEVICE_APP_STREAMING
. Ứng dụng sẽ nhận được quyềnCREATE_VIRTUAL_DEVICE
khi vai trò được cấp.Gọi
VirtualDeviceManager#create()
để tạo một thực thểVirtualDevice
. Với một thực thểVirtualDevice
, ứng dụng có thể tạo và quản lý màn hình ảo cũng như dữ liệu đầu vào ảo.Khởi chạy ý định đang chờ xử lý của thông báo trên màn hình ảo và tạo bản ghi video của màn hình đó.
Tạo kết nối với thiết bị đã kết nối và truyền trực tuyến màn hình ảo sang thiết bị đã kết nối.
Chèn các sự kiện đầu vào quay lại từ thiết bị đã kết nối vào thiết bị cục bộ thông qua các API
VirtualDevice
.Khi người dùng đóng ứng dụng truyền phát trực tiếp trên thiết bị từ xa, hãy kết thúc luồng truyền phát và huỷ phiên bản
VirtualDevice
. Tại thời điểm này, ứng dụng phát trực tuyến trước đó sẽ chạy ở chế độ nền trên thiết bị cục bộ và kết nối sẽ bị đóng.Nếu cần, hãy chờ thêm tín hiệu từ thiết bị đã kết nối để khởi động lại tính năng phát trực tuyến ứng dụng.
Ứng dụng chịu trách nhiệm kết nối với thiết bị từ xa, báo cáo trạng thái kết nối cho CDM và thực thi các yêu cầu bảo mật như mô tả trong CDD.
Yêu cầu đối với người giữ vai trò COMPANION_DEVICE_APP_STREAMING
CDM cấp vai trò COMPANION_DEVICE_APP_STREAMING
khi người dùng liên kết một ứng dụng phát trực tuyến với một thiết bị. Vai trò này được liên kết với một hồ sơ thiết bị, vì vậy, bạn có thể kiểm soát một số ứng dụng có thể được thêm vào Cửa hàng Play sao cho phù hợp với hồ sơ này. Hãy xem các vai trò trên Android để biết danh sách các yêu cầu về vai trò COMPANION_DEVICE_APP_STREAMING
. Vui lòng liên hệ với đầu mối liên hệ của bạn tại Google để biết thêm thông tin.
Các chức năng của người giữ vai trò COMPANION_DEVICE_APP_STREAMING
Để thực hiện truyền phát trực tiếp ứng dụng, vai trò COMPANION_DEVICE_APP_STREAMING
giả định rằng ứng dụng giữ vai trò này có các chức năng và hành vi sau:
- Tạo và quản lý các kết nối với các thiết bị khác.
- Tạo và quản lý màn hình ảo đáng tin cậy, bao gồm cả màn hình chưa khoá, như sau:
- Bắt đầu các hoạt động trên màn hình ảo.
- Chèn các sự kiện xảy ra trên một ứng dụng được truyền trực tuyến trên thiết bị đã kết nối trở lại thiết bị cục bộ, chẳng hạn như phát một sự kiện chạm trên máy tính bảng ở cùng toạ độ trên điện thoại.
- Ghi lại dữ liệu âm thanh từ ứng dụng phát trực tuyến.
- Thay thế luồng micrô của thiết bị cục bộ bằng luồng micrô của thiết bị được kết nối trong khi một ứng dụng truyền phát trực tiếp đang sử dụng micrô.
- Thay thế luồng camera của thiết bị cục bộ bằng luồng camera của thiết bị được kết nối trong khi một ứng dụng truyền phát trực tiếp đang dùng camera.
- Quản lý và truyền trực tuyến thông báo từ thiết bị cục bộ đến thiết bị được kết nối, đồng thời thực hiện các thao tác đối với thông báo.
- Truyền siêu dữ liệu của luồng phát từ thiết bị cục bộ (chẳng hạn như danh sách các ứng dụng có trên thiết bị cục bộ) đến thiết bị đã kết nối.
- Yêu cầu xác minh thiết bị.