Android mang đến cho người dùng trải nghiệm phong phú và được tối ưu hoá cho ứng dụng chạy trên thiết bị màn hình lớn, chẳng hạn như TV có độ phân giải cao. Bạn có thể mở rộng đối tượng của ứng dụng bằng cách phát triển ứng dụng đó cho Android TV. Tài liệu này hướng dẫn cách thực hiện một cách hiệu quả.
Tạo ứng dụng truyền hình
Ứng dụng cho TV 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ều này có nghĩa là bạn có thể tạo ứng dụng TV mới dựa trên những kiến thức sẵn có về lập trình ứng dụng cho Android, hoặc mở rộng ứng dụng sẵn có để chạy trên các thiết bị TV.
Tuy nhiên, mô hình tương tác của người dùng đối với TV khác biệt đáng kể so với các thiết bị điện thoại và máy tính bảng. Để ứng dụng của bạn hoạt động hiệu quả trên các thiết bị TV, bạn phải thiết kế bố cục mới có thể dễ hiểu từ khoảng cách 3 mét, đồng thời cung cấp chế độ điều hướng chỉ hoạt động với một bàn phím định hướng và một nút chọn.
Để biết thêm thông tin về những điểm cần cân nhắc, chẳng hạn như cách xử lý bộ điều khiển phần cứng TV, tạo bố cục TV và tạo chế độ điều hướng trên TV, hãy xem phần Tạo ứng dụng TV.
Sử dụng Media3 ExoPlayer
Jetpack Media3 cung cấp một giao diện Trình phát xác định các tính năng cơ bản như khả năng phát, tạm dừng, tua và hiển thị thông tin về bản nhạc. ExoPlayer là cách triển khai mặc định của giao diện này trong Media3.
So với MediaPlayer API của Android, Exoplayer API có thêm nhiều tiện ích khác, chẳng hạn như hỗ trợ nhiều giao thức truyền trực tuyến, trình kết xuất âm thanh và video mặc định, cũng như các thành phần xử lý việc lưu vào bộ nhớ đệm của nội dung nghe nhìn.
Bạn có thể tuỳ chỉnh và mở rộng ExoPlayer, đồng thời có thể cập nhật trình phát này thông qua các bản cập nhật ứng dụng Cửa hàng Play. Để biết thêm thông tin, hãy xem bài viết Media3 ExoPlayer.
Sử dụng Media3 MediaSession
Phiên phát nội dung nghe nhìn là cách thức tương tác phổ biến để hệ thống tương tác với trình phát âm thanh hoặc trình phát video của ứng dụng. Một trong những đặc điểm chính giúp phân biệt Media3 với các API nội dung nghe nhìn trước đây là không còn cần đến các trình kết nối giữa các thành phần.
Lớp MediaSession
mới sẽ lấy mọi lớp triển khai giao diện Trình phát. Cả ExoPlayer và MediaController đều là các lớp triển khai giao diện đó. Điều này giúp việc tương tác giữa các thành phần trở nên đơn giản hơn nhiều.
Để biết thêm thông tin, hãy xem bài viết Giao diện của trình phát.
Để biết thêm thông tin về cách tạo ứng dụng phát nội dung nghe nhìn, hãy xem bài viết Tạo trình phát nội dung nghe nhìn cơ bản bằng ExoPlayer.
Để mang lại trải nghiệm tốt nhất cho người dùng cuối của ứng dụng đa phương tiện, bạn cần triển khai MediaSession
. Để làm như vậy, hãy khởi tạo một Player
và cung cấp nó cho MediaSession.Builder
như sau:
Kotlin
val player = ExoPlayer.Builder(context).build() val mediaSession = MediaSession.Builder(context, player).build()
Java
ExoPlayer player = new ExoPlayer.Builder(context).build(); MediaSession mediaSession = new MediaSession.Builder(context, player).build();
Tự động xử lý trạng thái
Thư viện Media3 tự động cập nhật phiên phát nội dung đa phương tiện bằng cách sử dụng trạng thái của trình phát. Do đó, bạn không cần xử lý việc ánh xạ từ người chơi sang phiên theo cách thủ công. Điều này giúp đảm bảo rằng người dùng luôn thấy thông tin mới nhất về nội dung nghe nhìn đang phát, kể cả trong thẻ Phát hiện nhạc.
Kiểm soát và quảng cáo tính năng phát
Trong Media3, trình phát mặc định là lớp ExoPlayer, triển khai giao diện Trình phát. Việc kết nối phiên phát nội dung nghe nhìn với trình phát cho phép ứng dụng quảng cáo việc phát nội dung nghe nhìn từ bên ngoài và nhận các lệnh phát từ các nguồn bên ngoài. Phiên phát nội dung nghe nhìn uỷ quyền các lệnh này cho trình phát của ứng dụng đa phương tiện.
Phiên nội dung nghe nhìn là chìa khoá để kiểm soát hoạt động phát. API này cho phép bạn định tuyến các lệnh từ các nguồn bên ngoài đến trình phát thực hiện việc phát nội dung nghe nhìn. Các ứng dụng bên ngoài có thể dùng một trình điều khiển nội dung nghe nhìn để gửi lệnh phát đến ứng dụng đa phương tiện của bạn. Các lệnh này sẽ được phiên phát nội dung nghe nhìn của bạn nhận, sau đó phiên này sẽ uỷ quyền các lệnh cho trình phát nội dung nghe nhìn.
Để biết thêm thông tin về chế độ phát, chẳng hạn như cách tuỳ chỉnh hành vi của lệnh phát, hãy xem phần Kiểm soát và quảng cáo chế độ phát bằng MediaSession.
Tránh gây gián đoạn trong ứng dụng
Khi sử dụng MediaSession
, bạn có thể tránh được những gián đoạn không cần thiết, chẳng hạn như:
Phát ngoài dự kiến và tiếp tục phát khi tắt TV hoặc chuyển đổi đầu vào của TV. Điều này cũng khiến phần cứng TV tiêu thụ nhiều năng lượng. Với
MediaSession
, ứng dụng của bạn có thể thông báo cho nền tảng rằng ứng dụng đang phát nội dung nghe nhìn và nền tảng có thể thông báo cho ứng dụng rằng quá trình phát có thể dừng.Quá trình phát nhạc đột ngột dừng khi chuyển ra khỏi ứng dụng hoặc tắt màn hình TV. Việc sử dụng các API
MediaSession
cho phép tiếp tục phát trong một dịch vụ nền.Hạn chế tương tác với nội dung khiến người dùng không thể kiểm soát quá trình phát. Ví dụ: quay lại ứng dụng nếu ứng dụng đang phát nhạc ở chế độ nền hoặc hỗ trợ lệnh thoại. Với
MediaSession
trong ứng dụng của bạn, người dùng có thể dùng lệnh thoại để tìm kiếm và bỏ qua các bài hát hoặc tập.
Các yếu tố khác cần cân nhắc
Khi mở rộng ứng dụng đa phương tiện sang Android TV, bạn cần cân nhắc các vấn đề về khả năng hỗ trợ tiếp cận, cách thúc đẩy mức độ tương tác, cách cho phép người dùng tìm thấy nội dung, cũng như cách tạo trò chơi và dịch vụ đầu vào cho TV.
Hỗ trợ tiếp cận trên TV
Mặc dù các công nghệ hỗ trợ có thể và thực sự giúp người dùng có thị lực kém, nhưng điều quan trọng là bạn phải hỗ trợ khả năng tiếp cận trong hành trình khám phá nội dung cho các ứng dụng truyền hình.
Ví dụ: hãy đặc biệt chú ý đến việc cung cấp hướng dẫn điều hướng và gắn nhãn đúng cách cho các phần tử, đồng thời đảm bảo rằng các ứng dụng truyền hình hoạt động tốt với các tính năng hỗ trợ tiếp cận như TalkBack. Các bước này có thể cải thiện đáng kể trải nghiệm cho người dùng khiếm thị.
Bước đầu tiên để cải thiện khả năng hỗ trợ tiếp cận là nâng cao nhận thức. Để biết thêm thông tin về việc điều chỉnh tỷ lệ văn bản, bố cục bàn phím và nội dung mô tả bằng âm thanh, hãy xem các tài nguyên hỗ trợ tiếp cận.
Các phương pháp hay nhất để thúc đẩy mức độ tương tác trên Google TV
Tất cả ứng dụng được tạo cho Android TV đều hoạt động trên các thiết bị chạy Google TV. Để mang lại trải nghiệm tốt nhất cho người dùng trên Google TV, bạn nên áp dụng các phương pháp hay nhất sau đây.
Bạn cần sử dụng MediaSession
để cung cấp một cách thức chung để tương tác với trình phát âm thanh hoặc video. Để biết thêm thông tin về cách triển khai tính năng này, hãy xem phần Sử dụng MediaSession của Media3.
Theo nguyên tắc cơ bản, ứng dụng của bạn cần hỗ trợ Google Cast. Thư viện này cho phép bạn mở rộng các ứng dụng Android, iOS và Chrome để phát trực tuyến âm thanh và video đến Android TV cũng như các thiết bị Chromecast và thiết bị có Trợ lý. Để biết thêm thông tin, hãy xem tài liệu về Google Cast.
Bạn cũng có thể giúp người dùng:
Khám phá nội dung trên nhiều nền tảng bằng cách cung cấp nguồn cấp dữ liệu thao tác với nội dung nghe nhìn hoặc tích hợp danh sách Xem tiếp theo.
Tận dụng giọng nói và mức độ tương tác bằng cách hỗ trợ tính năng liên kết tài khoản và đồng bộ hoá quyền, cung cấp tính năng truyền bằng giọng nói và bật tính năng Cast Connect.
Thanh toán dễ dàng hơn bằng cách tích hợp Google Play Billing và cung cấp gói thuê bao không gặp trở ngại.
Tạo khung đầu vào TV
Xem các chương trình truyền hình trực tiếp và nội dung liên tục khác dựa trên kênh là một phần quan trọng của trải nghiệm xem trên TV. Người dùng đã quen với việc chọn và xem các chương trình trên TV bằng cách duyệt xem các kênh. TV Input Framework tạo các kênh để xuất bản nội dung video hoặc âm nhạc trong hướng dẫn chương trình truyền hình.
TV Input Framework cung cấp một phương thức hợp nhất để nhận và phát nội dung video trực tiếp từ các nguồn phần cứng (chẳng hạn như cổng HDMI và bộ chỉnh kênh tích hợp) và các nguồn phần mềm (chẳng hạn như video phát trực tuyến qua Internet). Để biết thêm thông tin, hãy xem bài viết Tạo dịch vụ đầu vào cho TV.