Làm quen với ứng dụng dành cho TV

Ứng dụng truyền hình sử dụng cấu trúc giống như ứng dụng cho điện thoại và máy tính bảng. Điểm tương đồng này có nghĩa là bạn có thể sửa đổi các ứng dụng hiện có để cũng chạy trên thiết bị TV hoặc tạo các ứng dụng mới dựa trên những gì bạn đã biết về cách tạo ứng dụng cho Android.

Lưu ý quan trọng: Ứng dụng của bạn phải đáp ứng một số yêu cầu cụ thể thì mới đủ điều kiện trở thành ứng dụng dành cho Android TV trên Google Play. Để biết thêm thông tin, hãy xem các yêu cầu nêu trong bài viết Chất lượng của ứng dụng dành cho TV.

Hướng dẫn này mô tả cách chuẩn bị môi trường phát triển để tạo ứng dụng dành cho TV cũng như những thay đổi tối thiểu cần thiết để có thể chạy một ứng dụng trên thiết bị TV.

Để biết thông tin về cách thiết kế ứng dụng dành cho TV, hãy xem bài viết Thiết kế cho TV. Ngoài ra, hãy xem các ứng dụng mẫu trong Kho lưu trữ GitHub cho Android TV.

Xác định khả năng hỗ trợ định dạng nội dung đa phương tiện

Xem tài liệu sau đây để biết thông tin về các bộ mã hoá và giải mã, giao thức và định dạng mà Android TV hỗ trợ:

Thiết lập dự án truyền hình

Phần này thảo luận cách thiết lập dự án TV, cho dù bạn muốn sửa đổi một ứng dụng Android hiện có để chạy trên thiết bị TV hay tạo một ứng dụng mới dành cho TV. Nếu bạn đã có ứng dụng Android, thì việc thêm tính năng hỗ trợ Android TV cho phép bạn thiết kế giao diện người dùng cho TV trong khi sử dụng lại cấu trúc ứng dụng hiện có.

Có hai thành phần chính bạn sử dụng khi tạo một ứng dụng chạy trên thiết bị TV:

  • Hoạt động dành cho TV: Trong tệp kê khai ứng dụng, hãy khai báo một hoạt động dự định chạy trên các thiết bị TV.
  • Thư viện TV: (Không bắt buộc) Thêm một hoặc nhiều thư viện androidx dành cho thiết bị TV (được liệt kê trong một phần khác của hướng dẫn này). Các thư viện này cung cấp các tiện ích để xây dựng giao diện người dùng.

Điều kiện tiên quyết

Trước khi bắt đầu tạo ứng dụng dành cho TV, bạn phải thực hiện các bước sau:

  • Cập nhật Bộ công cụ SDK lên phiên bản 24.0.0 trở lên.
    Bộ công cụ SDK được cập nhật cho phép bạn tạo và thử nghiệm ứng dụng dành cho TV.
  • Cập nhật SDK lên Android 5.0 (API 21) trở lên.
    Phiên bản nền tảng mới cập nhật cung cấp các API mới cho ứng dụng dành cho TV.
  • Tạo hoặc cập nhật dự án ứng dụng.
    Để truy cập các API mới cho thiết bị TV, hãy tạo một dự án hoặc sửa đổi dự án hiện có nhắm đến Android 5.0 (API cấp 21) trở lên.

Khai báo hoạt động trên TV

Ứng dụng dự định chạy trên thiết bị TV phải khai báo hoạt động của trình chạy cho TV trong tệp kê khai. Sử dụng bộ lọc ý định CATEGORY_LEANBACK_LAUNCHER để làm việc này. Bộ lọc này xác định ứng dụng của bạn đã được bật cho TV và cho phép Google Play xác định ứng dụng đó là một ứng dụng dành cho TV. Khi người dùng chọn ứng dụng của bạn trên màn hình chính của TV, ý định này sẽ xác định hoạt động nào cần chạy.

Đoạn mã sau đây cho biết cách thêm bộ lọc ý định này vào tệp kê khai:

<application
  android:banner="@drawable/banner" >
  ...
  <activity
    android:name="com.example.android.MainActivity"
    android:label="@string/app_name" >

    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
  </activity>

  <activity
    android:name="com.example.android.TvActivity"
    android:label="@string/app_name"
    android:theme="@style/Theme.Leanback">

    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
    </intent-filter>

  </activity>
</application>

Mục kê khai hoạt động thứ hai trong ví dụ này chỉ định rằng đó là hoạt động cần chạy trên một thiết bị TV.

Thận trọng: Nếu bạn không đưa bộ lọc ý định CATEGORY_LEANBACK_LAUNCHER vào ứng dụng, thì người dùng chạy Google Play trên các thiết bị TV sẽ không thấy bộ lọc này. Ngoài ra, nếu ứng dụng của bạn không có bộ lọc này khi bạn dùng các công cụ cho nhà phát triển để tải ứng dụng lên thiết bị TV, thì ứng dụng sẽ không xuất hiện trong giao diện người dùng TV.

Giao diện người dùng của ứng dụng dành cho TV hoặc phần trên TV của ứng dụng hiện tại phải cung cấp một giao diện đơn giản để dễ dàng thao tác bằng điều khiển từ xa cách xa 3 mét (10 feet). Nếu bạn đang sửa đổi một ứng dụng hiện có để dùng trên TV, đừng sử dụng cùng một bố cục hoạt động cho TV mà bạn sử dụng cho điện thoại và máy tính bảng. Để biết hướng dẫn về cách thiết kế ứng dụng dành cho TV, hãy xem nội dung Thiết kế cho TV. Để biết thêm thông tin về các yêu cầu triển khai tối thiểu đối với bố cục giao diện trên TV, hãy xem nội dung Tạo bố cục TV.

Khai báo tính năng hỗ trợ thiết bị TV

Khai báo rằng ứng dụng của bạn được tạo cho Android TV bằng cách khai báo tính năng android.software.leanback.

Nếu ứng dụng của bạn chạy trên cả thiết bị di động và TV, hãy đặt giá trị thuộc tính required thành false. Nếu bạn đặt giá trị thuộc tính required thành true, thì Google Play sẽ chỉ cung cấp ứng dụng của bạn trên hệ điều hành Android TV.

<manifest>
    <uses-feature android:name="android.software.leanback"
        android:required="false" />
    ...
</manifest>

Không bắt buộc phải khai báo màn hình cảm ứng

Các ứng dụng được dự định chạy trên thiết bị TV không dựa vào màn hình cảm ứng để nhập. Để làm rõ điều này, tệp kê khai của ứng dụng truyền hình phải khai báo rằng tính năng android.hardware.touchscreen là không bắt buộc. Chế độ cài đặt này xác định rằng ứng dụng của bạn có thể hoạt động trên thiết bị TV và ứng dụng của bạn phải được coi là ứng dụng dành cho TV trong Google Play. Ví dụ về mã sau đây cho thấy cách thêm nội dung khai báo tệp kê khai này:

<manifest>
    <uses-feature android:name="android.hardware.touchscreen"
              android:required="false" />
    ...
</manifest>

Thận trọng: Trong tệp kê khai ứng dụng, bạn phải khai báo rằng không cần có màn hình cảm ứng, như minh hoạ trong mã ví dụ dưới đây. Nếu không, ứng dụng của bạn sẽ không xuất hiện trong Google Play trên các thiết bị TV.

Cung cấp biểu tượng và biểu ngữ trên màn hình chính

Ứng dụng Android TV phải cung cấp cả biểu tượng trên màn hình chính và ảnh biểu ngữ cho từng nội dung bản địa hoá. Tuỳ thuộc vào thiết bị Android TV, biểu tượng hoặc biểu ngữ sẽ được dùng làm điểm khởi chạy ứng dụng và xuất hiện trên màn hình chính trong các hàng ứng dụng và trò chơi.

Để thêm các tính năng này vào ứng dụng của bạn, hãy mô tả biểu tượng và biểu ngữ trong tệp kê khai như sau:

<application
    ...
    android:icon="@mipmap/ic_launcher"
    android:banner="@drawable/banner" >
    ...
</application>

Biểu tượng màn hình chính

Các ứng dụng Android TV, giống như tất cả ứng dụng Android, phải cung cấp biểu tượng trên màn hình chính. Để biết các phương pháp hay nhất về cách xác định điểm khởi chạy tuyệt vời cho ứng dụng của bạn cũng như các yêu cầu chi tiết về tài sản, hãy xem Nguyên tắc về biểu ngữ và biểu tượng ứng dụng Android TV.

Sử dụng thuộc tính android:banner cùng với thẻ <application> để cung cấp biểu ngữ mặc định cho mọi hoạt động của ứng dụng hoặc cùng với thẻ <activity> để cung cấp biểu ngữ cho một hoạt động cụ thể.

Đối với biểu ngữ, hãy sử dụng tài nguyên xhdpi có kích thước 320 x 180 px. Phải có văn bản trong hình ảnh. Nếu ứng dụng của bạn hỗ trợ nhiều ngôn ngữ, bạn phải cung cấp các phiên bản riêng biệt của biểu ngữ kèm theo văn bản cho từng ngôn ngữ được hỗ trợ.

Thay đổi màu trình chạy

Thận trọng: Trong Android 12 trở lên, các ảnh động trên màn hình chờ tuỳ chỉnh được tạo bằng API nền tảng SplashScreen không được hỗ trợ cho các ứng dụng Android TV.

Khi một ứng dụng TV khởi chạy, hệ thống sẽ hiển thị một ảnh động giống như một vòng tròn mở rộng và được tô màu nền. Để tuỳ chỉnh màu của ảnh động này, hãy đặt thuộc tính android:colorPrimary của ứng dụng hoặc hoạt động trên TV thành một màu cụ thể. Ngoài ra, hãy đặt hai thuộc tính chồng chéo chuyển đổi thành true như minh hoạ trong đoạn mã sau từ tệp XML của tài nguyên giao diện:

<resources>
    <style ... >
      <item name="android:colorPrimary">@color/primary</item>
      <item name="android:windowAllowReturnTransitionOverlap">true</item>
      <item name="android:windowAllowEnterTransitionOverlap">true</item>
    </style>
</resources>

Để biết thêm thông tin về cách xử lý các giao diện và kiểu, hãy xem phần Kiểu và giao diện.

Tạo ứng dụng cho hệ điều hành Android TV

Jetpack bao gồm các thư viện gói androidx để sử dụng với các ứng dụng TV.

Compose cho TV

Bạn nên dùng Compose để tạo ứng dụng cho hệ điều hành Android TV. Bên cạnh các thư viện Compose chính, thư viện Compose dành cho TV cung cấp các thành phần chuyên dụng được thiết kế riêng cho màn hình lớn:

Khám phá cách tạo ứng dụng TV bằng Compose cho TV trong bài viết Sử dụng Jetpack Compose trên Android TV.

Bộ công cụ Leanback UI

Bộ công cụ Leanback UI cung cấp các API và tiện ích giao diện người dùng cho thiết bị TV:

Khám phá cách tạo ứng dụng dành cho TV bằng bộ công cụ giao diện người dùng Leanback trong bài viết Tạo ứng dụng phát trên TV.

Chạy ứng dụng dành cho TV

Chạy ứng dụng là một phần quan trọng trong quá trình phát triển. Bạn có thể chạy ứng dụng trên các thiết bị TV được định cấu hình để hỗ trợ gỡ lỗi qua USB hoặc sử dụng các thiết bị TV ảo.

Chạy trên thiết bị thực

Thiết lập thiết bị TV như sau:

  1. Sử dụng cáp USB để kết nối thiết bị TV với máy phát triển. Nếu cần, hãy tham khảo tài liệu do nhà sản xuất thiết bị cung cấp.
  2. Trên thiết bị TV, hãy chuyển đến phần Cài đặt.
  3. Trong hàng Thiết bị, hãy chọn Giới thiệu.
  4. Chuyển đến phần Build (Tạo) rồi chọn Build (Tạo) nhiều lần cho đến khi bạn nhận được thông báo "Bạn đã là nhà phát triển!"
  5. Quay lại Cài đặt. Trong hàng Preferences (Lựa chọn ưu tiên), hãy chọn Developer options (Tuỳ chọn cho nhà phát triển).
  6. Chọn Debugging > USB debugging (Gỡ lỗi > Gỡ lỗi qua USB) rồi chọn On (Bật).
  7. Quay lại màn hình chính của TV.

Cách kiểm thử ứng dụng trên thiết bị TV:

  1. Trong Android Studio, hãy chọn dự án của bạn rồi nhấp vào biểu tượng Chạy trên thanh công cụ.
  2. Trong cửa sổ Select Deployment Target (Chọn đối tượng triển khai), hãy chọn thiết bị TV của bạn rồi nhấp vào OK.

Chạy trên thiết bị ảo

Trình quản lý thiết bị ảo Android trong SDK Android cung cấp các định nghĩa về thiết bị để bạn có thể tạo các thiết bị TV ảo để chạy và kiểm thử các ứng dụng của mình.

Cách tạo thiết bị TV ảo:

  1. Khởi động Trình quản lý thiết bị ảo Android. Để biết thêm thông tin, hãy xem bài viết Tạo và quản lý thiết bị ảo.
  2. Trong hộp thoại Trình quản lý thiết bị ảo Android, hãy nhấp vào thẻ Device defined (Định nghĩa về thiết bị).
  3. Chọn một trong các định nghĩa về thiết bị Android TV rồi nhấp vào Create AVD (Tạo AVD).
  4. Chọn các tuỳ chọn cho trình mô phỏng rồi nhấp vào OK để tạo AVD.

    Lưu ý: Để có hiệu suất tốt nhất của thiết bị trình mô phỏng TV, hãy sử dụng trình mô phỏng x86 và bật tuỳ chọn Use Host GPU (Sử dụng GPU lưu trữ). Đồng thời, hãy sử dụng tính năng tăng tốc thiết bị ảo khi có sẵn. Để biết thêm thông tin về tính năng tăng tốc phần cứng của trình mô phỏng, hãy xem phần Định cấu hình tăng tốc phần cứng cho Trình mô phỏng Android.

Cách kiểm thử ứng dụng trên thiết bị TV ảo:

  1. Trong Android Studio, hãy chọn dự án của bạn rồi nhấp vào biểu tượng Chạy trên thanh công cụ.
  2. Trong cửa sổ Select Deployment Target (Chọn đối tượng triển khai), hãy chọn thiết bị TV ảo của bạn rồi nhấp vào OK.

Để biết thêm thông tin về cách sử dụng trình mô phỏng, hãy xem phần Chạy ứng dụng trên Trình mô phỏng Android. Để biết thêm thông tin về cách triển khai ứng dụng từ Android Studio cho các thiết bị ảo, hãy xem bài viết Gỡ lỗi ứng dụng.

Bật ứng dụng TV để chạy ở dạng trải nghiệm tức thì

Trải nghiệm tức thì giúp người dùng dễ dàng dùng thử ứng dụng TV của bạn và có thể giúp tăng tỷ lệ sử dụng.

Để thiết lập ứng dụng TV chạy dưới dạng ứng dụng tức thì trên thiết bị Android TV hoặc trình mô phỏng, trước tiên, hãy làm theo hướng dẫn để tạo gói ứng dụng có hỗ trợ phiên bản tức thì.

Tiếp theo, trong intent-filter cho MainActivity của ứng dụng TV, hãy nhớ khai báo cả LAUNCHERLEANBACK_LAUNCHER trong AndroidManifest.xml:

<activity
    android:name="com.example.android.MainActivity"
    android:label="@string/app_name" >

    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
      <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
    </intent-filter>
  </activity>

Ứng dụng TV của bạn hiện đã được định cấu hình để chạy ở dạng trải nghiệm tức thì.

Chuẩn bị phát hành ứng dụng dành cho TV

Xem lại danh sách kiểm tra về Ứng dụng dành cho TV để biết các bước tiếp theo nhằm chuẩn bị phát hành và phân phối ứng dụng dành cho TV của bạn.