
Khung đầu vào Android TV (TIF) đơn giản hóa việc phân phối nội dung trực tiếp đến Android TV. Android TIF cung cấp một API tiêu chuẩn cho các nhà sản xuất để tạo các mô-đun đầu vào để điều khiển Android TV và cho phép tìm kiếm TV trực tiếp và các đề xuất thông qua siêu dữ liệu do TV Input xuất bản.
Khuôn khổ không tìm cách thực hiện các tiêu chuẩn truyền hình hoặc các yêu cầu của khu vực, nhưng giúp các nhà sản xuất thiết bị dễ dàng đáp ứng các tiêu chuẩn phát sóng truyền hình kỹ thuật số của khu vực mà không cần thực hiện lại. Tài liệu trong phần này cũng có thể hữu ích cho các nhà phát triển ứng dụng bên thứ ba, những người muốn tạo Đầu vào TV tùy chỉnh.
Các thành phần
Triển khai Khung đầu vào Android TV bao gồm Trình quản lý đầu vào TV. TIF hoạt động với Ứng dụng TV, một ứng dụng hệ thống không thể thay thế bằng ứng dụng của bên thứ ba, để truy cập các kênh tích hợp và bộ dò IP. Ứng dụng TV giao tiếp với các mô-đun Đầu vào TV do nhà sản xuất thiết bị hoặc các bên khác cung cấp thông qua Trình quản lý đầu vào TV.
Khung đầu vào TV bao gồm:
- Nhà cung cấp TV (
com.android.providers.tv.TvProvider
): cơ sở dữ liệu các kênh, chương trình và các quyền liên quan - Ứng dụng TV (
com.android.tv.TvActivity
): ứng dụng xử lý tương tác của người dùng - Trình quản lý đầu vào TV (
android.media.tv.TvInputManager
): cho phép Đầu vào TV giao tiếp với Ứng dụng TV - Đầu vào TV: một ứng dụng đại diện cho các bộ điều chỉnh vật lý hoặc ảo và các cổng đầu vào
- Đầu vào TV HAL (mô-đun
tv_input
): định nghĩa phần cứng cho phép Đầu vào TV của hệ thống truy cập phần cứng dành riêng cho TV khi được triển khai - Kiểm soát của phụ huynh: công nghệ cho phép chặn các kênh và chương trình
- HDMI-CEC: công nghệ cho phép điều khiển từ xa các thiết bị khác nhau qua HDMI
- Khung bộ dò: khung cho đầu vào TV tích hợp bộ dò
- MediaCas: một khuôn khổ để truy cập có điều kiện
- Trình quản lý tài nguyên bộ chỉnh: một dịch vụ để quản lý tài nguyên phần cứng cho đầu vào TV, MediaCas và đầu vào Bộ điều chỉnh tích hợp
Các thành phần này được đề cập chi tiết dưới đây. Xem sơ đồ sau để biết chi tiết về kiến trúc Khung nhập liệu của Android TV.

lưu lượng
Đây là cách kiến trúc được thực thi:
- Người dùng nhìn thấy và tương tác với Ứng dụng TV, một ứng dụng hệ thống không thể thay thế bằng ứng dụng của bên thứ ba.
- Ứng dụng TV hiển thị nội dung AV từ Đầu vào TV.
- Ứng dụng TV không thể nói chuyện trực tiếp với Đầu vào TV. Trình quản lý đầu vào TV xác định trạng thái của Đầu vào TV cho Ứng dụng TV. Xem Trình quản lý đầu vào TV bên dưới để biết thêm chi tiết về những hạn chế này.
Quyền
- Chỉ có Đầu vào TV
signatureOrSystem
và Ứng dụng TV mới có toàn quyền truy cập vào cơ sở dữ liệu của Nhà cung cấp TV và có thể nhận KeyEvents. - Chỉ Đầu vào TV của hệ thống mới có thể truy cập HAL Đầu vào TV thông qua dịch vụ Trình quản lý đầu vào TV. Đầu vào TV được truy cập 1-1 qua các phiên Trình quản lý đầu vào TV.
- Đầu vào TV của bên thứ ba có quyền truy cập bị khóa gói vào cơ sở dữ liệu của Nhà cung cấp TV và chỉ có thể ĐỌC / VIẾT cho các hàng gói phù hợp.
- Đầu vào TV của bên thứ ba có thể hiển thị nội dung của riêng họ hoặc nội dung từ đầu vào TV chuyển qua của nhà sản xuất thiết bị, như HDMI1. Chúng không thể hiển thị nội dung từ các đầu vào TV không truyền qua, như bộ dò sóng tích hợp sẵn hoặc IPTV.
-
TV_INPUT_HARDWARE
đối với ứng dụng Đầu vào TV phần cứng, báo hiệu Dịch vụ Trình quản lý đầu vào TV để thông báo cho Dịch vụ đầu vào TV khi khởi động để gọi Dịch vụ Trình quản lý đầu vào TV và thêm Đầu vào TV của nó. Quyền này cho phép ứng dụng Đầu vào TV phần cứng hỗ trợ nhiều Đầu vào TV trên mỗi dịch vụ Đầu vào TV, cũng như có thể thêm và xóa động các Đầu vào TV được hỗ trợ của nó.
Nhà cung cấp TV
Cơ sở dữ liệu của Nhà cung cấp TV lưu trữ các kênh và chương trình từ Đầu vào TV. Nhà cung cấp TV cũng xuất bản và quản lý các quyền liên quan để Đầu vào TV chỉ có thể xem các bản ghi của chính họ. Ví dụ: một Đầu vào TV cụ thể chỉ có thể xem các kênh và chương trình mà nó đã cung cấp và bị cấm truy cập bất kỳ kênh và chương trình nào khác của Đầu vào TV.
Nhà cung cấp truyền hình ánh xạ nội bộ "thể loại phát sóng" thành "thể loại chuẩn". Đầu vào TV chịu trách nhiệm điền "thể loại phát sóng" với giá trị trong tiêu chuẩn phát sóng cơ bản và trường "thể loại chuẩn" sẽ tự động được điền đúng thể loại được liên kết từ android.provider.TvContract.Genres
. Ví dụ: với ATSC A / 65 tiêu chuẩn phát sóng và chương trình có thể loại 0x25 (nghĩa là "Thể thao"), Đầu vào TV sẽ điền "thể loại phát sóng" với Chuỗi "Thể thao" và Nhà cung cấp TV sẽ điền vào trường "thể loại chuẩn" với giá trị được ánh xạ android.provider.TvContract.Genres.SPORTS
.
Xem sơ đồ bên dưới để biết chi tiết về Nhà cung cấp TV.

Chỉ các ứng dụng trong phân vùng hệ thống đặc quyền mới có thể đọc toàn bộ cơ sở dữ liệu của Nhà cung cấp TV.
Đầu vào TV chuyển qua không lưu trữ các kênh và chương trình.
Ngoài các trường tiêu chuẩn cho các kênh và chương trình, cơ sở dữ liệu của Nhà cung cấp TV cũng cung cấp trường loại BLOB, COLUMN_INTERNAL_PROVIDER_DATA
, trong mỗi bảng mà Đầu vào TV có thể sử dụng để lưu trữ dữ liệu tùy ý. Dữ liệu BLOB đó có thể bao gồm thông tin tùy chỉnh, chẳng hạn như tần số của bộ dò được liên kết và có thể được cung cấp trong bộ đệm giao thức hoặc một hình thức khác. Trường Có thể tìm kiếm có sẵn để làm cho một số kênh nhất định không khả dụng trong tìm kiếm (chẳng hạn như để đáp ứng các yêu cầu của quốc gia cụ thể về bảo vệ nội dung).
Ví dụ về trường cơ sở dữ liệu
Nhà cung cấp TV hỗ trợ dữ liệu có cấu trúc trong bảng kênh ( android.provider.TvContract.Channels
) và chương trình ( android.provider.TvContract.Programs
). Các bảng này được điền và truy cập bởi Đầu vào TV và các ứng dụng hệ thống như Ứng dụng TV. Các bảng này có bốn loại trường:
- Hiển thị: Các trường hiển thị chứa thông tin mà ứng dụng có thể muốn hiển thị cho người dùng, chẳng hạn như tên kênh (
COLUMN_DISPLAY_NAME
) hoặc số (COLUMN_DISPLAY_NUMBER
) hoặc tiêu đề của chương trình đang được xem. - Siêu dữ liệu: Có ba trường để xác định nội dung, theo các tiêu chuẩn liên quan, như ID luồng truyền tải của kênh (
COLUMN_TRANSPORT_STREAM_ID
), ID mạng gốc (COLUMN_ORIGINAL_NETWORK_ID
) và id dịch vụ (COLUMN_SERVICE_ID
). - Dữ liệu nội bộ : Các trường dành cho việc sử dụng tùy chỉnh Đầu vào TV.
Một số trường, nhưCOLUMN_INTERNAL_PROVIDER_DATA
, là các trường BLOB có thể tùy chỉnh trong đó Đầu vào TV có thể lưu trữ siêu dữ liệu tùy ý về kênh hoặc chương trình của chúng. - Cờ: Các trường gắn cờ biểu thị liệu một kênh có nên bị hạn chế tìm kiếm, duyệt hoặc xem hay không. Điều này chỉ có thể được đặt ở cấp độ kênh. Tất cả các chương trình đều tuân theo cài đặt trên kênh.
-
COLUMN_SEARCHABLE
: Hạn chế tìm kiếm từ một số kênh có thể là một yêu cầu ở một số vùng nhất định.COLUMN_SEARCHABLE = 0
có nghĩa là kênh không được hiển thị trong kết quả tìm kiếm. -
COLUMN_BROWSABLE
: Chỉ hiển thị với các ứng dụng hệ thống. Hạn chế kênh bị các ứng dụng duyệt.COLUMN_BROWSABLE = 0
có nghĩa là kênh không nên được đưa vào danh sách kênh. -
COLUMN_LOCKED
: Chỉ hiển thị với các ứng dụng hệ thống. Hạn chế việc các tài khoản không hợp lệ xem kênh mà không cần nhập mã PIN.COLUMN_LOCKED = 1
có nghĩa là kênh phải được bảo vệ bởi sự kiểm soát của phụ huynh.
Để có danh sách đầy đủ hơn về các trường, hãy xem android/frameworks/base/media/java/android/media/tv/TvContract.java
Quyền và kiểm soát truy cập
Tất cả các trường đều hiển thị cho bất kỳ ai có quyền truy cập vào hàng tương ứng. Không có trường nào có thể truy cập trực tiếp cho người dùng; họ chỉ nhìn thấy những gì mà Ứng dụng TV, Ứng dụng hệ thống hoặc Đầu vào TV hiển thị.
- Mỗi hàng có
PACKAGE_NAME
, gói (ứng dụng) sở hữu hàng đó, được kiểm tra trên Truy vấn, Chèn, Cập nhật qua TvProvider.java. Một Đầu vào TV chỉ có thể truy cập thông tin mà nó đã viết và được tách ra khỏi thông tin được cung cấp bởi các Đầu vào TV khác. - Quyền ĐỌC, VIẾT qua AndroidManifest.xml (yêu cầu sự đồng ý của người dùng) để xác định các kênh khả dụng.
- Chỉ các ứng dụng
signatureOrSystem
mới có thể có được quyềnACCESS_ALL_EPG_DATA
để truy cập vào toàn bộ cơ sở dữ liệu.
Trình quản lý đầu vào TV
Trình quản lý đầu vào TV cung cấp API hệ thống trung tâm cho Khung nhập liệu Android TV tổng thể. Nó phân xử sự tương tác giữa các ứng dụng và Đầu vào TV và cung cấp chức năng kiểm soát của phụ huynh. Các phiên của Trình quản lý đầu vào TV phải được tạo 1-1 với Đầu vào TV. Trình quản lý đầu vào TV cho phép truy cập vào các Đầu vào TV đã cài đặt để các ứng dụng có thể:
- Liệt kê các đầu vào TV và kiểm tra trạng thái của chúng
- Tạo phiên và quản lý người nghe
Đối với các phiên, một Đầu vào TV có thể được điều chỉnh bởi Ứng dụng TV chỉ với URI mà nó đã thêm vào cơ sở dữ liệu của Nhà cung cấp TV, ngoại trừ Đầu vào TV chuyển qua có thể được điều chỉnh bằng TvContract.buildChannelUriForPassthroughInput()
. Đầu vào TV cũng có thể được đặt âm lượng. Đầu vào TV được cung cấp và ký bởi nhà sản xuất thiết bị (ứng dụng chữ ký) hoặc các ứng dụng khác được cài đặt trong phân vùng hệ thống sẽ có quyền truy cập vào toàn bộ cơ sở dữ liệu của Nhà cung cấp TV. Quyền truy cập này có thể được sử dụng để tạo các ứng dụng duyệt và tìm kiếm trên tất cả các kênh và chương trình TV hiện có.
Một ứng dụng có thể tạo và đăng ký TvInputCallback
với android.media.tv.TvInputManager
để được gọi lại khi thay đổi trạng thái của Đầu vào TV hoặc khi thêm hoặc xóa Đầu vào TV. Ví dụ: Ứng dụng TV có thể phản ứng khi Ngõ vào TV bị ngắt kết nối bằng cách hiển thị nó là đã ngắt kết nối và ngăn lựa chọn của nó.
Trình quản lý đầu vào TV tóm tắt giao tiếp giữa Ứng dụng TV và Đầu vào TV. Giao diện tiêu chuẩn của Trình quản lý đầu vào TV và Đầu vào TV cho phép nhiều nhà sản xuất thiết bị tạo Ứng dụng TV của riêng họ đồng thời giúp tất cả các Đầu vào TV của bên thứ ba hoạt động trên tất cả các Ứng dụng TV.
Đầu vào TV
Đầu vào TV là ứng dụng Android theo nghĩa chúng có AndroidManifest.xml và được cài đặt (thông qua Play, cài đặt sẵn hoặc truyền tải). Android TV hỗ trợ các ứng dụng hệ thống được cài đặt sẵn, ứng dụng do nhà sản xuất thiết bị ký và Đầu vào TV của bên thứ ba.
Một số đầu vào, như đầu vào HDMI hoặc đầu vào bộ chỉnh tích hợp, chỉ có thể được cung cấp bởi nhà sản xuất khi chúng nói chuyện trực tiếp với phần cứng bên dưới. Những thứ khác, chẳng hạn như IPTV, dịch chuyển vị trí và STB bên ngoài, có thể được bên thứ ba cung cấp dưới dạng APK trên Cửa hàng Google Play. Sau khi tải xuống và cài đặt, đầu vào mới có thể được chọn trong Ứng dụng TV.
Ví dụ về đầu vào chuyển qua

Trong ví dụ này, Đầu vào TV do nhà sản xuất thiết bị cung cấp được tin cậy và có toàn quyền truy cập vào Nhà cung cấp TV. Là một Đầu vào TV thông qua, nó không đăng ký bất kỳ kênh hoặc chương trình nào với Nhà cung cấp TV. Để lấy URI được sử dụng để tham chiếu đầu vào chuyển qua, hãy sử dụng phương thức tiện ích android.media.tv.TvContract
buildChannelUriForPassthroughInput(String inputId)
. Ứng dụng TV giao tiếp với Trình quản lý đầu vào TV để đến Đầu vào TV HDMI.
Ví dụ về bộ chỉnh tích hợp

Trong ví dụ này, Đầu vào TV Bộ dò tích hợp do nhà sản xuất thiết bị cung cấp được tin cậy và có toàn quyền truy cập vào Nhà cung cấp TV.
Ví dụ đầu vào của bên thứ ba

Trong ví dụ này, Đầu vào TV STB bên ngoài được cung cấp bởi bên thứ ba. Vì Đầu vào TV đó không thể truy cập trực tiếp vào nguồn cấp video HDMI, nó phải đi qua Trình quản lý đầu vào TV và sử dụng Đầu vào TV HDMI do nhà sản xuất thiết bị cung cấp.
Thông qua Trình quản lý đầu vào TV, Đầu vào TV STB bên ngoài có thể nói chuyện với Đầu vào TV HDMI và yêu cầu nó hiển thị video trên HDMI1. Vì vậy, Đầu vào TV STB có thể điều khiển TV trong khi Đầu vào TV HDMI do nhà sản xuất cung cấp hiển thị video.
Ví dụ về hình ảnh trong hình ảnh (PIP)

Sơ đồ trên cho thấy cách các nút trên điều khiển từ xa được chuyển đến một Đầu vào TV cụ thể để hiển thị hình ảnh trong hình (PIP). Những lần nhấn nút đó được diễn giải bởi trình điều khiển phần cứng do nhà sản xuất thiết bị cung cấp, chuyển đổi mã InputDispatcher
InputReader
chuẩn của Android dưới dạng KeyEvents . Những điều này lần lượt kích hoạt các sự kiện trên Ứng dụng TV nếu nó được lấy nét.
Chỉ Đầu vào TV của hệ thống mới đủ điều kiện nhận InputEvents
và chỉ khi chúng có quyền hệ thống RECEIVE_INPUT_EVENT
. Đầu vào TV chịu trách nhiệm xác định Đầu vào nào cần sử dụng và phải cho phép Ứng dụng TV xử lý các phím mà nó không cần sử dụng.
Ứng dụng TV chịu trách nhiệm biết Đầu vào TV của hệ thống nào đang hoạt động, nghĩa là do người dùng chọn, đồng thời phân định các KeyEvents
đến và định tuyến chúng đến đúng phiên Trình quản lý đầu vào TV, gọi dispatchInputEvent()
để chuyển sự kiện đến Đầu vào TV được liên kết .
Ví dụ đầu vào MHEG-5
Sơ đồ sau đây cho thấy cái nhìn chi tiết hơn về cách KeyEvents
được định tuyến thông qua Android TIF.

Nó mô tả dòng chảy của ứng dụng nút Đỏ, phổ biến ở Châu Âu để cho phép người dùng truy cập các ứng dụng tương tác trên TV của họ. Ứng dụng có thể được phân phối qua luồng vận chuyển này. Khi nhấp vào nút, nó cho phép người dùng tương tác với các ứng dụng phát sóng này. Ví dụ: bạn có thể sử dụng các ứng dụng phát sóng này để truy cập các trang web liên quan hoặc điểm số thể thao.
Xem phần Ứng dụng truyền phát để tìm hiểu cách các ứng dụng phát sóng tương tác với Ứng dụng TV.
Trong ví dụ này:
- Ứng dụng TV được lấy nét và nhận tất cả các phím.
-
KeyEvents
(ví dụ: nút Đỏ) được chuyển đến Đầu vào TV đang hoạt động dưới dạngInputEvents.
- Đầu vào TV của hệ thống tích hợp với ngăn xếp MHEG-5 và có quyền hệ thống
RECEIVE_INPUT_EVENT
. - Khi nhận được mã khóa kích hoạt (ví dụ như nút Đỏ), Đầu vào TV sẽ kích hoạt ứng dụng phát sóng.
- Đầu vào TV sử dụng
KeyEvents
dưới dạngInputEvents
và ứng dụng phát sóng là trọng tâm và xử lýInputEvents
cho đến khi bị loại bỏ.
Lưu ý : Đầu vào TV của bên thứ ba không bao giờ nhận được phím.
Đầu vào TV HAL
Đầu vào TV HAL hỗ trợ phát triển Đầu vào TV để truy cập phần cứng dành riêng cho TV. Như với các Android HAL khác, HAL đầu vào TV ( tv_input
) có sẵn trong cây nguồn AOSP và nhà cung cấp phát triển việc triển khai nó.
Ứng dụng TV
Ứng dụng TV hệ thống trình bày nội dung truyền hình trực tiếp cho người dùng. Ứng dụng TV tham chiếu (Truyền hình trực tiếp) được cung cấp cùng với nền tảng Android, có thể được sử dụng nguyên trạng, tùy chỉnh, mở rộng hoặc thay thế bởi các nhà sản xuất thiết bị. Mã nguồn có sẵn trong Dự án nguồn mở Android và bạn có thể bắt đầu với nó trong bài viết về ứng dụng Reference TV .
Các nhà sản xuất thiết bị có thể mở rộng Ứng dụng TV của họ để triển khai các tính năng dành riêng cho nhà sản xuất thiết bị hoặc quốc gia, tuy nhiên, điều này không nằm trong phạm vi của TIF hoặc Ứng dụng TV tham chiếu.
Tối thiểu, Ứng dụng TV hệ thống cần xử lý các tác vụ sau:
Thiết lập và cấu hình
- Tự động phát hiện đầu vào TV
- Cho phép Đầu vào TV bắt đầu thiết lập kênh
- Kiểm soát cài đặt của phụ huynh
- Chỉnh sửa kênh
Đang xem
- Truy cập và điều hướng tất cả các kênh truyền hình
- Truy cập thanh thông tin chương trình TV
- Hiển thị dữ liệu Hướng dẫn Lập trình Điện tử (EPG)
- Hỗ trợ nhiều bản nhạc phụ đề và âm thanh
- Cung cấp thử thách mã PIN kiểm soát của phụ huynh
- Cho phép lớp phủ Giao diện người dùng đầu vào TV cho tiêu chuẩn TV (HbbTV, v.v.)
- Điền kết quả tìm kiếm cho các kênh và chương trình truyền hình
- Hiển thị thẻ liên kết ứng dụng
- Hỗ trợ các API dịch chuyển thời gian
- Xử lý chức năng DVR và hỗ trợ API ghi TV
Bộ tính năng này sẽ tăng lên cùng với các phiên bản Android mới, nơi các API TIF của nền tảng được mở rộng. CTS Verifier cung cấp phạm vi kiểm tra tính tương thích.
Hỗ trợ đầu vào TV của bên thứ ba
Android TV cung cấp API nhà phát triển cho đầu vào TV của bên thứ ba, cho phép các ứng dụng đã cài đặt cung cấp các kênh phần mềm vào trải nghiệm TV trực tiếp. Để đảm bảo việc triển khai thiết bị Android tương thích, Ứng dụng TV hệ thống có một số trách nhiệm liên quan đến việc hiển thị các kênh và đầu vào TV của bên thứ ba cho người dùng. Ứng dụng Live TV tham chiếu cung cấp một triển khai tương thích; nếu thay thế Ứng dụng TV hệ thống, các nhà sản xuất thiết bị phải đảm bảo các ứng dụng của riêng họ cung cấp khả năng tương thích tương tự, để đáp ứng kỳ vọng của nhà phát triển trên tất cả các thiết bị Android TV.
Ứng dụng TV hệ thống phải hiển thị đầu vào của bên thứ ba cùng với dịch vụ truyền hình trực tiếp mặc định của thiết bị. Lời hứa của các API nhà phát triển là người dùng sẽ có thể tìm thấy các kênh (sau khi được cài đặt) trong trải nghiệm TV tiêu chuẩn của họ.
Cho phép phân biệt bằng hình ảnh giữa các kênh tích hợp sẵn và các kênh của bên thứ ba, như được định nghĩa trong phần Ứng dụng TV của Android CDD.
Các phần sau đây cho biết cách ứng dụng Live TV đáp ứng các yêu cầu của CDD.
Thiết lập kênh mới
Việc bổ sung các đầu vào / kênh mới của bên thứ ba bắt đầu bằng việc người dùng tìm và cài đặt Đầu vào TV từ một cửa hàng ứng dụng, chẳng hạn như Google Play.
Một số đầu vào TV của bên thứ ba tự động thêm kênh vào cơ sở dữ liệu TvProvider. Tuy nhiên, hầu hết sẽ cung cấp hoạt động Thiết lập để cho phép người dùng thiết lập kênh của họ, cung cấp chi tiết đăng nhập và các hành động khác. Ứng dụng TV hệ thống cần đảm bảo người dùng có thể kích hoạt hoạt động Thiết lập này, đó là lý do tại sao CDD yêu cầu đầu vào của bên thứ ba là các hành động điều hướng tối thiểu cách xa Ứng dụng TV chính.
Ứng dụng Live TV tham chiếu cung cấp menu Nguồn kênh để truy cập đầu vào.




Ngoài ra, thẻ thông báo được hiển thị ở đầu menu Ứng dụng TV sau khi cài đặt TvInput mới, để đưa người dùng trực tiếp đến phần Cài đặt:

Nếu người dùng thực hiện hành động thông qua thông báo, họ có thể chọn thiết lập các nguồn của họ như trong Hình 10.
Xem Xác định Dịch vụ Đầu vào TV của bạn để biết kỳ vọng của nhà phát triển trong lĩnh vực này.
Tùy chỉnh danh sách kênh
Các nhà sản xuất thiết bị có thể cung cấp giao diện người dùng để ẩn các kênh nhất định và cho phép người dùng quản lý EPG của riêng họ. Truyền hình trực tiếp bao gồm tiện nghi này.


EPG
Các nhà phát triển đầu vào bên thứ ba cần tin tưởng rằng người dùng có thể dễ dàng điều hướng đến các kênh của họ trong quá trình sử dụng chung, trên tất cả các thiết bị Android TV tương thích.
Các kênh từ đầu vào của bên thứ ba phải được hiển thị như một phần của EPG trải nghiệm truyền hình trực tiếp tiêu chuẩn của thiết bị. Có thể sử dụng phân tách trực quan hoặc các danh mục riêng biệt cho các kênh của bên thứ ba (xem phần Ứng dụng TV của Android CDD) — điều quan trọng là người dùng có thể tìm thấy các kênh họ đã cài đặt.
Tìm kiếm
Các nhà sản xuất phải triển khai Ứng dụng TV để đưa vào kết quả tìm kiếm cho các yêu cầu tìm kiếm toàn cầu nhằm đảm bảo trải nghiệm người dùng tốt nhất. Live TV cung cấp triển khai (xem com.android.tv.search.TvProviderSearch ) cung cấp kết quả từ các đầu vào của bên thứ ba (bắt buộc để tương thích với nền tảng) cũng như các đầu vào tích hợp sẵn.
Chuyển dịch thời gian
Đối với các thiết bị chạy Android 6.0 trở lên, Ứng dụng TV phải hỗ trợ API dịch chuyển thời gian trong khuôn khổ Android. Ngoài ra, các nhà sản xuất phải triển khai các điều khiển phát lại trong Ứng dụng TV, cho phép người dùng tạm dừng, tiếp tục, tua lại và tua đi nhanh quá trình phát lại.
Đối với các Đầu vào TV hỗ trợ dịch chuyển thời gian, Ứng dụng TV cần hiển thị các điều khiển phát lại.

DVR
Đối với các thiết bị chạy Android 7.0 trở lên, Ứng dụng TV phải hỗ trợ API ghi TV khung Android để hỗ trợ, liệt kê và phát các chương trình đã ghi.
Điều này cho phép các nhà sản xuất thiết bị cắm các hệ thống con DVR của họ vào TIF và giảm đáng kể nỗ lực tích hợp cần thiết để kích hoạt hoặc tích hợp chức năng DVR trên thiết bị TV. Nó cũng cho phép các bên thứ ba cung cấp hệ thống DVR hậu mãi có thể được cắm vào thiết bị Android TV.
Ngoài việc ghi lại nội dung trực tiếp, Ứng dụng TV còn xử lý xung đột tài nguyên. Ví dụ, nếu thiết bị có hai bộ chỉnh, nó có thể ghi hai chương trình cùng một lúc. Nếu người dùng yêu cầu ghi lại ba, Ứng dụng TV phải xử lý xung đột và phải hiển thị thông báo hoặc yêu cầu người dùng lên lịch ưu tiên cho các yêu cầu này.
Ứng dụng TV cũng có thể triển khai logic phức tạp hơn như hỏi người dùng xem họ có muốn ghi lại tất cả các tập trong tương lai trong một chuỗi hay không khi họ yêu cầu ghi một tập.
Xem sơ đồ sau để biết cách triển khai DVR khả thi trong Android TV.

- Dịch vụ đầu vào TV cho Ứng dụng TV biết có bao nhiêu bộ điều chỉnh để Ứng dụng TV có thể xử lý xung đột tài nguyên có thể xảy ra.
- Ứng dụng TV nhận được yêu cầu ghi chương trình TV do người dùng khởi tạo.
- Ứng dụng TV lưu trữ lịch ghi trong cơ sở dữ liệu nội bộ của nó.
- Khi đến lúc ghi, Ứng dụng TV sẽ chuyển yêu cầu dò kênh được liên kết với bản ghi.
- Dịch vụ đầu vào TV nhận được yêu cầu này, phản hồi xem có tài nguyên thích hợp hay không và điều chỉnh kênh.
- Sau đó, Ứng dụng TV chuyển yêu cầu bắt đầu ghi đến Trình quản lý đầu vào TV.
- Dịch vụ đầu vào TV nhận được yêu cầu này và bắt đầu ghi.
- Dịch vụ đầu vào TV lưu trữ dữ liệu video thực tế trong bộ nhớ của nó, có thể là bộ nhớ ngoài hoặc bộ nhớ đám mây.
- Khi đến lúc kết thúc ghi, Ứng dụng TV sẽ chuyển yêu cầu dừng ghi đến Trình quản lý đầu vào TV.
- Sau khi Dịch vụ đầu vào TV nhận được yêu cầu, nó sẽ dừng quá trình ghi và thêm siêu dữ liệu liên quan vào Nhà cung cấp TV để Ứng dụng TV có thể hiển thị bản ghi cho người dùng khi được yêu cầu.
Để biết thêm thông tin về cách triển khai tính năng Ghi trong dịch vụ Đầu vào TV của bạn, hãy xem bài viết Ghi TV này.
Tài nguyên hữu ích
- CDD của Android và các API của nhà phát triển được lập thành tài liệu là những tham chiếu cuối cùng.
- CTS Verifier thực hiện các API như một phần của chương trình kiểm tra tính tương thích. Chạy điều này với Truyền hình trực tiếp có thể là một cách hữu ích để xem EPG, Tìm kiếm, Kiểm soát của phụ huynh và các yêu cầu khác trong bối cảnh đầu vào của bên thứ ba.
- Xem Xác định Dịch vụ Đầu vào TV của bạn để biết kỳ vọng của nhà phát triển trong lĩnh vực này.
Kiểm soát của cha mẹ
Quyền kiểm soát của phụ huynh cho phép người dùng chặn các kênh và chương trình không mong muốn, nhưng bỏ qua việc chặn bằng cách nhập mã PIN.
Trách nhiệm đối với chức năng kiểm soát của phụ huynh được chia sẻ giữa Ứng dụng TV, dịch vụ Trình quản lý đầu vào TV, Nhà cung cấp TV và Đầu vào TV.
Kiểm soát của phụ huynh là bắt buộc và được điều chỉnh bởi Người xác minh CTS.
Một số quốc gia đã xác định hệ thống xếp hạng mà Đầu vào TV có thể sử dụng thông qua API TVContentRating . Ngoài ra, Đầu vào TV có thể đăng ký hệ thống xếp hạng tùy chỉnh của riêng họ như được chứng minh bằng bài kiểm tra Trình xác minh CTS, đưa ra xếp hạng 'giả'. Đối với các quốc gia có hệ thống xếp hạng tiêu chuẩn, các nhà sản xuất thiết bị được khuyến khích kết hợp Khung kiểm soát của phụ huynh trong Khung đầu vào TV với bất kỳ cơ chế nào khác mà họ có thể đưa vào.
Nhà cung cấp TV
Mỗi hàng kênh có một trường COLUMN_LOCKED
được sử dụng để khóa các kênh cụ thể xem mà không cần nhập mã PIN. Trường chương trình COLUMN_CONTENT_RATING
nhằm mục đích hiển thị và không được sử dụng để thực thi quyền kiểm soát của phụ huynh.
Trình quản lý đầu vào TV
Trình quản lý đầu vào TV lưu trữ mọi TvContentRating
bị chặn và trả lời isRatingBlocked()
để thông báo xem nội dung có xếp hạng nhất định có nên bị chặn hay không.
Đầu vào TV
Đầu vào TV kiểm tra xem nội dung hiện tại có bị chặn hay không bằng cách gọi isRatingBlocked()
trên Trình quản lý đầu vào TV khi xếp hạng của nội dung hiển thị đã thay đổi (trên chương trình hoặc thay đổi kênh) hoặc cài đặt kiểm soát của phụ huynh đã thay đổi (trên ACTION_BLOCKED_RATINGS_CHANGED
và ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED
) . Nếu nội dung bị chặn, thì Đầu vào TV sẽ tắt âm thanh và video và thông báo cho ứng dụng TV rằng nội dung hiện tại đã bị chặn bằng cách gọi thông báo với nội dung thông notifyContentBlocked(TvContentRating)
. Nếu nội dung không bị chặn, Đầu vào TV sẽ bật âm thanh và video và thông báo cho Ứng dụng TV biết nội dung hiện tại được phép bằng cách gọi thông báo nội dung được phép notifyContentAllowed()
.
Ứng dụng TV
Để tôn trọng các API kiểm soát của phụ huynh và do đó tạo ra một nền tảng tương thích, Ứng dụng TV hệ thống cần cung cấp cách để người dùng quản lý quyền kiểm soát của phụ huynh, bao gồm mọi xếp hạng tùy chỉnh được đăng ký bởi các ứng dụng cụ thể.
Ứng dụng TV hiển thị giao diện người dùng mã PIN khi Đầu vào TV thông báo rằng nội dung hiện tại bị chặn hoặc khi người dùng cố gắng xem một kênh bị chặn.
Ứng dụng TV không lưu trữ trực tiếp cài đặt kiểm soát của phụ huynh. Khi người dùng thay đổi cài đặt kiểm soát của phụ huynh, mọi TvContentRating
bị chặn sẽ được Trình quản lý đầu vào TV lưu trữ và các kênh bị chặn sẽ được Nhà cung cấp TV lưu trữ.
Ứng dụng TV cần khai báo quyền android.permission.MODIFY_PARENTAL_CONTROLS
để thay đổi cài đặt kiểm soát của phụ huynh.
Các nhà sản xuất thiết bị được khuyến khích:
- Thực hiện bài kiểm tra kiểm soát của phụ huynh CTS Verifier đối với ứng dụng Live TV tham chiếu để trình bày các yêu cầu về khả năng tương thích.
- Sử dụng ứng dụng Truyền hình trực tiếp làm tài liệu tham khảo cho Ứng dụng TV của riêng họ: cụ thể là xem nguồn ContentRatingsManager và RatingSystemsFragment và cách chúng xử lý các xếp hạng tùy chỉnh.
HDMI-CEC
HDMI-CEC cho phép một thiết bị điều khiển một thiết bị khác, do đó cho phép một điều khiển từ xa duy nhất để điều khiển nhiều thiết bị trong rạp hát gia đình. Nó được Android TV sử dụng để tăng tốc độ thiết lập và cho phép điều khiển từ xa đối với các Đầu vào TV khác nhau thông qua Ứng dụng TV trung tâm. Ví dụ: nó có thể chuyển đổi đầu vào, tăng hoặc giảm nguồn thiết bị, v.v.
Android TIF triển khai HDMI-CEC làm Dịch vụ điều khiển HDMI để các nhà sản xuất thiết bị chỉ cần phát triển trình điều khiển cấp thấp tương tác với Android TV HAL nhẹ, bỏ qua logic nghiệp vụ phức tạp hơn. Khi cung cấp triển khai tiêu chuẩn, Android tìm cách giảm thiểu các vấn đề tương thích bằng cách giảm triển khai phân mảnh và hỗ trợ tính năng có chọn lọc. Dịch vụ điều khiển HDMI sử dụng các dịch vụ Android hiện có, bao gồm cả đầu vào và nguồn.
Điều này có nghĩa là các triển khai HDMI-CEC hiện có sẽ cần được thiết kế lại để tương thích với Android TIF. Chúng tôi khuyến nghị nền tảng phần cứng chứa bộ vi xử lý để bật nguồn CEC và các lệnh khác.

- CEC bus nhận lệnh từ nguồn hiện đang hoạt động để chuyển sang một nguồn khác.
- Trình điều khiển chuyển lệnh tới HDMI-CEC HAL.
- HAL thông báo cho tất cả
ActiveSourceChangeListeners
. - Dịch vụ điều khiển HDMI được thông báo về sự thay đổi nguồn thông qua
ActiveSourceChangeListener
. - Dịch vụ Trình quản lý đầu vào TV tạo ý định để Ứng dụng TV chuyển đổi nguồn.
- Sau đó, Ứng dụng TV sẽ tạo Phiên quản lý đầu vào TV cho Đầu vào TV đang được chuyển sang và gọi
setMain
trên phiên đó. - Phiên Trình quản lý đầu vào TV chuyển thông tin này đến Đầu vào TV HDMI.
- Đầu vào HDMI TV yêu cầu thiết lập bề mặt dải bên.
- Dịch vụ Trình quản lý đầu vào TV tạo lệnh điều khiển định tuyến tương ứng trở lại Dịch vụ Điều khiển HDMI khi bề mặt được thiết lập.
Nguyên tắc tích hợp TV
Ứng dụng phát sóng
Vì mỗi quốc gia có các yêu cầu cụ thể đối với chương trình phát sóng (MHEG, Teletext, HbbTV, v.v.), các nhà sản xuất dự kiến sẽ cung cấp các giải pháp của riêng họ cho ứng dụng phát sóng, ví dụ:
- MHEG: ngăn xếp gốc
- Teletext: ngăn xếp gốc
- HbbTV: Giải pháp HbbTV từ Vewd Software
Trong bản phát hành Android L, Android TV mong đợi các nhà sản xuất thiết bị sử dụng các nhà tích hợp hệ thống hoặc giải pháp Android cho các ngăn xếp TV trong khu vực, chuyển bề mặt sang ngăn xếp phần mềm TV hoặc chuyển mã khóa cần thiết để tương tác với các ngăn xếp kế thừa.
Đây là cách ứng dụng truyền hình và ứng dụng TV tương tác:
- Ứng dụng TV được lấy nét, nhận tất cả các phím.
- Ứng dụng TV chuyển các phím (ví dụ như nút Màu đỏ) đến Thiết bị đầu vào TV.
- Thiết bị Đầu vào TV tích hợp bên trong với ngăn xếp TV cũ.
- Khi nhận được mã khóa kích hoạt (ví dụ: nút Màu đỏ), Thiết bị đầu vào TV sẽ kích hoạt các ứng dụng phát sóng.
- Ứng dụng phát sóng tập trung vào Ứng dụng TV và xử lý các hành động của người dùng.
Đối với tìm kiếm / đề xuất bằng giọng nói, ứng dụng phát sóng có thể hỗ trợ tìm kiếm trong ứng dụng cho tìm kiếm bằng giọng nói.