Ứ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ợ:
- Định dạng nội dung nghe nhìn được hỗ trợ
- Quản lý bản quyền kỹ thuật số (DRM)
android.drm
- ExoPlayer
android.media.MediaPlayer
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ó.
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ế cho TV. Để biết thêm thông tin về các yêu cầu triển khai tối thiểu cho bố cục giao diện trên TV, hãy xem bài viết Tạo bố cục 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.
Biểu ngữ trên màn hình chính
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
Bạn có thể sử dụng hầu hết các thư viện AndroidX với Android TV. Sử dụng Thành phần cấu trúc như ViewModel
để quản lý dữ liệu giao diện người dùng nhận biết được vòng đời và Room
để tích hợp với cơ sở dữ liệu SQLite cục bộ giống như cách bạn thực hiện với thiết bị di động.
Hầu hết các thư viện AndroidX đều hỗ trợ Android TV. Ứng dụng truyền hình có thể sử dụng các thành phần cấu trúc giống như ứng dụng dành cho thiết bị di động. Thậm chí, bạn có thể chia sẻ các thành phần giữa các hệ số hình dạng. Vì vậy, bạn chỉ cần chuyên biệt hoá logic trình bày của ứng dụng truyền hình.
Compose cho TV
Sử dụng Jetpack Compose để xây dựng giao diện người dùng cho hệ điều hành TV. Compose là một phiên bản Android hiện đại để phát triển giao diện người dùng. Bên cạnh các thư viện Compose chính, các 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 (không nên dùng)
Trước đây, bộ công cụ Leanback UI cung cấp các API và tiện ích giao diện người dùng dành riêng cho các thiết bị TV sử dụng các mảnh và khung hiển thị Android:
androidx.leanback.app
androidx.leanback.database
androidx.leanback.graphics
androidx.leanback.media
androidx.leanback.preference
androidx.leanback.system
androidx.leanback.widget
androidx.leanback.widget.picker
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 Sử dụng bộ công cụ Leanback UI.
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:
- 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.
- Trên thiết bị TV, hãy chuyển đến phần Cài đặt.
- Trong hàng Device (Thiết bị), hãy chọn About (Giới thiệu).
- 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!"
- 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.
- Chọn Debug > USB debugging (Gỡ lỗi qua USB) rồi chọn On (Bật).
- 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:
- 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ụ.
- 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:
- 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.
- 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ị).
- 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).
- 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:
- 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ụ.
- 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ả LAUNCHER
và LEANBACK_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.