Khung đầu vào TV

Biểu tượng Android TV HAL

Khung đầu vào Android TV (TIF) giúp đơn giản hoá việc phân phối nội dung phát trực tiếp đến Android TV. TIF của Android cung cấp một API tiêu chuẩn cho nhà sản xuất để tạo các mô-đun đầu vào để điều khiển Android TV, đồng thời cho phép tính năng tìm kiếm và đề xuất trên truyền hình trực tuyến thông qua siêu dữ liệu do Đầu vào trên TV 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 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 truyền hình thực hoặc ảo và cổng đầu vào
  • HAL đầu vào TV (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
  • 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 cho quyền 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 tích hợp sẵn

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

Dưới đây là cách thực thi 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ể trò 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. 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 truyền hình 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. 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 chúng 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 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. 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 dịch vụ truyền hình ánh xạ "thể loại phát sóng" thành "thể loại chuẩn" trong nội bộ. Các đầu vào của TV chịu trách nhiệm điền giá trị trong tiêu chuẩn chương trình phát sóng cơ bản vào "thể loại phát sóng" và trường "thể loại chính tắc" sẽ tự động được điền sẵn thể loại nội dung được liên kết 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 Trì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 các kênh và chương trình, cơ sở dữ liệu Nhà cung cấp TV còn 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ể 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ộ dò đượ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ể dùng trường Có thể tìm kiếm để một số kênh không xuất hiện trong kết quả tìm kiếm (chẳng hạn như để đáp ứng các yêu cầu cụ thể của từng 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ành cho mục đích sử dụng tuỳ chỉnh của Đầ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 tuỳ chọn 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 có 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ị với 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 các trường nào; họ chỉ thấy những gì 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 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ể có 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ê đầu vào TV và kiểm tra trạng thái của chúng
  • 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 TV do nhà sản xuất thiết bị (ứng dụng chữ ký) hoặc các ứng dụng khác cài đặt trong phân vùng hệ thống cung cấp và ký 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 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 Đầu vào TV bị ngắt kết nối bằng cách hiển thị Đầu vào TV ở trạng thái đã ngắt kết nối và ngăn việc lựa chọn.

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 sẽ đá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ích hợp

Đầu vào bộ dò tích hợp 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 STB TV bên ngoài do bên thứ ba cung cấp. 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, 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 nào đang hoạt động (nghĩa là người dùng chọn) và phân biệt KeyEvents đến, đồng thời định tuyến chúng đến đúng phiên Trình quản lý đầu vào TV, 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. Một ứ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 phát sóng 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 ý: Đầ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 truyền hình của hệ thống trình bày nội dung truyền hình trực tuyến cho người dùng. Một Ứng dụng TV 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 này có trong Dự án nguồn mở Android và bạn có thể bắt đầu sử dụng mã này trong bài viết Ứng dụng TV tham chiếu.

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 dành cho cha mẹ
  • Chỉnh sửa kênh

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 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ụ đề
  • Thử thách cung cấp mã PIN 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ợ API dịch chuyển thời gian
  • Xử lý chức năng DVR và hỗ trợ các API ghi hình 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 TV 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 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 hiển thị đầu vào và kênh 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ó thể phân biệt hình ảnh giữa các kênh tích hợp sẵn và kênh của bên thứ ba, như xác định trong phần Ứng dụng truyền hình 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 của 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 TvInput mới để đưa người dùng trực tiếp đến phần Thiết lập:

Đã có thông báo cho biết cá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 bài viết Xác định dịch vụ đầu vào TV để biết kỳ vọng của nhà phát triển trong phần 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 dữ liệu bên thứ ba cần phải tự tin rằng người dùng có thể dễ dàng chuyển đến các 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 của Android CDD) – đ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 người dùng tốt nhất. 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.

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ợ khung Android API chuyển đổi thời gian. 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 phát 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ố trên 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 hoàn tất 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

  • Android CDD và các API dành cho nhà phát triển được ghi trong tài liệu là những tài liệu tham khảo chính thức.
  • Công cụ 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 điều chỉnh của Người 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ư minh hoạ trong quy trình kiểm thử bằng Công cụ 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á 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 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

Đầu vào TV 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 Trình quản lý đầu vào TV khi mức phân loại của nội dung hiển thị đã thay đổi (khi chương trình hoặc thay đổi kênh) hoặc chế độ cài đặt chế độ 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, Đầ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, 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 chứa mã PIN khi được một Đầ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 truyền hình không lưu trữ trực tiếp các chế độ 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ẹ.

Các 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.
  • Dùng ứng dụng Truyền hình trực tuyến làm tài liệu tham khảo cho Ứng dụng truyền hình của riêng họ: cụ thể là hãy xem nguồn ContentSinceManager RatingSystemsFragment, cũng như cách chúng xử lý mức phân loại tuỳ chỉnh.

HDMI-CEC

HDMI-CEC cho phép một thiết bị điều khiển thiết bị khác, từ đó 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 chiếu phim 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 phương thức nhập của TV thông qua Ứng dụng TV trung tâm. Ví dụ: tính năng này có thể chuyển đổi phương thức nhập, 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 được lấy làm tiêu điểm và 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 Màu đỏ), 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 đề xuất/tìm kiếm bằng giọng nói, ứng dụng truyền phát 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.