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 ứng dụng đến các thiết bị đã kết nối và cho phép các thiết bị đó tương tác với ứng dụng. Vai trò COMPANION_DEVICE_APP_STREAMING
mới cho phép ứng dụng tạo và quản lý proxy cho các thiết bị từ xa đã kết nối để truyền 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ể nhận quyền tạo màn hình ảo, chạy một ứng dụng trên màn hình đó, sau đó truyền trực tuyến video của ứng dụng đã chạy đến một thiết bị khác. Ứng dụng giữ vai trò cũng có thể chèn các sự kiện đầu vào và micrô nhận được từ một thiết bị từ xa vào thiết bị cục bộ, như thể thiết bị đó được kết nối như một thiết bị ngoại vi.
Kiến trúc
Kể từ Android 13, Trình quản lý thiết bị ảo mới và Trình quản lý thiết bị đồng hành (CDM) tạo thành các thành phần chính để hỗ trợ việc truyền phát ứng dụng và tương tác với các thiết bị được kết nối từ xa.
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 một màn hình ảo tách biệt với màn hình chính hiển thị. Khi người dùng đồng ý bắt đầu truyền trực tuyến một ứng dụng, ứng dụng đó sẽ được khởi chạy trên hoặc được chuyển sang màn hình ảo. Nội dung của màn hình ảo được chuyển trong luồng video đến thiết bị đã kết nối để hiển thị.
Trình quản lý thiết bị ảo bao gồm các API cho phép tạo, đăng ký và quản lý các thực thể VirtualDevice
.
Một thực thể VirtualDevice
là một proxy cho thiết bị đã kết nối và các tính năng của thiết bị đó. Thực thể VirtualDevice
cho phép thiết bị đã 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 các thao tác sau:
- Tạo một thực thể
VirtualDisplay
dự định hiển thị trên màn hình của thiết bị đã kết nối. - Chèn 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.
- Chè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ị đã 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ò phải được đáp ứng để bật tính năng truyền trực tuyến ứng dụng.
Hình sau đây minh hoạ 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 truyền trực tuyến ứng dụng:
Hình 1. Hoạt động tương tác giữa thiết bị cục bộ và thiết bị từ xa trong khi truyền trực tuyến ứng dụng
Triển khai vai trò truyền phát ứng dụng đồng hành
Nhà sản xuất thiết bị gố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ị.
Để tạo thiết bị ảo cho phép truyền trực tuyến ứng dụng, ứng dụng phải là chủ sở hữu của vai trò COMPANION_DEVICE_APP_STREAMING
. Khi vai trò được cấp, ứng dụng sẽ nhận được quyền CREATE_VIRTUAL_DEVICE
. Quyền này cho phép ứng dụng tạo thiết bị ảo. Chủ sở hữu vai trò dự kiến sẽ triển khai tính năng truyền trực tuyến ứng dụng bằng cách tạo một thực thể VirtualDevice
đóng vai trò là proxy cho một thiết bị đã 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 tổng hợp của màn hình ảo, phù hợp để truyền 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 thiết bị từ xa vào thiết bị cục bộ, cho phép ứ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 gốc trên thiết bị từ xa.
Hãy làm theo các bước sau để triển khai vai trò truyền 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 quyền cho ứng dụng để truyền trực tuyến ứng dụng.
Tạo một thực thể
AssociationRequest
CDM để 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.Chạy ý định đang chờ xử lý của thông báo trên màn hình ảo và tạo video quay video về 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 lại các sự kiện đầu vào 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 phát trực tuyến trên thiết bị từ xa, hãy kết thúc luồng và huỷ thực thể
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 để bắt đầu lại quá trình truyền 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 phần tử 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 ứng dụng 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ị để có một số quyền kiểm soát đối với những ứng dụng có thể được thêm vào Cửa hàng Play khớp với hồ sơ này. Hãy xem phần 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 chủ sở hữu vai trò COMPANION_DEVICE_APP_STREAMING
Để truyền trực tuyến ứng dụng, vai trò COMPANION_DEVICE_APP_STREAMING
giả định rằng ứng dụng của chủ thể có các chức năng và hành vi sau:
- Tạo và quản lý 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 đã mở 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 ứng dụng phát trực tuyến trên thiết bị đã kết nối trở lại trên 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 tại 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ị đã kết nối trong khi ứng dụng phát trực tuyến đ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 ứng dụng được truyền trực tuyến đang sử dụng camera.
- Quản lý và truyền trực tuyến thông báo từ thiết bị cục bộ sang thiết bị đã 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 trực tuyến siêu dữ liệu từ thiết bị cục bộ, chẳng hạn như danh sách ứ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ị.