Khung đầu vào TV

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

Input Framework (TIF) của Android TV 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 để các 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 tìm cách triển khai các tiêu chuẩn về TV hoặc các yêu cầu theo 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 về chương trình 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 những nhà phát triển ứng dụng bên thứ ba muốn tạo Đầu vào tuỳ chỉnh cho TV.

Thành phần

Việc triển khai Khung đầu vào TV của Android bao gồm một 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 bộ chỉnh tích hợp và bộ chỉnh 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.

TV Input Framework bao gồm:

  • Nhà cung cấp truyền hình (com.android.providers.tv.TvProvider): một 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 truyền hình (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 của TV (android.media.tv.TvInputManager): cho phép các đầu vào của 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 và cổng đầu vào thực hoặc ả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 nguồn đầu vào TV có bộ dò tích hợp
  • MediaCas: một khung để truy cập có điều kiện
  • Trình quản lý tài nguyên bộ dò sóng: 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ò sóng 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 của 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 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ị thay thế bằng ứng dụng bên thứ ba.
  2. Ứng dụng TV hiển thị nội dung nghe nhìn từ đầu vào TV.
  3. Ứng dụng TV không thể giao tiếp trực tiếp với các cổng đầu vào của TV. Trình quản lý đầu vào TV xác định trạng thái của các đầu vào TV cho Ứng dụng TV. Hãy xem phần Trình quản lý đầu vào TV bên dưới để biết thêm thông tin chi tiết về những hạn chế này.

Quyền

  • Chỉ signatureOrSystem TV Inputs và TV App mới có quyền truy cập đầy đủ vào cơ sở dữ liệu TV Provider và có thể nhận KeyEvents.
  • Chỉ các Đầu vào TV hệ thống mới có thể truy cập vào TV Input HAL thông qua dịch vụ Trình quản lý Đầu vào TV. Bạn có thể truy cập vào các nguồn đầu vào của TV theo cách một-một thông qua các phiên của Trình quản lý nguồn đầu vào của TV.
  • Đầu vào truyền hình của bên thứ ba có quyền truy cập bị khoá theo gói vào cơ sở dữ liệu Nhà cung cấp dịch vụ 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. 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ộ chỉnh sóng tích hợp hoặc bộ chỉnh sóng IPTV.
  • 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ụ 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 dịch vụ đó. Quyền này cho phép một ứng dụng Thiết bị đầu vào TV phần cứng 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ể thêm và xoá động 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 dịch vụ 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 dịch vụ truyền hình cũng xuất bản và quản lý các quyền liên quan để TV Inputs chỉ có thể xem các bản ghi của riêng mình. Ví dụ: một Đầu vào truyền hình cụ thể chỉ có thể xem các kênh và chương trình mà đầu vào đó cung cấp và không được phép truy cập vào các kênh và chương trình của bất kỳ Đầu vào truyền hình nào khác.

Nhà cung cấp truyền hình sẽ liên kết "thể loại phát sóng" với "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" bằng 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 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 (nghĩa là "Thể thao"), TV Input sẽ điền vào "thể loại truyền hình" bằng chuỗi "Thể thao" và TV Provider sẽ điền vào trường "thể loại 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ỉ 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 Nhà cung cấp TV.

Các cổng đầu vào TV truyền qua không lưu trữ 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 truyền hình 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 truyền hình 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ộ chỉnh kênh được liên kết và có thể được cung cấp ở vùng đệm giao thức hoặc một dạng khác. Bạn có thể sử dụng trường Có thể tìm kiếm để ẩn một số kênh trong 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 truyền hình hỗ trợ dữ liệu có cấu trúc trong các 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à được truy cập bởi các ứng dụng Đầu vào TV và ứng dụng hệ thống như Ứng dụng TV. 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 cho người dùng thấy, chẳng hạn như tên (COLUMN_DISPLAY_NAME) hoặc số (COLUMN_DISPLAY_NUMBER) của kênh, hoặc tiêu đề của chương trình đang được xem.
  • Siêu dữ liệu: Có 3 trường để xác định nội dung, theo các tiêu chuẩn liên quan, chẳng hạn như mã nhận dạng luồng truyền tải của kênh (COLUMN_TRANSPORT_STREAM_ID), mã nhận dạng mạng ban đầu (COLUMN_ORIGINAL_NETWORK_ID) và mã nhận dạng 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 các Đầ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. Tại đây, một Nguồn đầ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 họ.
  • Cờ: Các trường cờ cho biết liệu một kênh có nên bị hạn chế tìm kiếm, duyệt xem hoặc 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 từ một số kênh có thể là một 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ỉ các ứng dụng hệ thống mới thấy được. Hạn chế các ứ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ỉ các ứng dụng hệ thống mới thấy được. 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à quyền 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. Người dùng không thể truy cập trực tiếp vào các trường; họ chỉ thấy những gì mà Ứng dụng TV, Ứng dụng hệ thống hoặc Nguồn đầu vào của 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 Query, Insert, Update thông qua TvProvider.java. Đầ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, GHI 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 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 tổng thể của Android TV. Dịch vụ này điều phối hoạt động tương tác giữa các ứng dụng và TV Input, đồ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 TV Input Manager theo cách một đối một với TV Input. 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 để ứng dụng có thể:

  • Liệt kê các cổng đầu vào của TV và kiểm tra trạng thái của các cổ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à ứng dụng đã thêm vào cơ sở dữ liệu Nhà cung cấp dịch vụ truyền hình, ngoại trừ Đầu vào TV truyền qua có thể được điều chỉnh bằng cách sử dụng TvContract.buildChannelUriForPassthroughInput(). Bạn cũng có thể đặt âm lượng cho một Đầu vào của TV. Đầu vào TV 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 Nhà cung cấp dịch vụ truyền hình. Quyền truy cập này có thể được dùng để tạo các ứng dụng duyệt xem và tìm kiếm trên tất cả các kênh và chương trình truyền hình hiện có.

Một ứng dụng có thể tạo và đăng ký một TvInputCallback bằng 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 Đầu vào TV được thêm hoặc xoá. 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 đó ở trạng thái đã 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 trừu tượng hoá quá trình 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 mọi Ứng dụng TV.

Đầu vào của TV

Đầu vào của 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 lên từ bên ngoài). Android TV hỗ trợ các ứng dụng hệ thống được cài đặt sẵn, các ứng dụng do nhà sản xuất thiết bị ký và các nguồn đầ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ộ chỉnh sóng tích hợp, chỉ có thể được nhà sản xuất cung cấp vì chúng giao tiếp trực tiếp với phần cứng cơ bản. Những ứng dụng khác, chẳng hạn như IPTV, truyền hình xem lại và STB bên ngoài, có thể được cung cấp bởi các bên thứ ba 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 nguồn đầu vào 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, TV Input 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 TV Provider. Là một Đầu vào TV truyền 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 dịch vụ truyền hình. Để lấy URI dùng để tham chiế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ò sóng tích hợp của Android TV
Hình 4. Đầu vào của bộ chỉnh sóng tích hợp trên Android TV

Trong ví dụ này, Đầu vào TV của bộ chỉnh 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 dịch vụ truyền hình.

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. Thiết bị đầu vào 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ì TV Input đó không thể truy cập trực tiếp vào nguồn cấp dữ liệu video HDMI đang đến, nên TV Input đó phải thông qua TV Input Manager và sử dụng TV Input 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 TV HDMI hiển thị video trên HDMI1. Vì vậy, Nguồn đầu vào TV của STB có thể điều khiển TV trong khi Nguồn đầu vào TV HDMI do nhà sản xuất cung cấp sẽ hiển thị video.

Ví dụ về chế độ Hình trong hình (PiP)

Android TV KeyEvents
Hình 6. Android TV KeyEvents

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ị chế độ hình trong hình (PIP). Những lần 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ã khoá Android và truyền mã đó đến quy trình đầu vào Android tiêu chuẩn. Các hàm InputReaderInputDispatcher hoạt động dưới dạng KeyEvent. Những thao tác này sẽ kích hoạt các sự kiện trên Ứng dụng truyền hình nếu ứng dụng đang được lấy tiêu điểm.

Chỉ các Đầu vào TV 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 InputEvents nào cần sử dụng và nên cho phép Ứng dụng TV xử lý các khoá mà ứng dụng không cần sử dụng.

Ứng dụng TV chịu trách nhiệm xác định Đầu vào TV hệ thống nào đang hoạt động (tức 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() để 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 chế độ xem 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

Hình ảnh này mô tả quy trình của một ứng dụng Nút Đỏ, thường thấy ở 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 phát sóng này. Ví dụ: bạn có thể dùng các ứng dụng phát sóng này để truy cập vào các trang web liên quan hoặc điểm số thể thao.

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

Trong ví dụ này:

  1. Ứng dụng truyền hình đang ở chế độ lấy 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ã khoá kích hoạt (ví dụ: Nút Đỏ), Đầ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à 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

TV Input HAL hỗ trợ việc phát triển TV Input để truy cập vào phần cứng dành riêng cho TV. Giống như các HAL Android khác, TV Input HAL (tv_input) có trong cây nguồn AOSP và nhà cung cấp phát triển quá trình triển khai của HAL này.

Lưu ý: Kể từ Android 14, giao diện HAL đầu vào của 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 (Truyền hình trực tuyến) được cung cấp cùng với nền tảng Android. Ứng dụng này có thể được dùng nguyên trạng, tuỳ 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ó 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 Ứ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 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à định cấu hình

  • Tự động phát hiện cổng vào TV
  • Cho phép các cổng đầu vào của TV 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

Đang xem

  • Truy cập và chuyển đổi giữa 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 chương trình điện tử (EPG)
  • Hỗ trợ nhiều bản âm thanh và phụ đề
  • Cung cấp mã PIN cho 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 truyền hình và chương trì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 cùng với các phiên bản Android mới, trong đó các API TIF của nền tảng được mở rộng. CTS Verifier cung cấp phạm vi 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 các API dành cho nhà phát triển đối với các nguồn đầ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 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 hệ thống có một số trách nhiệm liên quan đến việc hiển thị các đầ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 tuyến tham chiếu cung cấp một cách triển khai tương thích; nếu thay thế Ứng dụng truyền hình hệ thống, 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ị các nguồn đầ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ị. Các API của 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 của họ.

Bạn được phép phân biệt bằng 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 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 mộ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 các kênh vào cơ sở dữ liệu TvProvider. Tuy nhiên, hầu hết các ứng dụng sẽ cung cấp một hoạt động Thiết lập để cho phép người dùng thiết lập các 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 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 thiết bị đầu vào của bên thứ ba phải có số lượng thao tác điều hướng tối thiểu để rời khỏ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 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
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 một TvInput mới được cài đặt, để đư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 thực hiện hành động thông qua thông báo, người dùng có thể chọn thiết lập các nguồn như trong Hình 10.

Hãy xem phần Xác định dịch vụ đầu vào của 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 một giao diện người dùng để ẩn một số kê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 có tính năng này.

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 thiết bị đầu vào bên thứ ba cần tin tưởng 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ả các thiết bị Android TV tương thích.

Các kênh từ nguồn đầu vào của bên thứ ba phải xuất hiện trong EPG của trải nghiệm xem truyền hình trực tiếp tiêu chuẩn trên thiết bị. Bạn có thể sử dụng các danh mục riêng biệt hoặc phân tách trực quan cho các kênh bên thứ ba (xem phần Ứng dụng truyền hình 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 mang lại 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 cách triển khai (xem cách triển khai này cung cấp kết quả từ các nguồn đầ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 nguồn đầ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 truyền hình phải hỗ trợ API tua đi tua lại của khung Android. 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 truyền hình, cho phép người dùng tạm dừng, tiếp tục, tua lại và tua đi quá trình phát.

Đối với các nguồn đầu vào của TV hỗ trợ tính năng ghi hình tạm dừng, Ứng dụng TV cần hiển thị các nút điều khiển chế độ 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 truyền hình phải hỗ trợ API ghi hình trên TV của khung Android để hỗ trợ, liệt kê và phát các chương trình đã ghi hình.

Đ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 vào TIF và giảm đáng kể công sứ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. Điều này 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 phát trực tiếp, Ứng dụng truyền hình cũng xử lý xung đột tài nguyên. Ví dụ: nếu thiết bị có 2 bộ dò sóng, thì thiết bị đó có thể ghi lại 2 chương trình cùng lúc. Nếu người dùng yêu cầu ghi 3 chương trình, thì Ứng dụng truyền hình 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 truyền hình cũng có thể triển khai logic phức tạp hơn, chẳng 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 loạt chương trình khi họ yêu cầu ghi lại một tập hay không.

Hãy xem sơ đồ sau để 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. Ghi hình kỹ thuật số trên Android TV

  1. TV Input Service cho TV App biết có bao nhiêu bộ chỉnh kênh để TV App có thể xử lý xung đột tài nguyên có thể xảy ra.
  2. Ứng dụng truyền hình 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 hình trong cơ sở dữ liệu nội bộ.
  4. Khi đến thời điểm ghi hình, Ứng dụng truyền hình sẽ chuyển một yêu cầu điều chỉnh đến kênh được liên kết với bản ghi.
  5. TV Input Service (Dịch vụ đầu vào của TV) sẽ nhận được yêu cầu này, phản hồi bằng cách cho biết có hay không các tài nguyên phù hợp và điều chỉnh kênh.
  6. Sau đó, Ứng dụng TV sẽ chuyển yêu cầu bắt đầu ghi hình đến Trình quản lý đầu vào TV.
  7. TV Input Service (Dịch vụ đầu vào TV) sẽ nhận được yêu cầu này và bắt đầu ghi hình.
  8. TV Input Service 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ớ trên đám mây.
  9. Khi đến lúc kết thúc quá trình ghi hình, Ứng dụng TV sẽ chuyển yêu cầu dừng ghi hình đến Trình quản lý đầu vào TV.
  10. Sau khi nhận được yêu cầu, TV Input Service sẽ dừng ghi hình và thêm siêu dữ liệu được liên kết vào TV Provider để TV App có thể cho người dùng xem bản ghi hình 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 hình trong dịch vụ Đầu vào TV, hãy xem bài viết Ghi hình trên 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 lại là tài liệu tham khảo chính thức.
  • CTS Verifier 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 thử nghiệm này trên Live TV có thể là một cách hữu ích để xem EPG, tính năng 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 của 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 truyền hình, dịch vụ Trình quản lý thiết bị đầu vào truyền hình, Nhà cung cấp dịch vụ truyền hình và Thiết bị đầu vào truyền hình 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à được CTS Verifier hỗ trợ.

Một số quốc gia đã xác định các hệ thống phân loại mà TV Input có thể sử dụng thông qua TVContentRating API. Ngoài ra, TV Input có thể đăng ký hệ thống phân loại tuỳ chỉnh của riêng mình như minh hoạ trong bài kiểm thử CTS Verifier, trong đó giới thiệu một hệ thống 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, các 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 đều có một trường COLUMN_LOCKED dùng để khoá một số kênh cụ thể để không xem được nếu không 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() để cho biết liệu nội dung có mức phân loại nhất định có nên bị chặn hay không.

Cổng 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 thay đổi chương trình hoặc kênh) hoặc chế độ cài đặt kiểm soát của cha mẹ đã thay đổi (khi 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, TV Input sẽ bật âm thanh và video, đồng thời thông báo cho TV App 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

Để 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 hệ thống cần cung cấp cho người dùng cách quản lý chế độ kiểm soát của cha mẹ, kể cả đối với 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 sẽ hiện giao diện người dùng mã PIN khi được TV Input 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 trực tiếp lưu trữ chế độ cài đặt về quyền kiểm soát của cha mẹ. Khi người dùng thay đổi chế độ cài đặt quyền kiểm soát của cha mẹ, 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 dịch vụ truyền hình lưu trữ.

Ứng dụng TV cần khai báo quyền android.permission.MODIFY_PARENTAL_CONTROLS để thay đổi chế độ cài đặt quyền 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ử chế độ kiểm soát của cha mẹ bằng Trình 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 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 biệt xem nguồn ContentRatingsManager RatingSystemsFragment, cũng như cách các ứng dụng này xử lý các 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, nhờ đó, một điều khiển từ xa có thể điều khiển nhiều thiết bị trong hệ thống rạp hát tại nhà. Android TV sử dụng dịch vụ này để tăng tốc quá trình thiết lập và cho phép điều khiển từ xa nhiều đầu vào của TV thông qua Ứng dụng TV trung tâm. Ví dụ: dịch vụ này có thể chuyển đổi đầu vào, bật hoặc tắt thiết bị, v.v.

TIF Android triển khai HDMI-CEC dưới dạng 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 cách 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 các cách triển khai phân mảnh và hỗ trợ có chọn lọc các tính năng. HDMI Control Service sử dụng các dịch vụ hiện có của Android, bao gồm cả nguồn đầu vào và nguồn.

Điều này có nghĩa là bạn sẽ phải thiết kế lại các chế độ triển khai HDMI-CEC hiện có để tương tác với TIF của Android. Bạn nên dùng nền tảng phần cứng có 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 sẽ 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 thông qua ActiveSourceChangeListener.
  5. Dịch vụ Trình quản lý thiết bị đầ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 của Trình quản lý đầu vào TV sẽ chuyển thông tin này đến Đầu vào HDMI của TV.
  8. Đầu vào TV HDMI yêu cầu đặt bề mặt phụ.
  9. TV Input Manager Service (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 cho HDMI Control Service (Dịch vụ điều khiển HDMI) khi giao diện đượ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 cụ thể về 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 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 của Vewd Software

Trong bản phát hành Android L, Android TV yêu cầu các nhà sản xuất thiết bị sử dụng các đơn vị tích hợp hệ thống hoặc các giải pháp Android cho ngăn xếp TV theo khu vực, chuyển giao giao diện cho ngăn xếp phần mềm TV hoặc chuyển giao mã khoá cần thiết để tương tác với các ngăn xếp cũ.

Sau đây là cách ứng dụng phát sóng và ứng dụng truyền hình tương tác với nhau:

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