Khung đầu vào TV

Biểu tượng Android TV HAL

Khung đầu vào Android TV (TIF) đơn giản hoá việc phân phối nội dung phát trực tiếp đến Android TV. Android TIF cung cấp một API chuẩn để nhà sản xuất tạo các mô-đun đầu vào nhằm kiểm soát Android TV, đồng thời cho phép tìm kiếm và đề xuất nội dung truyền hình trực tiếp thông qua siêu dữ liệu do TV Input phát hành.

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 theo khu vực, nhưng giúp 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ố theo khu vực 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 tuỳ chỉnh.

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 bên thứ ba, để truy cập vào các kênh tích hợp và bộ dò tín hiệu 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 truyền hình (com.android.providers.tv.TvProvider): cơ sở dữ liệu về các kênh, chương trình và quyền liên quan
  • Ứng dụng TV (com.android.tv.TvActivity): ứng dụng xử lý hoạt động 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ộ dò sóng thực hoặc ảo và cổng đầu vào
  • HAL đầu vào TV (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
  • Chế độ kiểm soát của cha mẹ: 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ị qua HDMI
  • Khung bộ dò: một khung cho đầu vào TV tích hợp bộ dò
  • MediaCas: một khung truy cập có điều kiện
  • Trình quản lý tài nguyên bộ dò: 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ộ dò tích hợp

Các thành phần này được trình bày chi tiết ở bên dưới. Hãy xem sơ đồ sau đây để biết thông tin chi tiết về cấu trúc Khung đầu vào Android TV.

Tổng quan về cấu trúc TIF của Android
Hình 1. Cấu trúc Khung đầu vào Android TV (TIF)

Flow

Sau đây là cách thực hiện cấu trúc:

  1. Người dùng sẽ thấy và tương tác với Ứng dụng TV, một ứng dụng hệ thống không thể bị ứng dụng bên thứ ba thay thế.
  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. Hãy xem Trình quản lý đầu vào TV bên dưới để biết thêm thông tin chi tiết về các giới hạn này.

Quyền

  • Chỉ signatureOrSystem Đầu vào TV 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 KeyEvent.
  • Chỉ Đầu vào TV của hệ thống mới có thể truy cập vào HAL Đầu vào TV thông qua dịch vụ Trình quản lý đầu vào TV. Bạn có thể truy cập vào Đầu vào TV theo kiểu một với một thông qua các phiên của Trình quản lý đầu vào TV.
  • Đầu vào truyền hình của bên thứ ba có quyền truy cập theo gói vào cơ sở dữ liệu của Nhà cung cấp truyền hình và chỉ có thể ĐỌC/GHI vào 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 truyền qua của nhà sản xuất thiết bị, chẳng hạn như HDMI1. Các thiết bị này 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ò tín hiệu IPTV hoặc tích hợp sẵn.
  • Quyền TV_INPUT_HARDWARE cho ứng dụng Đầu vào TV phần cứng, báo hiệu cho Dịch vụ 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ụ quản lý đầu vào TV và thêm Đầu vào TV. Quyền này cho phép ứng dụng Thiết bị đầu vào TV hỗ trợ nhiều Thiết bị đầu vào TV cho mỗi dịch vụ Thiết bị đầu vào TV, cũng như có thể linh động thêm và xoá các Thiết bị đầu vào TV được hỗ trợ.

Nhà cung cấp TV

Cơ sở dữ liệu Nhà cung cấp truyền hình lưu trữ các kênh và chương trình từ Đầu vào truyền hình. Nhà cung cấp TV cũng phát hành và quản lý các quyền liên quan để Đầu vào TV chỉ có thể xem bản ghi của riêng mình. Ví dụ: một Đầu vào TV cụ thể chỉ có thể xem các kênh và chương trình mà đầu vào đó cung cấp và bị cấm truy cập vào các kênh và chương trình của bất kỳ Đầu vào TV nào khác.

Nhà cung cấp nội dung truyền hình liên kết "thể loại chương trình truyền hình" với "thể loại chuẩn" trong nội bộ. Đầu vào TV chịu trách nhiệm điền giá trị trong tiêu chuẩn truyền hình cơ bản vào "thể loại chương trình truyền hình" và trường "thể loại chuẩn" sẽ tự động được điền bằng thể loại liên kết chính xác từ android.provider.TvContract.Genres. Ví dụ: với tiêu chuẩn truyền hình 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 "loại chương trình truyền hình" bằng Chuỗi "Thể thao" và Nhà cung cấp TV sẽ điền trường "loại chương trình chuẩn" bằng giá trị được liên kết android.provider.TvContract.Genres.SPORTS.

Hãy xem sơ đồ bên dưới để biết thông tin chi tiết về Nhà cung cấp truyền hình.

Nhà cung cấp Android TV
Hình 2. Nhà cung cấp Android 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 truyền hình chuyển tiếp 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 của Nhà cung cấp TV cũng cung cấp một 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 tuỳ ý. Dữ liệu BLOB đó có thể bao gồm thông tin tuỳ chỉnh, chẳng hạn như tần số của bộ thu sóng được liên kết và có thể được cung cấp trong vùng đệm giao thức hoặc một dạng khác. Bạn có thể sử dụng trường Tìm kiếm được để ẩn một số kênh khỏi kết quả tìm kiếm (chẳng hạn như để đáp ứng các yêu cầu cụ thể theo quốc gia về việc bảo vệ nội dung).

Ví dụ về trường cơ sở dữ liệu

Nhà cung cấp nội dung truyền hình 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 sẵn và truy cập bằng TV Inputs và các ứng dụng hệ thống như TV App. Các bảng này có 4 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 hoặc số của kênh (COLUMN_DISPLAY_NAME) hoặc tiêu đề của chương trình đang xem.COLUMN_DISPLAY_NUMBER
  • Siêu dữ liệu: Có 3 trường để xác định nội dung, theo các tiêu chuẩn có liên quan, chẳng hạn như mã luồng truyền tải của kênh (COLUMN_TRANSPORT_STREAM_ID), mã mạng ban đầu (COLUMN_ORIGINAL_NETWORK_ID) và mã dịch vụ (COLUMN_SERVICE_ID).
  • Dữ liệu nội bộ: Các trường dùng để sử dụng tuỳ chỉnh Đầu vào TV.
    Một số trường, chẳng hạn như COLUMN_INTERNAL_PROVIDER_DATA, là các trường BLOB có thể tuỳ chỉnh, trong đó Đầu vào TV có thể lưu trữ siêu dữ liệu tuỳ ý về kênh hoặc chương trình của chúng.
  • Cờ: Trường cờ cho biết liệu một kênh có bị hạn chế tìm kiếm, duyệt xem hay xem hay không. Bạn chỉ có thể đặt chế độ này ở cấp kênh. Tất cả chương trình đều tuân theo chế độ cài đặt trên kênh.
    • COLUMN_SEARCHABLE: Việc hạn chế tìm kiếm trên một số kênh có thể là yêu cầu ở một số khu vực. COLUMN_SEARCHABLE = 0 nghĩa là kênh không được xuất hiện trong kết quả tìm kiếm.
    • COLUMN_BROWSABLE: Chỉ hiển thị cho các ứng dụng hệ thống. Hạn chế ứng dụng duyệt xem kênh. 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ị cho các ứng dụng hệ thống. Hạn chế 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ằng chế độ kiểm soát của cha mẹ.

Để xem 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 quyền truy cập

Tất cả các trường đều hiển thị với những người có quyền truy cập vào hàng tương ứng. Người dùng không thể truy cập trực tiếp vào trường nào; họ chỉ thấy nội dung hiển thị 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 Truy vấn, Chèn, Cập nhật thông qua TvProvider.java. Một Đầu vào TV chỉ có thể truy cập vào thông tin mà đầu vào đó đã ghi và được tách biệt vớ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 (yêu cầu người dùng đồng ý) để xác định các kênh có sẵn.
  • Chỉ các ứng dụng signatureOrSystem mới có thể thu nạp quyền ACCESS_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 một API hệ thống trung tâm cho Khung đầu vào Android TV tổng thể. Lớp này dàn xếp hoạt động 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 cha mẹ. Bạn phải tạo các phiên Trình quản lý đầu vào TV một với một 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 để các ứng dụng có thể:

  • Liệt kê các đầu vào của TV và kiểm tra trạng thái của các đầu vào đó
  • Tạo phiên và quản lý trình 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à ứng dụng đã thêm vào cơ sở dữ liệu của Nhà cung cấp TV, ngoại trừ Đầu vào TV truyề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 truyền hình do nhà sản xuất thiết bị cung cấp và ký (ứ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 truyền hình. Quyền truy cập này có thể được dùng để tạo ứng dụng duyệt xem và tìm kiếm trên tất cả các kênh truyền hình và chương trình có sẵn.

Ứng dụng có thể tạo và đăng ký TvInputCallback với android.media.tv.TvInputManager để được gọi lại khi trạng thái của Đầu vào TV thay đổi hoặc khi thêm hoặc xoá Đầu vào TV. Ví dụ: Ứng dụng TV có thể phản ứng khi một Đầu vào TV bị ngắt kết nối bằng cách hiển thị đầu vào đó là đã ngắt kết nối và ngăn người dùng chọn đầu vào đó.

Trình quản lý đầu vào TV tóm tắt quá trình giao tiếp giữa Ứng dụng TV và Đầu vào TV. Giao diện 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

TV Inputs là các ứng dụng Android vì chúng có AndroidManifest.xml và được cài đặt (thông qua Play, cài đặt sẵn hoặc cài đặt không qua cửa hàng). 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, chẳng hạn như đầu vào HDMI hoặc đầu vào bộ dò tín hiệu tích hợp, chỉ có thể do nhà sản xuất cung cấp vì các đầu vào này giao tiếp trực tiếp với phần cứng cơ bản. Các dịch vụ khác, chẳng hạn như IPTV, chuyển đổi địa điểm và STB bên ngoài, có thể do bên thứ ba cung cấp dưới dạng tệp 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 phương thức nhập mới trong Ứng dụng TV.

Ví dụ về dữ liệu đầ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 truyền hình chuyển tiếp, đầu vào này không đăng ký bất kỳ kênh hoặc chương trình nào với Nhà cung cấp truyền hình. Để lấy URI dùng để tham chiếu dữ liệu đầu vào truyề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 để truy cập vào Đầu vào TV HDMI.

Ví dụ về bộ dò tín hiệu tích hợp

Đầu vào bộ dò tích hợp của Android TV
Hình 4. Đầu vào bộ thu tích hợp của Android TV

Trong ví dụ này, Đầu vào TV của bộ thu 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ụ về dữ liệu đầ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. Phương thức nhập của bên thứ ba trên Android TV

Trong ví dụ này, Đầu vào TV STB bên ngoài do bên thứ ba cung cấp. Vì Đầu vào TV đó không thể trực tiếp truy cập vào nguồn cấp dữ liệu video HDMI, nên đầu vào này 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ể giao tiếp với Đầu vào TV HDMI và yêu cầu đầu vào này hiển thị video trên HDMI1. Do đó, Đầ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ề chế độ Hình trong hình (PIP)

Sự kiện nhấn phím trên Android TV
Hình 6. KeyEvents Android TV

Sơ đồ trên cho thấy cách các nút trên điều khiển từ xa được truyền đến một Đầu vào TV cụ thể để hiển thị hình trong hình (PIP). Các thao tác nhấn nút đó được trình điều khiển phần cứng do nhà sản xuất thiết bị cung cấp diễn giải, chuyển đổi mã quét phần cứng thành mã phím Android và truyền các mã đó đến quy trình đầu vào Android tiêu chuẩn InputReader và các hàm InputDispatcher dưới dạng KeyEvents. Các sự kiện này sẽ kích hoạt các sự kiện trên Ứng dụng TV nếu ứng dụng này đang ở tiêu điểm.

Chỉ các Đầu vào TV của hệ thống mới đủ điều kiện nhận InputEvents và chỉ khi có quyền hệ thống RECEIVE_INPUT_EVENT. TV Input có trách nhiệm xác định InputEvents nào sẽ được sử dụng và cho phép Ứng dụng TV xử lý các phím không cần sử dụng.

Ứng dụng TV chịu trách nhiệm biết đầu vào TV hệ thống nào đang hoạt động, nghĩa là do người dùng chọn, đồng thời phân biệt KeyEvents sắp tới 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() để truyền sự kiện đến Đầu vào TV được liên kết.

Ví dụ về dữ liệu đầu vào MHEG-5

Sơ đồ sau đây cho thấy thông tin chi tiết hơn về cách KeyEvents được định tuyến thông qua TIF Android.

Ví dụ về nút Đỏ trên Android TV
Hình 7. Ví dụ về nút Đỏ trên Android TV

Biểu đồ này mô tả quy trình của một ứng dụng Nút đỏ, phổ biến ở Châu Âu để cho phép người dùng truy cập vào các ứng dụng tương tác trên TV. Ứng dụng có thể được phân phối qua luồng truyền tải này. Khi người dùng nhấp vào nút này, họ có thể tương tác với các ứng dụng truyền tin này. Ví dụ: bạn có thể sử dụng các ứng dụng truyền hình này để truy cập vào các trang web hoặc tỷ số thể thao có liên quan.

Hãy xem phần Ứng dụng truyền tin để tìm hiểu cách ứng dụng truyền tin tương tác với Ứng dụng TV.

Trong ví dụ này:

  1. Ứng dụng TV đang ở tiêu điểm và nhận tất cả các phím.
  2. KeyEvents (ví dụ: nút Đỏ) được truyề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ã phím kích hoạt (ví dụ: nút Đỏ), TV Input sẽ kích hoạt ứng dụng truyền tin.
  5. Đầu vào TV sử dụng KeyEvents dưới dạng InputEvents và ứng dụng truyền tin là tiêu điểm và xử lý InputEvents cho đến khi bị loại bỏ.

Lưu ý: Các đầu vào TV của bên thứ ba không bao giờ nhận được khoá.

HAL đầu vào TV

HAL đầu vào TV hỗ trợ phát triển Đầu vào TV để truy cập vào 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 cách triển khai HAL này.

Lưu ý: Kể 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 của hệ thống hiển thị nội dung truyền hình trực tiếp cho người dùng. Một Ứng dụng truyền hình tham chiếu (Truyền hình trực tuyến) được cung cấp cùng với nền tảng Android. Nhà sản xuất thiết bị có thể sử dụng ứng dụng này theo nguyên trạng, tuỳ chỉnh, mở rộng hoặc thay thế. Mã nguồn có trong Dự án nguồn mở Android và bạn có thể bắt đầu sử dụng mã nguồn này trong bài viết Tham khảo ứng dụng TV.

Nhà sản xuất thiết bị có thể mở rộng Ứng dụng TV để 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 thuộc phạm vi của TIF hoặc Ứng dụng TV tham chiếu.

Tối thiểu, Ứng dụng TV của hệ thống cần xử lý các nhiệm vụ sau:

Thiết lập và định cấu hình

  • Tự động phát hiện đầu vào TV
  • Cho phép TV Inputs bắt đầu thiết lập kênh
  • Kiểm soát chế độ cài đặt của cha mẹ
  • 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 vào thanh thông tin chương trình truyền hình
  • 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 của chế độ kiểm soát của cha mẹ
  • 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 sẵ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ợ các API ghi hình trên TV

Bộ tính năng này sẽ tăng lên theo các phiên bản Android mới, trong đó các API TIF của nền tảng được mở rộng. Công cụ xác minh CTS cung cấp mức độ bao phủ kiểm thử 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 các thiết bị đầu vào truyền hình của bên thứ ba, cho phép các ứng dụng đã cài đặt phân phối kênh phần mềm vào trải nghiệm truyền hình trực tiếp. Để đảm bảo việc triển khai thiết bị Android tương thích, Ứng dụng TV của 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 Truyền hình trực tiếp tham chiếu cung cấp phương thức 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ự để đáp ứng kỳ vọng của nhà phát triển trên tất cả thiết bị Android TV.

Ứng dụng TV của hệ thống phải hiển thị các đầ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ị. API dành cho nhà phát triển hứa hẹn rằng 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 xem TV tiêu chuẩn.

Bạn được phép phân biệt hình ảnh giữa các kênh tích hợp và kênh 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 cách ứng dụng Truyền hình trực tiếp đáp ứng các yêu cầu của CDD.

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

Việc thêm đầ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 sẽ tự động thêm các kênh vào cơ sở dữ liệu TvProvider. Tuy nhiên, hầu hết sẽ cung cấp một hoạt động Thiết lập để cho phép người dùng thiết lập kênh, cung cấp thông tin đăng nhập và thực hiện các thao tác khác. Ứng dụng TV của 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 CDD yêu cầu các hoạt động đầu vào của bên thứ ba là các thao tác điều hướng tối thiểu ngoài Ứng dụng TV chính.

Ứng dụng Truyền hình trực tiếp tham chiếu cung cấp trình đơn Nguồn kênh để truy cập vào các đầu vào.

Chuyển đến phần Cài đặt
Hình 8. Chuyển đến phần Cài đặt.

Chuyển đến phần Nguồn kênh trong phần Cài đặt
Hình 9. Chuyển đến phần Nguồn kênh trong phần Cài đặt.

Chọn nguồn của bạn trong danh sách.
Hình 10. Chọn nguồn của bạn trong 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, một thẻ thông báo sẽ xuất hiện ở đầu trình đơn Ứng dụng TV sau khi cài đặt một TvInput mới để đưa người dùng trực tiếp đến phần Thiết lập:

Thông báo cho biết có nguồn kênh mới.
Hình 12. Thông báo cho biết có nguồn kênh mới.

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 như trong Hình 10.

Hãy xem phần Xác định Dịch vụ đầu vào TV để biết những kỳ vọng của nhà phát triển trong lĩnh vực này.

Tuỳ 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ọ. Tính năng này có trong gói Truyền hình trực tiếp.

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

Tuỳ chỉnh danh sách kênh.
Hình 14. Tuỳ chỉnh danh sách kênh.

EPG

Nhà phát triển phương thức nhập của bên thứ ba cần tin tưởng rằng người dùng có thể dễ dàng chuyển đến kênh của họ trong quá trình sử dụng thông thường trên tất cả thiết bị TV Android tương thích.

Các kênh từ nguồn đầu vào của bên thứ ba phải được trình bày trong EPG của trải nghiệm truyền hình trực tiếp tiêu chuẩn trên thiết bị. Bạn có thể sử dụng tính năng phân tách hình ảnh hoặc các danh mục riêng biệt cho các kênh bên thứ ba (xem phần Ứng dụng TV trong CDD của Android) — điều quan trọng là người dùng có thể tìm thấy các kênh mà họ đã cài đặt.

Nhà sản xuất phải triển khai Ứng dụng TV để đưa kết quả tìm kiếm cho các yêu cầu tìm kiếm trên toàn cầu vào nhằm đảm bảo trải nghiệm tốt nhất cho người dùng. Truyền hình trực tiếp cung cấp một phương thức triển khai (xem phương thức này cung cấp kết quả từ dữ liệu đầ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ư dữ liệu đầu vào tích hợp.

Chuyển đổi 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ợ khung Android API chuyển giờ. Ngoài ra, nhà sản xuất phải triển khai các chế độ điều khiển phát 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 nhanh quá trình phát.

Đối với các Đầu vào TV hỗ trợ tính năng tua lại, Ứng dụng TV cần hiển thị các chế độ điều khiển phát.

Bộ điều khiển chế độ phát
Hình 15. Bộ điều khiển chế độ phát

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 hình 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 nhà sản xuất thiết bị cắm các hệ thống con DVR vào TIF và giảm đáng kể nỗ lực tích hợp cần thiết để bật hoặc tích hợp chức năng DVR trên thiết bị TV. API này cũng cho phép các bên thứ ba cung cấp hệ thống DVR sau thị trường 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ũng xử lý xung đột tài nguyên. Ví dụ: nếu thiết bị có hai bộ thu, thì thiết bị có thể ghi lại hai chương trình cùng một lúc. Nếu người dùng yêu cầu ghi lại 3 chương trình, thì Ứng dụng TV phải xử lý xung đột và 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 của một bộ phim khi họ yêu cầu ghi lại một tập hay không.

Hãy xem sơ đồ sau đây để biết cách triển khai DVR có thể có trong Android TV.

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

  1. Dịch vụ đầu vào TV cho ứng dụng TV biết số lượng bộ thu sóng có sẵn để ứ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 khởi tạo để ghi lại một chương trình truyền hình.
  3. Ứng dụng TV lưu trữ lịch ghi trong cơ sở dữ liệu nội bộ.
  4. Khi đến thời điểm ghi hình, Ứng dụng TV sẽ chuyển yêu cầu điều chỉnh sang kênh liên kết với bản ghi hình.
  5. Dịch vụ đầu vào TV nhận được yêu cầu này, phản hồi về việc có tài nguyên phù hợp hay không và điều chỉnh sang kênh.
  6. Sau đó, Ứng dụng TV sẽ chuyển yêu cầu bắt đầu ghi vào Trình quản lý đầu vào TV.
  7. Dịch vụ đầu vào TV sẽ nhận được yêu cầu này và bắt đầu ghi lại.
  8. Dịch vụ đầu vào TV lưu trữ dữ liệu video thực tế trong bộ nhớ của dịch vụ. Bộ nhớ này có thể là bộ nhớ ngoài hoặc bộ nhớ trên đá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 đến Trình quản lý đầu vào TV.
  10. Sau khi nhận được yêu cầu, Dịch vụ đầu vào TV 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 các tính năng Ghi trong dịch vụ Đầu vào TV, 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 dành cho nhà phát triển được ghi nhận là tài liệu tham khảo chính thức.
  • Trình xác minh CTS thực thi các API trong chương trình kiểm thử khả năng tương thích. Việc chạy quy trình này trên Live TV có thể là một cách hữu ích để xem EPG, Tìm kiếm, Chế độ kiểm soát của cha mẹ và các yêu cầu khác trong bối cảnh đầu vào của bên thứ ba.
  • Hãy xem phần Xác định Dịch vụ đầu vào TV để biết những kỳ vọng của nhà phát triển trong lĩnh vực này.

Chế độ kiểm soát của cha mẹ

Chế độ kiểm soát của cha mẹ 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 có thể bỏ qua chế độ chặn bằng cách nhập mã PIN.

Ứng dụng TV, dịch vụ Trình quản lý đầu vào TV, Nhà cung cấp TV và Thiết bị đầu vào TV cùng chịu trách nhiệm về chức năng kiểm soát của cha mẹ.

Chế độ kiểm soát của cha mẹ là bắt buộc và thuộc phạm vi kiểm tra của Công cụ xác minh CTS.

Một số quốc gia đã xác định hệ thống phân loại mà TV Inputs có thể sử dụng thông qua TVContentRating API. Ngoài ra, Đầu vào TV có thể đăng ký hệ thống phân loại tuỳ chỉnh của riêng mình như được minh hoạ trong quy trình kiểm thử của Trình xác minh CTS, trong đó giới thiệu một mức phân loại "giả". Đối với những quốc gia có hệ thống phân loại tiêu chuẩn, nhà sản xuất thiết bị nên kết hợp Chế độ kiểm soát của cha mẹ trong Khung đầu vào TV với mọi cơ chế khác mà họ có thể đưa vào.

Nhà cung cấp dịch vụ truyền hình

Mỗi hàng kênh có một trường COLUMN_LOCKED dùng để khoá một số kênh cụ thể để người dùng không xem được mà không cần nhập mã PIN. Trường chương trình COLUMN_CONTENT_RATING dùng để hiển thị và không dùng để thực thi chế độ kiểm soát của cha mẹ.

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() để tư vấn xem có nên chặn nội dung có mức phân loại nhất định hay không.

Đầu vào TV

TV Input sẽ 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 TV Input Manager khi mức phân loại của nội dung hiển thị thay đổi (khi chương trình hoặc kênh thay đổi) hoặc chế độ cài đặt kiểm soát của cha mẹ thay đổi (trên ACTION_BLOCKED_RATINGS_CHANGEDACTION_PARENTAL_CONTROLS_ENABLED_CHANGED). Nếu nội dung bị chặn, TV Input 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, thì Đầ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 phép bằng cách gọi notifyContentAllowed().

Ứng dụng truyền hình

Để tuân thủ các API kiểm soát của cha mẹ và do đó tạo ra một nền tảng tương thích, Ứng dụng TV của hệ thống cần cung cấp cách để người dùng quản lý chế độ kiểm soát của cha mẹ, bao gồm cả mọi mức phân loại tuỳ chỉnh do các ứng dụng cụ thể đăng ký.

Ứng dụng TV hiển thị giao diện người dùng mã PIN khi nhận được thông báo từ TV Input 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 trực tiếp lưu trữ chế độ cài đặt kiểm soát của cha mẹ. Khi người dùng thay đổi chế độ cài đặt kiểm soát của cha mẹ, Trình quản lý đầu vào TV sẽ lưu trữ mọi TvContentRating bị chặn và Nhà cung cấp TV sẽ lưu trữ các kênh bị chặn.

Ứng dụng TV cần khai báo quyền android.permission.MODIFY_PARENTAL_CONTROLS để thay đổi chế độ cài đặt kiểm soát của cha mẹ.

Nhà sản xuất thiết bị nên:

  • Thực hiện kiểm thử tính năng kiểm soát của cha mẹ bằng Công cụ xác minh CTS đối với ứng dụng TV trực tuyến tham chiếu để minh hoạ 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 RatingSystemsFragment cũng như cách xử lý điểm xếp hạng tuỳ chỉnh.

HDMI-CEC

HDMI-CEC cho phép một thiết bị điều khiển thiết bị khác, nhờ đó, một điều khiển từ xa có thể điều khiển nhiều thiết bị trong một rạp hát tại nhà. Android TV sử dụng tính năng này để tăng tốc độ thiết lập và cho phép điều khiển từ xa nhiều Đầu vào TV thông qua Ứng dụng TV trung tâm. Ví dụ: tính năng này 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 HAL Android TV gọn nhẹ, bỏ qua logic nghiệp vụ phức tạp hơn. Khi cung cấp một phương thức triển khai tiêu chuẩn, Android tìm cách giảm thiểu các vấn đề về khả năng tương thích bằng cách giảm thiểu việc 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ả nguồn đầu vào và nguồn.

Điều này có nghĩa là các phương thức triển khai HDMI-CEC hiện có sẽ cần được thiết kế lại để tương tác với TIF Android. Bạn nên dùng nền tảng phần cứng có chứa một bộ vi xử lý để nhận lệnh bật 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 đang hoạt động để chuyển sang một nguồn khác.
  2. Trình điều khiển sẽ chuyển lệnh đến HAL HDMI-CEC.
  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ề thay đổi nguồn qua ActiveSourceChangeListener.
  5. Dịch vụ Trình quản lý đầu vào TV tạo một ý định để Ứng dụng TV chuyển đổi nguồn.
  6. Sau đó, Ứng dụng TV sẽ tạo một Phiên Trình 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 đó.
  7. Phiên Trình quản lý đầu vào TV sẽ chuyển thông tin này đến Đầu vào TV HDMI.
  8. Đầu vào TV HDMI yêu cầu đặt nền tảng băng tần bên.
  9. Dịch vụ Trình quản lý đầu vào TV sẽ tạo một lệnh điều khiển định tuyến tương ứng trở lại Dịch vụ điều khiển HDMI khi đặt giao diện.

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 riêng về truyền hình (MHEG, Teletext, HbbTV, v.v.), nên nhà sản xuất dự kiến sẽ cung cấp giải pháp riêng cho ứng dụng truyền hình, ví dụ:

  • MHEG: ngăn xếp gốc
  • Teletext: ngăn xếp gốc
  • HbbTV: Giải pháp HbbTV của Vewd Software

Trong bản phát hành Android L, Android TV dự kiến các nhà sản xuất thiết bị sẽ sử dụng trình tích hợp hệ thống hoặc giải pháp Android cho các ngăn xếp TV theo khu vực, truyền giao diện đến ngăn xếp phần mềm TV hoặc truyền mã khoá 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 truyền hình và Ứng dụng TV tương tác với nhau:

  1. Ứng dụng TV đang ở tiêu điểm, nhận tất cả các phím.
  2. Ứng dụng TV truyền các phím (ví dụ: nút Đỏ) đến 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ã phím kích hoạt (ví dụ: nút Đỏ), thiết bị Đầu vào TV sẽ kích hoạt các ứng dụng truyền tin.
  5. Ứng dụng truyền tin sẽ lấy tiêu điểm trong Ứng dụng TV và xử lý các thao tác của người dùng.

Đối với tính năng tìm kiếm/đề xuất bằng giọng nói, ứng dụng phát sóng có thể hỗ trợ tính năng Tìm kiếm trong ứng dụng cho tính năng tìm kiếm bằng giọng nói.