Khung đầu vào TV

Biểu tượng HAL của Android TV

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 tới Android TV. Android TIF cung cấp API tiêu chuẩn để nhà sản xuất tạo mô-đun đầu vào nhằm điều khiển Android TV, đồng thời cho phép tìm kiếm và đề xuất truyền hình trực tiếp thông qua siêu dữ liệu do Đầu vào TV xuất bản.

Khung này không nhằm mục đích triển khai các tiêu chuẩn truyền hình hoặc yêu cầu 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ố khu vực hơn mà không cần triển khai 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 muốn tạo Đầu vào TV tùy chỉnh.

Các thành phần

Việc 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 bộ dò IP và tích hợp sẵn. Ứ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 về 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 bộ điều chỉnh vật lý hoặc ảo và cổng đầu vào
  • Đầu vào TV HAL ( mô-đun tv_input ): một định nghĩa phần cứng cho phép Đầu vào TV của hệ thống truy cập vào phần cứng dành riêng cho TV khi được triển khai
  • Parental Control: 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 nhiều thiết bị khác nhau qua HDMI
  • Khung điều chỉnh: khung cho đầu vào TV tích hợp sẵn
  • MediaCas: một khuôn khổ để truy cập có điều kiện
  • Trình quản lý tài nguyên bộ điều chỉnh: 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. Hãy xem sơ đồ sau để có cái nhìn chi tiết về kiến ​​trúc Khung đầu vào của Android TV.

Tổng quan về kiến ​​trúc TIF của Android
Hình 1. Kiến trúc Khung đầu vào Android TV (TIF)

Chảy

Đây là cách kiến ​​trúc được thực hiện:

  1. 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 bên thứ ba.
  2. Ứng dụng TV hiển thị nội dung AV từ Đầu vào TV.
  3. Ứng dụng TV không thể giao tiếp 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ỉ Đầu vào TV signatureOrSystem và Ứng dụng TV mới có quyền truy cập đầy đủ 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 trực tiếp thông 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 theo gói vào cơ sở dữ liệu của Nhà cung cấp TV và chỉ có thể ĐỌC/ghi đối với 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 thông 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, chẳng hạn như bộ dò IPTV hoặc bộ điều chỉnh IPTV tích hợp.
  • Quyền TV_INPUT_HARDWARE đối với ứng dụng Đầu vào TV phần cứng, báo hiệu cho 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 nhằm 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 cho mỗi dịch vụ Đầu vào TV cũng như có thể tự động thêm và xóa Đầu vào TV được hỗ trợ.

Nhà cung cấp truyền hình

Cơ sở dữ liệu 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 vào bất kỳ kênh và chương trình nào của Đầu vào TV khác.

Nhà cung cấp truyền hình ánh xạ "thể loại phát sóng" thành "thể loại chuẩn" trong nội bộ. Đầ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 với thể loại liên quan chính xác từ android.provider.TvContract.Genres . Ví dụ: với tiêu chuẩn phát sóng ATSC A/65 và chương trình có thể loại 0x25 (có nghĩa là “Thể thao”), Đầu vào TV sẽ điền vào “thể loại phát sóng” bằng Chuỗi “Thể thao” và Nhà cung cấp TV sẽ điền vào trường “thể loại chuẩn” bằng giá trị được ánh xạ android.provider.TvContract.Genres.SPORTS .

Xem sơ đồ bên dưới để có cái nhìn chi tiết về Nhà cung cấp TV.

Nhà cung cấp Android TV
Hình 2. Nhà cung cấp Android TV

Chỉ những ứ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 truyề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 kênh và chương trình, cơ sở dữ liệu Nhà cung cấp TV còn 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ộ điều chỉnh liên quan và có thể được cung cấp trong bộ đệm giao thức hoặc dạng 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 có sẵn trong tìm kiếm (chẳng hạn như để đáp ứng các yêu cầu cụ thể của quốc gia 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 ban đầu ( 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 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 trì hoãn cài đặt trên kênh.
    • COLUMN_SEARCHABLE : Việc 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ố khu vực nhất định. COLUMN_SEARCHABLE = 0 có nghĩa là kênh sẽ 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ị duyệt bởi các ứng dụng. COLUMN_BROWSABLE = 0 có nghĩa là kênh không đượ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ế kênh bị xem bởi các tài khoản không hợp lệ nếu không nhập mã PIN. COLUMN_LOCKED = 1 có nghĩa là kênh cần đượ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ị với 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ể được truy cập trực tiếp bởi người dùng; họ chỉ nhìn thấy bề mặt của Ứng dụng TV, ứng dụng Hệ thống hoặc Đầu vào TV.

  • Mỗi hàng có PACKAGE_NAME , gói (ứng dụng) sở hữu hàng đó, được kiểm tra trên Query, Insert, Update qua TvProvider.java. Đầu vào TV chỉ có thể truy cập thông tin được ghi và được tách biệt khỏi thông tin do các Đầu vào TV khác cung cấp.
  • Quyền ĐỌC, VIẾT thông qua AndroidManifest.xml (cần có sự đồng ý của người dùng) để xác định các kênh có sẵn.
  • Chỉ các ứng dụng signatureOrSystem mới có thể có được quyền ACCESS_ALL_EPG_DATA để truy cập 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 đầu vào 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, đồng thời cung cấp chức năng kiểm soát của phụ huynh. Các phiên Trình quản lý đầu vào TV phải được tạo riêng lẻ với Đầu vào TV. Trình quản lý đầu vào TV cho phép truy cập vào Đầu vào TV đã cài đặt để ứ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, Ứng dụng TV chỉ có thể điều chỉnh Đầu vào TV theo các URI mà nó đã thêm vào cơ sở dữ liệu Nhà cung cấp TV, ngoại trừ Đầu vào TV chuyển tiếp có thể được điều chỉnh để sử dụng TvContract.buildChannelUriForPassthroughInput() . Đầu vào TV cũng có thể được đặt âm lượng. Đầu vào TV được nhà sản xuất thiết bị (ứng dụng chữ ký) cung cấp và 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 Nhà cung cấp TV. Quyền truy cập này có thể được sử dụng để xây dựng các ứng dụng nhằm duyệt và tìm kiếm trên tất cả các kênh và chương trình TV có sẵn.

Ứng dụng có thể tạo và đăng ký TvInputCallback với android.media.tv.TvInputManager để gọi lại khi trạng thái của Đầu vào TV thay đổi 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 Đầu vào TV bị ngắt kết nối bằng cách hiển thị nó là bị ngắt kết nối và ngăn việc lựa chọn 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ả Đầu vào TV của bên thứ ba hoạt động trên tất cả Ứng dụng TV.

Đầu vào TV

Đầu vào TV là các ứng dụng Android theo nghĩa là chúng có AndroidManifest.xml và được cài đặt (thông qua Play, cài đặt sẵn hoặc tải sẵn). Android TV hỗ trợ các ứng dụng hệ thống được cài đặt sẵn, các ứng dụng được 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, chẳng hạn như đầu vào HDMI hoặc đầu vào bộ dò tích hợp, chỉ có thể được nhà sản xuất cung cấp khi họ giao tiếp trực tiếp với phần cứng cơ bản. 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 cá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, bạn có thể chọn đầu vào mới trong Ứng dụng TV.

Ví dụ về đầu vào truyền qua

Đầu vào hệ thống Android TV
Hình 3. Đầu vào hệ thống Android TV

Trong ví dụ này, Đầu vào TV do nhà sản xuất thiết bị cung cấp là đáng tin cậy và có toàn quyền truy cập vào Nhà cung cấp TV. Là Đầ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 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 để tiếp cận Đầu vào TV HDMI.

Ví dụ về bộ điều chỉnh tích hợp

Đầu vào bộ điều chỉnh tích hợp trên Android TV
Hình 4. Đầu vào bộ điều chỉnh tích hợp trên Android TV

Trong ví dụ này, Đầu vào TV bắt sóng tích hợp do nhà sản xuất thiết bị cung cấp là đáng 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

Đầu vào của bên thứ ba trên Android TV
Hình 5. Đầu vào của bên thứ ba trên Android TV

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 dữ liệu video HDMI đi vào nên nó phải thông 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ể giao tiếp 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 sẽ hiển thị video.

Ví dụ về ảnh trong ảnh (PIP)

Sự kiện chính của Android TV
Hình 6. Sự kiện chính của Android TV

Sơ đồ trên cho thấy cách các nút trên điều khiển từ xa được chuyển đến Đầ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 giải thích 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ã quét phần cứng thành mã khóa Android và chuyển chúng sang đường dẫn đầu vào tiêu chuẩn của Android có chức năng InputReaderInputDispatcher như KeyEvents . Những sự kiện 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 chú ý.

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ó sự cho phép của hệ thống RECEIVE_INPUT_EVENT . Đầu vào TV có trách nhiệm xác định những sự kiện đầu vào nào sẽ được 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 Hệ thống đầu vào TV nào đang hoạt động, nghĩa là do người dùng chọn, đồng thời phân biệt KeyEvents đến và định tuyến chúng đến phiên Trình quản lý đầu vào TV chính xác, gọi dispatchInputEvent() để chuyển sự kiện tới Đầu vào TV liên quan .

Ví dụ đầu vào MHEG-5

Sơ đồ sau đây hiển thị chế độ xem chi tiết hơn về cách định tuyến KeyEvents thông qua Android TIF.

Ví dụ về nút màu đỏ của Android TV
Hình 7. Ví dụ về nút màu đỏ của Android TV

Nó mô tả quy trình 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ọ. Một ứng dụng có thể được phân phối qua luồng truyền tải 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 hoặc tỷ số thể thao có liên quan.

Xem phần Ứng dụng phát sóng để 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:

  1. Ứng dụng TV đang được lấy nét và nhận được tất cả các khóa.
  2. KeyEvents (ví dụ: nút Màu đỏ) được chuyển đến Đầu vào TV đang hoạt động dưới dạng InputEvents.
  3. Đầ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 .
  4. Khi nhận được mã khóa kích hoạt (ví dụ: Nút màu đỏ), Đầu vào TV sẽ kích hoạt ứng dụng phát sóng.
  5. Đầu vào TV sử dụng KeyEvents dưới dạng InputEvents 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. Giống như các HAL Android khác, HAL đầu vào TV ( tv_input ) có sẵn trong cây nguồn AOSP và nhà cung cấp sẽ phát triển việc triển khai nó.

Lưu ý : Bắt đầu từ Android 14, giao diện HAL đầu vào TV được xác định bằng AIDL .

Ứng dụng truyền hình

Ứ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 (Live TV) đượ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 mã nguồn mở Android và bạn có thể bắt đầu với mã nguồ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 âm thanh và phụ đề
  • Cung cấp thử thách mã PIN kiểm soát của phụ huynh
  • Cho phép lớp phủ UI đầu vào TV cho 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ợ 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 phù hợp với các phiên bản Android mới nơi API TIF nền tảng được mở rộng. CTS Verifier cung cấp phạm vi kiểm tra khả năng tương thích.

Hỗ trợ đầu vào TV của bên thứ ba

Android TV cung cấp API dành cho 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 phân phối các kênh phần mềm vào trải nghiệm truyền hình trực tiếp. Để đảm bảo 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 khảo cung cấp cách triển khai tương thích; nếu thay thế Ứng dụng TV của hệ thống, nhà sản xuất thiết bị phải đảm bảo ứng dụng của riêng họ cung cấp khả năng tương thích tương tự, nhằm đá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 của 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 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ài đặt) trong trải nghiệm TV tiêu chuẩn của họ.

Cho phép phân biệt trực quan giữa các kênh tích hợp và kênh của bên thứ ba, như được xác định trong phần Ứng dụng TV của CDD Android.

Các phần sau đây cho biết ứng dụng Live TV đáp ứng các yêu cầu của CDD như thế nào.

Thiết lập kênh mới

Việc bổ sung đầ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ừ 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 khỏi Ứ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.

Đi tới Cài đặt
Hình 8. Đi tới Cài đặt .

Đi tới nguồn Kênh trong Cài đặt
Hình 9. Đi tới Nguồn kênh trong Cài đặt.

Chọn nguồn của bạn từ danh sách.
Hình 10. Chọn nguồn của bạn từ danh sách.

Thêm kênh từ nguồn của bạn
Hình 11. Thêm kênh từ nguồn của bạn.

Ngoài ra, thẻ thông báo sẽ 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:

Thông báo hiển thị các nguồn kênh mới có sẵn.
Hình 12. Thông báo hiển thị các nguồn kênh mới có sẵn.

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 nguồn của mình 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

Nhà sản xuất thiết bị có thể cung cấp giao diện người dùng để ẩn một số 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 cơ sở này.

Mở danh sách kênh trong Cài đặt.
Hình 13. Mở danh sách kênh trong Cài đặt .

Tùy chỉnh danh sách kênh của bạn.
Hình 14. Tùy chỉnh danh sách kênh của bạn.

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 thông thường, 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ị dưới dạng 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 tính năng phân tách trực quan hoặc danh mục riêng cho các kênh của bên thứ ba (xem phần Ứng dụng TV của CDD Android) —điều quan trọng là người dùng có thể tìm thấy các kênh họ đã cài đặt.

Các nhà sản xuất phải triển khai Ứng dụng TV để bao gồm 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. Truyền hình trực tiếp cung cấp cách triển khai (xem phần này cung cấp kết quả từ đầ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ư đầu vào tích hợp.

Dịch chuyển 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 của khung Android. Ngoài ra, nhà sản xuất phải triển khai các biện pháp kiểm soát 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à chuyển tiếp nhanh quá trình phát lại.

Đối với Đầ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.

Điều khiển phát lại
Hình 15. Điều khiển phát lại

đầu ghi hình

Đố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 của 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 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ắ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ộ dò sóng, 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 yêu cầu, Ứng dụng TV phải xử lý xung đột và sẽ 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 những 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 loạt phim 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 có thể có trong Android TV.

Quay video kỹ thuật số trên Android TV
Hình 16. Quay video kỹ thuật số trên Android TV

  1. Dịch vụ đầu vào TV cho Ứng dụng TV biết có bao nhiêu bộ dò sóng để Ứng dụng TV có thể xử lý xung đột tài nguyên có thể xảy ra.
  2. Ứng dụng TV nhận được yêu cầu do người dùng thực hiện để ghi lại chương trình TV.
  3. Ứng dụng TV lưu trữ lịch ghi trong cơ sở dữ liệu nội bộ của nó.
  4. 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.
  5. 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 và điều chỉnh kênh hay không.
  6. Sau đó, Ứng dụng TV sẽ chuyển yêu cầu bắt đầu ghi tới Trình quản lý đầu vào TV.
  7. Dịch vụ đầu vào TV nhận được yêu cầu này và bắt đầu ghi.
  8. 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.
  9. Khi đến lúc kết thúc quá trình ghi, Ứng dụng TV sẽ chuyển yêu cầu dừng ghi tới Trình quản lý đầu vào TV.
  10. Sau khi Dịch vụ đầu vào TV nhận được yêu cầu, Dịch vụ này sẽ dừng 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 các 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 Android và các API dành cho nhà phát triển được ghi lại là tài liệu tham khảo chính xác.
  • CTS Verifier thực hiện các API như một phần của chương trình kiểm tra khả năng tương thích. Chạy tính năng này trên Live TV 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ẹ

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 CTS Verifier bảo vệ.

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 mình như được minh họa bằng thử nghiệm của Trình xác minh CTS, đưa ra xếp hạng 'giả'. Đối với những quốc gia có hệ thống xếp hạng tiêu chuẩn, nhà sản xuất thiết bị được khuyến khích kết hợp Kiểm soát của cha mẹ 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 truyền hình

Mỗi hàng kênh có 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 được dùng để 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à phản hồ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ó nên 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 (khi thay đổi chương trình hoặc kênh) hoặc cài đặt kiểm soát của phụ huynh đã thay đổi (trên ACTION_BLOCKED_RATINGS_CHANGEDACTION_PARENTAL_CONTROLS_ENABLED_CHANGED ) . Nếu nội dung cần bị chặn, Đầu vào TV sẽ tắt âm thanh và video, đồng thời 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 notifyContentBlocked(TvContentRating) . Nếu nội dung không bị chặn, Đầu vào TV sẽ bật âm thanh và video, đồng thời thông báo cho Ứng dụng TV rằng nội dung hiện tại được cho phép bằng cách gọi notifyContentAllowed() .

Ứng dụng truyền hình

Để tôn trọng các API kiểm soát của phụ huynh và từ đó 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 kiểm tra quyền kiểm soát của phụ huynh của CTS Verifier đối với ứng dụng Live TV tham chiếu để minh họa các yêu cầu về khả năng tương thích.
  • Sử dụng ứng dụng Live TV 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 ContentRatingsManagerRatingSystemsFragment cũng như cách họ xử lý xếp hạng tùy chỉnh.

HDMI-CEC

HDMI-CEC cho phép một thiết bị điều khiển 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 tại 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 nhiều Đầu vào TV khác nhau thông qua Ứng dụng TV trung tâm. Chẳng hạn, nó có thể chuyển đổi đầu vào, bật hoặc tắt 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 kinh doanh phức tạp hơn. Khi cung cấp cách 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 việc triển khai phân mảnh và hỗ trợ tính năng 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à việc triển khai HDMI-CEC hiện tại sẽ cần được thiết kế lại để tương thích với Android TIF. Chúng tôi khuyên bạn nên sử dụng nền tảng phần cứng có bộ vi xử lý để nhận nguồn CEC và các lệnh khác.

Tích hợp CEC trên Android TV
Hình 17. Tích hợp CEC trên Android TV

  1. Bus CEC nhận lệnh từ nguồn hiện đang hoạt động để chuyển sang nguồn khác.
  2. Trình điều khiển chuyển lệnh tới HDMI-CEC HAL.
  3. HAL thông báo cho tất cả ActiveSourceChangeListeners .
  4. Dịch vụ điều khiển HDMI được thông báo về sự thay đổi nguồn thông qua ActiveSourceChangeListener .
  5. Dịch vụ Trình quản lý đầu vào TV tạo ra ý định để Ứng dụng TV chuyển đổi nguồn.
  6. Sau đó, Ứng dụng TV sẽ tạo Phiên quản lý đầu vào TV cho Đầu vào TV được chuyển sang và gọi setMain trên phiên đó.
  7. Phiên Trình quản lý đầu vào TV chuyển thông tin này tới Đầu vào TV HDMI.
  8. Đầu vào TV HDMI yêu cầu thiết lập bề mặt dải bên.
  9. Dịch vụ 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 đặt.

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 dành riêng cho chương trình phát sóng (MHEG, Teletext, HbbTV, v.v.), nên các nhà sản xuất phải cung cấp giải pháp riêng của 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 muốn các nhà sản xuất thiết bị sử dụng bộ 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 giao diện cho các 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 cũ.

Dưới đây là cách ứng dụng phát sóng và Ứng dụng TV tương tác:

  1. Ứng dụng TV đang tập trung, nhận tất cả các khóa.
  2. Ứng dụng TV chuyển các phím (ví dụ: Nút màu đỏ) tới thiết bị Đầu vào TV.
  3. Thiết bị đầu vào TV tích hợp nội bộ với ngăn xếp TV cũ.
  4. 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.
  5. Ứng dụng phát sóng sẽ 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 truyền phát có thể hỗ trợ tìm kiếm trong ứng dụng cho tìm kiếm bằng giọng nói.