Dịch vụ điều khiển HDMI-CEC

Tiêu chuẩn Điều khiển Điện tử Tiêu dùng Giao diện Đa phương tiện Độ nét Cao (HDMI-CEC) cho phép các sản phẩm tiêu dùng đa phương tiện giao tiếp và trao đổi thông tin với nhau. HDMI-CEC hỗ trợ nhiều tính năng, chẳng hạn như Điều khiển từ xa và Điều khiển âm thanh hệ thống, nhưng một trong những tính năng phổ biến nhất là One Touch Play. One Touch Play cho phép thiết bị nguồn đa phương tiện bật TV và tự động chuyển cổng đầu vào, do đó bạn không cần phải tìm kiếm điều khiển từ xa của TV để chuyển từ Chromecast sang đầu phát Blu-ray.

Với Android 12, khả năng điều khiển nguồn của màn hình kết nối HDMI phù hợp với khả năng điều khiển nguồn của màn hình bên trong. Khi thiết bị phát lại HDMI hoạt động, thiết bị này sẽ cố gắng đánh thức TV được kết nối và trở thành nguồn hoạt động hiện tại thông qua HDMI CEC One Touch Play. Nếu thiết bị chuyển sang chế độ ngủ khi đang là nguồn hoạt động hiện tại thì thiết bị sẽ cố gắng tắt TV được kết nối.

Hỗ trợ HDMI-CEC thường là tùy chọn. Tuy nhiên, hầu hết các nhà sản xuất đều đã áp dụng HDMI-CEC nên thiết bị của họ có thể hoạt động với thiết bị của các công ty khác. Mỗi nhà sản xuất triển khai tiêu chuẩn HDMI-CEC theo những cách khác nhau nên không phải lúc nào các thiết bị cũng hiểu nhau và các tính năng được hỗ trợ cũng khác nhau giữa các thiết bị. Do sự khác biệt này, người tiêu dùng không thể cho rằng hai sản phẩm được hỗ trợ CEC là hoàn toàn tương thích một cách an toàn.

Hỗ trợ HDMI-CEC 2.0 giúp cải thiện khả năng tương thích giữa các thiết bị HDMI nếu cả thiết bị gửi và nhận đều hỗ trợ phiên bản tiêu chuẩn này.

Giải pháp

Với sự ra đời của Khung đầu vào Android TV (TIF), HDMI-CEC tập hợp tất cả các thiết bị được kết nối và giảm thiểu các vấn đề về khả năng tương thích. Android đã tạo ra một dịch vụ hệ thống có tên HdmiControlService để giảm bớt những điểm khó khăn này.

Bằng cách cung cấp HdmiControlService như một phần của hệ sinh thái Android, Android hy vọng sẽ cung cấp:

  • Triển khai tiêu chuẩn HDMI-CEC cho tất cả các nhà sản xuất, điều này sẽ làm giảm khả năng không tương thích của thiết bị. Trước đây, các nhà sản xuất phải phát triển triển khai HDMI-CEC của riêng họ hoặc sử dụng các giải pháp của bên thứ ba.
  • Một dịch vụ đã được thử nghiệm kỹ lưỡng trên nhiều thiết bị HDMI-CEC hiện có trên thị trường. Android đã và đang tiến hành nghiên cứu nghiêm ngặt về các vấn đề tương thích được phát hiện giữa các sản phẩm và thu thập lời khuyên hữu ích từ những người triển khai thiết bị có kinh nghiệm về công nghệ. Dịch vụ CEC được thiết kế để duy trì sự cân bằng lành mạnh giữa tiêu chuẩn và các sửa đổi đối với tiêu chuẩn đó để nó hoạt động với các sản phẩm mà mọi người đã sử dụng.

Thiết kế tổng thể

HdmiControlService được kết nối với phần còn lại của hệ thống như Khung đầu vào TV (TIF), dịch vụ Âm thanh và dịch vụ Nguồn để triển khai các tính năng khác nhau mà tiêu chuẩn chỉ định.

Xem sơ đồ sau để biết mô tả về quá trình chuyển đổi từ bộ điều khiển CEC tùy chỉnh sang triển khai lớp trừu tượng phần cứng HDMI-CEC (HAL) đơn giản hơn.

Sơ đồ minh họa cách HDMI-CEC được triển khai trước và sau Android 5.0

Hình 1. Thay thế Dịch vụ Điều khiển HDMI

Thực hiện

Xem sơ đồ sau để có cái nhìn chi tiết về dịch vụ điều khiển HDMI.

Hình ảnh hiển thị chi tiết dịch vụ HDMI Control

Hình 2. Chi tiết dịch vụ điều khiển HDMI

Dưới đây là các thành phần chính để triển khai Android HDMI-CEC thích hợp:

  • Lớp người quản lý HdmiControlManager cung cấp các ứng dụng đặc quyền với API. Các dịch vụ hệ thống như dịch vụ Trình quản lý đầu vào TV và dịch vụ Âm thanh có thể sử dụng trực tiếp dịch vụ này.
  • Dịch vụ này được thiết kế để cho phép lưu trữ nhiều loại thiết bị logic.
  • HDMI-CEC được kết nối với phần cứng thông qua lớp trừu tượng phần cứng (HAL) để đơn giản hóa việc xử lý những khác biệt về giao thức và cơ chế báo hiệu giữa các thiết bị. Định nghĩa HAL có sẵn để các nhà sản xuất thiết bị sử dụng để triển khai lớp HAL.

Lưu ý : Nhà sản xuất thiết bị nên thêm dòng sau vào PRODUCT_COPY_FILES trong device.mk .

PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.hdmi.cec.xml:system/etc/permissions/android.hardware.hdmi.cec.xml

Tùy thuộc vào việc thiết bị của bạn là thiết bị chìm HDMI hay thiết bị nguồn HDMI, nhà sản xuất thiết bị cần đặt ro.hdmi.device_type trong device.mk để HdmiControlService hoạt động chính xác.

Đối với các thiết bị nguồn HDMI, chẳng hạn như thiết bị Over the Top (OTT) hoặc Set-top box (STB), hãy đặt:

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4

Đối với các thiết bị chìm HDMI, như TV màn hình, hãy đặt:

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
  • Bộ điều khiển CEC độc quyền do nhà sản xuất thiết bị cung cấp không thể cùng tồn tại với HdmiControlService . Nó phải bị vô hiệu hóa hoặc loại bỏ. Yêu cầu chung cho việc này xuất phát từ nhu cầu xử lý các lệnh dành riêng cho nhà sản xuất. Trình xử lý lệnh dành riêng cho nhà sản xuất phải được tích hợp vào dịch vụ bằng cách mở rộng/sửa đổi nó. Công việc này được giao cho nhà sản xuất thiết bị và không được Android chỉ định. Lưu ý rằng mọi thay đổi được thực hiện trong dịch vụ dành cho các lệnh dành riêng cho nhà sản xuất không được can thiệp vào cách xử lý các lệnh tiêu chuẩn, nếu không thiết bị sẽ không tương thích với Android.
  • Quyền truy cập vào dịch vụ HDMI-CEC được bảo vệ ở mức bảo vệ SignatureOrSystem . Chỉ các thành phần hệ thống hoặc ứng dụng được đặt trong /system/priv-app có thể truy cập dịch vụ. Điều này nhằm bảo vệ dịch vụ khỏi bị lạm dụng bởi các ứng dụng có mục đích xấu.

Android hỗ trợ loại TV/Display(0) , Playback device(4) có thể phát lệnh One Touch Play để trở thành nguồn hoạt động và Audio System (5) xử lý chế độ âm thanh hệ thống và ARC. Các loại thiết bị khác (Bộ thu sóng và Đầu ghi) hiện không được hỗ trợ.

HDMI-CEC HAL

API HDMI-CEC HAL cho phép HdmiControlService sử dụng tài nguyên phần cứng để gửi/nhận lệnh HDMI-CEC, định cấu hình các cài đặt cần thiết và (tùy chọn) giao tiếp với bộ vi xử lý trong nền tảng cơ bản sẽ đảm nhận quyền kiểm soát CEC trong khi Android hệ thống đang ở chế độ chờ.

Phiên bản Đặc trưng Tệp HAL
1.0 Định cấu hình dữ liệu HAL (địa chỉ, tính năng). Gửi lệnh HDMI-CEC. Đăng ký gọi lại để nhận lệnh HDMI-CEC và các sự kiện cắm nóng. IHdmiCec.hal
IHdmiCecCallback.hal
1.1 Giới thiệu các loại HDMI-CEC 2.0 @1.1::IHdmiCec.hal
@1.1::IHdmiCecCallback.hal

Kiểm tra

Việc triển khai HDMI-CEC của thiết bị được kiểm tra và xác minh thông qua các thử nghiệm CTS theo tài liệu HDMI-CEC CTS .

HDMI-CEC 2.0

Các thiết bị nguồn (phát lại) và chìm (bảng điều khiển TV) Android hỗ trợ HDMI-CEC 2.0. HDMI-CEC 2.0 cung cấp khả năng tương tác tốt hơn giữa các thiết bị HDMI, cải tiến Truyền qua điều khiển từ xa và thử nghiệm chứng nhận rộng rãi hơn. Nói chung, tương tác HDMI-CEC 2.0 với các thiết bị khác hiệu quả hơn, dẫn đến lưu lượng HDMI-CEC ít hơn cũng như tương tác nhanh hơn.

Để thiết bị hỗ trợ HDMI-CEC 2.0, cấu hình thiết bị và người dùng phải được đặt để sử dụng HDMI-CEC 2.0. Việc triển khai HAL cũng phải báo cáo hỗ trợ cho HDMI-CEC 2.0 trong các lệnh gọi tới IHdmiCec#getCecVersion .

cấu hình CEC

Hành vi HDMI-CEC có thể được định cấu hình ở cả thời gian xây dựng (bởi OEM sử dụng RRO) và thời gian chạy (bởi HdmiControlManager @SystemApi).

Ví dụ về cài đặt HDMI-CEC:

Cài đặt Lựa chọn
HDMI-CEC được bật hay tắt. Đã bật
Tàn tật
Phạm vi thông báo điều khiển nguồn HDMI-CEC được gửi bởi thiết bị phát lại. Chỉ tới TV
Đến TV và hệ thống âm thanh
Phát tin
Không có

Đối với mỗi cài đặt hiện có và các tùy chọn được phép có thể được ứng dụng truy vấn trong thời gian chạy.