+2

[Android TV] Phần 1: Bắt đầu với TV apps

Giới thiệu

TV Apps sử dung cấu trúc giống như các cấu trúc dành cho điện thoại và máy tính bảng. Sự tương đồng này tức là bạn có thể điều chỉnh các ứng dụng hiện tại của mình để cùng lúc chạy trên TV devices hoặc tạo ra ứng dụng mới dựa trên những gì bạn đã biết về xây dựng ứng dụng cho Android

Quan trọng:Ứng dụng của bạn phải đáp ứng được một số yêu cầu đặc biệt để đủ đ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 TV App Quality.

Bài học này miêu tả cách chuẩn bị môi trường phát triển để xây dựng TV apps, và những thay đổi cần thiết cơ bản nhất để 1 ứng dụng có thể hoạt động trên TV devices.

Các định dạng được hỗ trợ

Hãy xem các tài liệu dưới đây để biết thêm thông tin về codecs, protocols và các định dạng được hỗ trợ bởi Android TV

Thiết lập một TV Project

Phần này chúng ta bàn luận về việc làm sao để điều chỉnh 1 ứng dụng hiện có chạy được trên TV devices, hoặc tạo một ứng dụng mới. Có những thành phần chính bạn phải sử dụng để tạo một ứng dụng chạy trên TV devices:

  • Activity for TV (Yêu cầu) - Trong Application Manifest, khai báo các activity bạn định chạy trên TV devices
  • TV Support Libraries(Tùy chọn) -Có rất nhiều Support Libraries có sẵn hỗ trợ cho TV devices cung cấp các widget để xây dựng UI

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

Trước khi chúng ta bắt đầu xây dựng 1 ứng dụng chạy trên TV device, chúng ta cần:

Khai báo một TV Activity

Một ứng dụng chạy được trên TV devices cần khởi tạo một activity cho TV. Trong Android Manifest chúng ta khai báo CATEGORY_LEANBACK_LAUNCHER trong intent-filter tag. intent-filter sẽ xác định ứng dụng của chúng ta có thể sử dụng cho TV devices, và nó là yêu cầu để ứng dụng được coi là một TV app trên Google Play. Viêc khai báo này cũng xác định hoạt động nào trong ứng dụng được khởi động khi người dùng chọn biểu tượng của nó trên TV home screen.

Đoạn code dưới đây sẽ cho chúng ta biết làm cách nào để khai báo CATEGORY_LEANBACK_LAUNCHER trong Android Manifest

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

Khai báo Leanback

Yêu cầu của một ứng dụng chạy trên TV devices là sử dụng UI Leanback, vì thế chúng ta cần khai báo chúng trong manifest. Nếu chúng ta xây dựng một ứng dụng dành cho di động (phone, wearables,tablets, v.v.. ) cũng giống như Android TV, chúng ta set attribute value requirefalse. Nếu chúng ta set required attribute là true, ứng dụng của chúng ta sẽ chỉ chạy trên các thiết bị sử dụng giao diện Leanback UI

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

Khai báo về sử dụng thiết bị thông qua cảm ứng màn hình là không cần thiết

Các ứng dụng chạy trên TV devices không phát triển sử dụng dựa trên màn hình cảm ứng như các thiết bị mobiles. Để rõ ràng hơn, ở file manifest trong ứng dụng, việc khai báo android.hardware,touchscreen là không cần thiết. Việc này đồng nghĩa với việc ứng dụng của bạn có thể hoạt động trên TV devices, và nó cũng là yêu cầu để ứng dụng của bạn được hiểu như một ứng dụng dành cho TV trên Google Play. Example:

    <manifest>
    <uses-feature android:name="android.hardware.touchscreen"
              android:required="false" />
    ...
</manifest>
Caution: Chúng ta cần khai báo về việc ứng dụng không cần thiết trong việc sử dụng màn hình cảm ứng cho đầu vào. Nếu không ứng dụng của bạn sẽ không được xuất hiện trên Google Play như một ứng dụng cho TV devices.

Banner cho màn hình chính

Một ứng dụng cần có một biểu ngữ (banner) cho mỗi phần ứng dụng nếu nó sử dụng Leanback launcher. Mỗi banner sẽ là nơi khởi động các ứng dụng trên màn hình chính. Example:

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

        ...
    </application>

Sử dụng android:banner attributre với thẻ <application> để cung cấp biểu ngữ mặc định cho tất cả các ứng dụng, hoặc với <activity> để cung cấp một biểu ngữ cụ thể cho một <activity> đó.

Chúng ta xem một số mẫu thiết kế được hướng dẫn Banner.

Thay đổi màu của Launcher

Khi một TV app xuất hiện, hệ thống sẽ hiển thị một animation như expanding, filled circle. Để tùy chỉnh màu sắc của chúng, chúng ta đặt android:colorPrimary cho TV app hoặc một activity với một màu cụ thể. Chúng ta cũng nên đặt 2 thuộc tính android:windowAllowReturnTransitionOverlapandroid:windowAllowEnterTransitionOverlap với giá trị true Example:

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

Để tìm hiểu sâu hơn về cách làm việc với themesstyle, chúng ta xem thêm Styles and Themes

Thêm thư viện hỗ trợ cho TV app

Các thư viện hỗ trợ TV apps được tích hợp trong Android SDK. Các thư viện này cung cấp các API và các widget hỗ trợ xây dựng giao diện người dùng (UI) sử dụng cho TV devices. Các thư viện này nằm ở thư mục <sdk>/extras/adnroid/support. Dưới đây là danh sách các thư viện và các mục đích của chúng:

  • v17 leanback library - Cung cấp các UI Widget sử dụng cho TV apps, đặc biệt sử dụng cho các ứng dụng làm về media playback
  • v7 recyclerview library - Cung cấp các phương thức quản lý danh sách và hiển thị một cách hiệu quả. Một số phương thức trong thư viện v17 leanback phụ thuộc vào thư viện này.
  • v7 cardview library - Cung cấp các UI Widget cho việc hiển thị các thông tin dạng card, hoặc như cấc media item pictures hoặc mô tả.
Chú thích: Việc sử dụng các thư viện trên là không bắt buộc khi xây dựng một TV apps. Tuy nhiên, việc sử dụng chúng cũng đem lại rất nhiều lợi ích cho chúng ta, đặc biệt là khi chúng ta xây dựng một ứng dụng cung cấp một media catalog browsing interface.

Nếu chúng ta sử dụng thử viện v17 leanback, chúng ta nên ghi nhớ rằng nó phụ thuộc vào thưu viện v4 support. Điều này có nghĩa là khi chúng ta sử dụng thư viện leanback thì chúng ta nên sử dụng thêm các thư viện sau:

  • v4 support library

  • v7 recyclerview support library

  • v17 cardview support library

Thư viện v17 leanback chứa các resource, mà yêu cầu bạn phải có những bước xử lý để có thể sử dụng nó trong ứng dụng của bạn. Chúng ta có thể tham khảo thêm ở: Support Library Setup..

Xây dựng TV Apps

Sau khi chúng ta hoàn thành các bước đầu tiên, bây giờ chúng t sẽ bắt đầu xây dựng một ứng dụng sử dụng cho một màn hình lớn. Dưới đây là một số các chủ để tương tự giúp chúng ta xây dựng một ứng dụng chạy trên TV devices:

Chạy TV Apps

Đây là bước rất quan trọng cũng như thoải mái nhất trong quá trình xây dựng ứng dụng 😃. Chúng ta có thể sử dụng các simulator hoặc các TV devices thật để thử nghiệm ứng dụng.

Để hiểu thêm về cách sử dụng simulator hoặc virtual TV device chúng ta có thể tham khảo thêm ở:

Phần tiếp theo xin giới thiệu với các bạn về việc xử lý TV Hardware

Thank for your reading.


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.