Tùy chỉnh ứng dụng TV tham chiếu

Live TV là một ứng dụng truyền hình tham khảo được thiết kế cho các thiết bị truyền hình Android. Tuy nhiên, nhà sản xuất thiết bị có thể muốn thêm nhiều chức năng dành riêng cho sản phẩm, những chức năng này không được triển khai mặc định của Live TV, chẳng hạn như điều chỉnh hình ảnh, chế độ trò chơi hoặc chế độ 3D. Để hỗ trợ các chức năng hoặc tùy chọn dành riêng cho thiết bị này, Live TV hỗ trợ các tùy chỉnh sau:

  • Bật chế độ dịch chuyển thời gian, cho phép người dùng tạm dừng, tua đi và tua lại. Định cấu hình chế độ dịch chuyển thời gian để sử dụng bộ nhớ ngoài thay vì bộ nhớ trong.
  • Thêm tùy chọn vào hàng tùy chọn TV.
  • Thêm một hàng tùy chỉnh và thêm các tùy chọn trong đó.

Lưu ý : Kênh trực tiếp là triển khai Truyền hình trực tiếp của Google có thể được sử dụng như trên các thiết bị có dịch vụ của Google. Để tùy chỉnh Kênh trực tiếp, hãy thay thế com.android.tv.* bằng com.google.android.tv.* trong các hướng dẫn này.

Tùy chỉnh truyền hình trực tiếp

Để tùy chỉnh Live TV, thiết bị Android TV mục tiêu cần cài đặt gói tùy chỉnh. Gói tùy chỉnh này phải là ứng dụng hệ thống dựng sẵn có quyền com.android.tv.permission.CUSTOMIZE_TV_APP .

Truyền hình trực tiếp tìm kiếm gói hệ thống có quyền này, kiểm tra tệp tài nguyên và phát hiện các Hoạt động của gói được đánh dấu bằng các danh mục cụ thể để xử lý tùy chỉnh.

Điểm mấu chốt : Chỉ một gói có thể tùy chỉnh Live TV.

Định cấu hình chế độ dịch chuyển thời gian

Tính năng dịch chuyển thời gian (trickplay) cho phép các thiết bị tivi Android tạm dừng, tua lại và tua đi nhanh kênh phát lại. Trong quá trình triển khai Live TV, tính năng dịch chuyển thời gian có thể được sử dụng thông qua giao diện người dùng Play control . Tính năng dịch chuyển thời gian được bật theo mặc định trong Live TV nhưng có thể bị tắt. Tính năng dịch chuyển thời gian cũng có thể được cấu hình để chỉ sử dụng bộ nhớ ngoài.

Để định cấu hình tính năng dịch chuyển thời gian, hãy thêm tài nguyên chuỗi trickplay_mode và đặt giá trị của nó thành một trong các tùy chọn sau:

  • enabled : Bật dịch chuyển thời gian. Đây là giá trị mặc định khi không có tùy chọn nào được đưa ra.
  • disabled : Vô hiệu hóa dịch chuyển thời gian.
  • use_external_storage_only : Định cấu hình dịch chuyển thời gian để sử dụng bộ nhớ ngoài.
<string name="trickplay_mode">use_external_storage_only</string>
Giao diện người dùng điều khiển phát được kích hoạt sau khi nhấn nút giữa D-pad.

Hình 1 . Giao diện người dùng điều khiển phát được kích hoạt sau khi nhấn nút giữa D-pad.

Tùy chỉnh tùy chọn TV

Nhà sản xuất thiết bị có thể thêm tùy chọn tùy chỉnh cho cài đặt Live TV vào menu tùy chọn TV hiện có, chẳng hạn như thêm lối tắt vào cài đặt Hình ảnh âm thanh.

Để chỉ ra một tùy chọn tùy chỉnh, hãy khai báo một bộ lọc ý định để lọc danh mục com.android.tv.category.OPTIONS_ROW trong một hoạt động. Tính năng tùy chỉnh được nhà sản xuất thiết bị triển khai trong hoạt động. Hoạt động sẽ khởi chạy nếu tùy chọn được nhấp vào. Tiêu đề và biểu tượng của hoạt động được sử dụng cho tùy chọn. Các tùy chọn TV được tùy chỉnh phải phù hợp với giao diện người dùng hiện có để mang lại trải nghiệm tốt nhất cho người dùng.

Lưu ý : Một hoạt động chỉ có thể xử lý một tùy chọn vì Live TV không thể phân biệt các bộ lọc ý định trong một hoạt động có cùng danh mục do giới hạn của Android. Xem Xử lý nhiều tùy chọn trong một hoạt động để biết cách giải quyết.

Nhà sản xuất thiết bị cũng có thể đặt tùy chọn tùy chỉnh trước hoặc sau các tùy chọn hiện có bằng cách xác định android:priority trong AndroidManifest.xml . Tùy chọn có giá trị ưu tiên được xác định thấp hơn 100 hiển thị trước các mục hiện có và giá trị cao hơn 100 hiển thị sau. Nhiều tùy chọn tùy chỉnh (trước hoặc sau các tùy chọn hiện có) được sắp xếp theo mức độ ưu tiên theo thứ tự tăng dần. Nếu các tùy chọn có cùng mức độ ưu tiên, thứ tự giữa chúng sẽ không được xác định.

Trong ví dụ này, tùy chọn xuất hiện đầu tiên trong hàng tùy chọn TV và PictureSettingsActivity sẽ khởi chạy nếu tùy chọn được nhấp vào.

<activity android:name=".PictureSettingsActivity"
    android:label="@string/activity_label_picture_settings"
          android:theme="@style/Theme.Panel">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_brightness"
        android:label="@string/option_label_brightness"
        android:priority="0">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.OPTIONS_ROW" />
    </intent-filter>
</activity>

Hàng tùy chọn TV tùy chỉnh mẫu

Hình 2 . Hàng tùy chọn TV tùy chỉnh mẫu (Độ sáng và Tiết kiệm năng lượng).

Mẫu tùy chọn TV tùy chỉnh.

Hình 3 . Mẫu tùy chọn TV tùy chỉnh.

Xử lý nhiều tùy chọn trong một hoạt động

Một tùy chọn ánh xạ tới bộ lọc ý định của hoạt động và ngược lại. Vì Android không phân biệt các bộ lọc ý định có cùng danh mục và hành động nên một hoạt động chỉ xử lý một tùy chọn, ngay cả khi nhiều bộ lọc ý định được khai báo trong đó. Để xử lý nhiều tùy chọn trong một hoạt động, hãy sử dụng <activity-alias> trong AndroidManifest.xml . Trong hoạt động này, hãy sử dụng getIntent().getComponent() để xác định tùy chọn được nhấp.

<activity-alias android:name=".AnyUniqueName"
    android:targetActivity=".PictureSettingsActivity">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_energy_saving"
        android:label="@string/option_label_energy_saving"
        android:priority="1">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.OPTIONS_ROW" />
    </intent-filter>
</activity-alias>

Tạo một hàng tùy chỉnh

Nhà sản xuất thiết bị có thể thêm và tùy chỉnh một hàng phía trên hàng tùy chọn TV. Hàng tùy chỉnh này là tùy chọn.

Tiêu đề hàng

Xác định chuỗi partner_row_title trong res/values/strings.xml . Giá trị của chuỗi được sử dụng cho tiêu đề hàng tùy chỉnh.

<string name="partner_row_title">Partner Row</string>

Tùy chọn tùy chỉnh

Để thêm tùy chọn tùy chỉnh vào hàng tùy chỉnh, hãy làm theo quy trình thêm tùy chọn vào menu tùy chọn TV nhưng thay vào đó hãy thay đổi tên danh mục thành com.android.tv.category.PARTNER_ROW .

<activity android:name=".ThreeDimensionalSettingDialogActivity"
    android:label="@string/activity_label_3d"
    android:theme="@android:style/Theme.Material.Light.Dialog">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_3d"
        android:priority="0">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.PARTNER_ROW" />
    </intent-filter>
</activity>

Hàng tùy chỉnh tùy chọn mẫu.

Hinh 4 . Hàng tùy chỉnh tùy chọn mẫu.

Hộp thoại tùy chọn tùy chỉnh mẫu.

Hình 5 . Hộp thoại tùy chọn tùy chỉnh mẫu.