Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

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

Tiêu chuẩn Điều khiển Điện tử Gia 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ư Passthrough Đ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 của nó, vì vậy bạn không cần phải tìm kiếm điều khiển từ xa TV để chuyển từ Chromecast sang đầu phát Blu-ray.

Với Android 12, điều khiển nguồn của màn hình được kết nối HDMI phù hợp với điều khiển nguồn của màn hình bên trong. Khi thiết bị phát lại HDMI đánh thức, 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ủ trong khi đó 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 đã áp dụng HDMI-CEC để thiết bị của họ 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, vì vậy các thiết bị không phải lúc nào cũng hiểu nhau và các tính năng được hỗ trợ sẽ 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ể giả định một cách an toàn rằng hai sản phẩm yêu cầu hỗ trợ CEC là hoàn toàn tương thích.

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.

Dung dịch

Với sự ra đời của Android TV Input Framework (TIF), HDMI-CEC tập hợp tất cả các thiết bị được kết nối lại với nhau 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 là 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:

  • Việc 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 tính 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 tốt trên nhiều thiết bị HDMI-CEC đã 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 tìm thấy 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 trong công nghệ. Dịch vụ CEC được thiết kế để giữ 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ả 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 đơn giản hơn (HAL).

Sơ đồ cho thấy HDMI-CEC đã được triển khai như thế nào 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 để biết chi tiết về dịch vụ điều khiển HDMI.

Hình ảnh hiển thị chi tiết dịch vụ Điều khiển HDMI như thế nào

Hình 2. Chi tiết về 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 đúng cách:

  • HdmiControlManager lớp người quản lý 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 dịch vụ này trực tiếp.
  • Dịch vụ được thiết kế để cho phép lưu trữ nhiều hơn một 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ý sự khác biệt của giao thức và cơ chế tín hiệu giữa các thiết bị. Định nghĩa HAL có sẵn cho các nhà sản xuất thiết bị sử dụng để triển khai lớp HAL.

Lưu ý : Các 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, các 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 thiết bị chìm HDMI, như TV bảng điều khiển, 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 cung cấp không thể cùng tồn tại với HdmiControlService . Nó phải được vô hiệu hóa hoặc loại bỏ. Các yêu cầu chung cho việc này xuất phát từ nhu cầu xử lý các lệnh của nhà sản xuất cụ thể. Trình xử lý lệnh dành riêng cho nhà sản xuất phải được kết 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 để cho nhà sản xuất thiết bị và không được chỉ định bởi Android. Lưu ý rằng bất kỳ thay đổi nào được thực hiện trong dịch vụ đối với 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 hoặc 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ệ với cấp độ bảo vệ SignatureOrSystem . Chỉ các thành phần hệ thống hoặc các ứng dụng được đặt trong /system/priv-app có thể truy cập dịch vụ. Điều này là để bảo vệ dịch vụ khỏi sự lạm dụng của các ứng dụng có mục đích xấu.

Android hỗ trợ loại TV/Display(0) , Playback device(4) có thể đưa ra 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 (Tuner và Recorder) 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 các 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 bên dưới sẽ tiếp quản điều khiển 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à 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

Thử nghiệm

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

HDMI-CEC 2.0

Thiết bị nguồn (phát lại) và thiết bị 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 đối với Passthrough Điều khiển từ xa và thử nghiệm chứng nhận mở rộng 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.

Đối với thiết bị hỗ trợ HDMI-CEC 2.0, thiết bị và cấu hình 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ợ 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 Quyền mua
HDMI-CEC được bật hay tắt. Đã bật
Vô hiệu hóa
Phạm vi của 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ỉ đến TV
Tới TV và Hệ thống âm thanh
Phát tin
Không có

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