Tạo và chạy ứng dụng truyền hình

Ứng dụng truyền hình sử dụng cấu trúc giống như ứng dụng dành 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ủa mình để chạy được trên thiết bị TV hoặc tạo ứng dụng mới dựa trên kiến thức 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 các yêu cầu cụ thể để đủ điều kiện trở thành ứng dụng Android TV trên Google Play. Để biết thêm thông tin, hãy xem các yêu cầu được liệt kê 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 để xây dựng ứng dụng dành cho TV, cũng như những thay đổi cần thiết tối thiểu để cho phép một ứng dụng chạy 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 nội dung 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

Hãy xem tài liệu sau đây để biết thông tin về những 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 một dự án TV, cho dù bạn đang sửa đổi một ứng dụng Android hiện có để chạy trên các thiết bị TV hay tạo một ứng dụng mới cho TV. Nếu bạn đang có một ứng dụng Android, thì việc thêm tính năng hỗ trợ Android TV sẽ giúp bạn thiết kế giao diện người dùng cho TV trong khi vẫn sử dụng lại cấu trúc ứng dụng hiện có.

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

  • Activity for 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 sẽ chạy trên các thiết bị TV.
  • Thư viện TV: Bạn có thể thêm một hoặc nhiều thư viện androidx dành cho các thiết bị TV (không bắt buộc). Các thư viện này đượ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 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 một ứ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ập nhật cho phép bạn tạo và kiểm thử ứ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 đã cập nhật cung cấp các API mới cho ứng dụng truyền hình.
  • Tạo hoặc cập nhật dự án ứng dụng của bạn.
    Để truy cập vào API mới dành cho thiết bị TV, hãy tạo một dự án hoặc sửa đổi một 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

Để chạy trên các thiết bị TV, ứng dụng phải khai báo hoạt động của trình chạy cho TV trong tệp kê khai. Phương thức này sử dụng bộ lọc ý định CATEGORY_LEANBACK_LAUNCHER để thực hiện việc này. Bộ lọc này xác định ứng dụng của bạn đang được bật cho TV và cho phép Google Play xác định ứng dụng đó là ứng dụng 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 cần khởi chạy.

Đoạn mã sau đây cho biết cách đưa 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 nhập tệp kê khai hoạt động thứ hai trong ví dụ này chỉ định rằng đó là hoạt động cần khởi chạy trên 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 của mình, thì người dùng chạy Google Play trên 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 sử dụng các công cụ cho nhà phát triển để tải trên thiết bị TV, thì ứng dụng đó sẽ không xuất hiện trong giao diện người dùng trên TV.

Giao diện người dùng của ứng dụng TV hoặc phần TV của ứng dụng hiện có 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 khoảng 3 mét. 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 dùng cho điện thoại và máy tính bảng. Để biết hướng dẫn thiết kế ứng dụng dành cho TV, hãy xem bài viết Thiết kế dành cho TV.

Khai báo chức năng hỗ trợ thiết bị TV

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

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, 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>

Khai báo về màn hình cảm ứng là không bắt buộc

Các ứng dụng dùng để chạy trên thiết bị TV không dựa vào màn hình cảm ứng để đầu vào. Để làm rõ điều này, tệp kê khai của ứng dụng TV 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 ứng dụng của bạn có thể hoạt động trên thiết bị TV và bạn bắt buộc phải xem ứng dụng đó là ứng dụng dành cho TV trên Google Play. Ví dụ về mã sau đây cho thấy cách đưa 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 bắt buộc phải có màn hình cảm ứng, như 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ữ màn hình chính

Ứng dụng Android TV phải cung cấp cả biểu tượng 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ữ được dùng làm điểm khởi chạy ứng dụng xuất hiện trên màn hình chính trong hàng ứng dụng và trò chơi.

Để thêm những đối tượng này vào ứng dụng, 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

Giống như tất cả ứng dụng Android, ứng dụng Android TV phải cung cấp biểu tượng màn hình chính. Để biết các phương pháp hay nhất về cách tìm ra điểm khởi chạy phù hợp 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.

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 đưa văn bản vào hình ảnh. Nếu ứng dụng của bạn hỗ trợ nhiều ngôn ngữ, thì bạn phải cung cấp các phiên bản riêng của biểu ngữ có 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 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 đượ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 thiết lập hai thuộc tính chồng chéo chuyển đổi thành true như minh hoạ trong đoạn mã sau trên 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 bài viết 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 để bạn dùng với ứng dụng truyền hình.

Compose cho TV

Bạn nên sử 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 cho TV còn cung cấp các thành phần chuyên biệt được thiết kế riêng cho màn hình lớn:

Khám phá cách tạo ứng dụng truyền hình bằng Compose dành 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 truyền hình bằng bộ công cụ Leanback UI 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 của mình 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 thiết bị TV ảo.

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

Hãy 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 Device (Thiết bị), hãy chọn About (Giới thiệu).
  4. Di chuyển đến phần Build (Tạo) rồi chọn Build (Tạo) nhiều lần cho đến khi bạn thấy thông báo "Bạn đã là nhà phát triển!"
  5. Quay lại Cài đặt. Trong hàng Lựa chọn ưu tiên, hãy chọn Tuỳ chọn cho nhà phát triển.
  6. Chọn Debug > USB debugging (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 Run (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 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ị cho phép bạn tạo thiết bị TV ảo để chạy và kiểm thử các ứng dụng.

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 phần 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 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 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 cho thiết bị trình mô phỏng TV, hãy dùng trình mô phỏng x86 và bật tuỳ chọn Use Host GPU (Sử dụng GPU máy chủ). Ngoài ra, 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ính năng 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 Run (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 nội dung 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.

Cho phép ứng dụng TV chạy dưới 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 dành cho TV của bạn và có thể giúp tăng mức sử dụng.

Để thiết lập ứng dụng cho TV chạy dưới dạng ứng dụng tức thì trên trình mô phỏng hoặc thiết bị Android TV, 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 truyền hình, hãy đảm bảo cả LAUNCHERLEANBACK_LAUNCHER đều được khai báo 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 truyền hình của bạn hiện đã được định cấu hình để chạy dưới dạng trải nghiệm tức thì.

Chuẩn bị phát hành ứng dụng truyền hình

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