Tạo một Notification cho Wearables

  • Để tạo ra một notification và gửi đến wearables, chúng ta sử dụng NotificationCompat.Builder. Khi bạn tạo notification với class này, thì hệ thông sẽ cho phép hiển thị đúng trên wearables. Chú ý: Notification sử dụng RemoteViews tuỳ chỉnh riêng và wearables chỉ cho hiển thị các kí tự và icon. Tuy nhiên, bạn cũng có thể tạo một tuỳ chỉnh Notification với việc sử dụng card layouts giống như là bạn đang tạo app cho wearables và chạy nó trên các thiết bị wearable.

  • Import các classes cần thiết

    Để import các package cần thiết, thêm dòng sau vào file build.gradle của bạn:

    compile "com.android.support:support-v4:20.0.+"

    Project của bạn bây giờ có thể truy cập sử dụng các class cần thiết sau đã được thư viện hỗ trợ:

    import android.support.v4.app.NotificationCompat; import android.support.v4.app.NotificationManagerCompat; import android.support.v4.app.NotificationCompat.WearableExtender;

  • Tạo Notifications với Notification Builder

    v4 support library cho phép bạn tạo notifications và sử dụng notifications mới nhất như các action của button hay các icon lớn, trong khi đó nó vẫn tương thích với Android 1.6 (API level 4) và cao hơn.

    Để tạo thông báo với sự hỗ trợ của thư viện, bạn sẽ tạo một instance của NotificationCompat.Builder và vấn đề thông báo thì được thông qua thằng notify(). ví dụ:

    Screen Shot 2016-09-28 at 7.06.53 AM.png

    Khi thông báo hiển thị trên thiết bị đeo tay, người dùng có thể gọi ra PendingIntent cụ thể bằng phương thức setContentIntent() với việc chạm vào notifications. Khi notifications xuất hiện trên một Android wearable, người dùng có thể swipe sang trái để thực hiện thao tác mở thông báo, cái mà gọi intent trên thiết bị cầm tay.

  • Add Action Buttons

    Ngoài các action chính đã được định nghĩa bởi setContentIntent() bạn cũng có thể bổ sung thêm các action khác thông qua PendingIntent với phương thức addAction(). Ví dụ sau cho phép hiển thị giống kiểu của notification từ phía trên, nhưng bổ sung thêm một action để thấy được một vị trí trên bản đồ.

    Screen Shot 2016-09-28 at 7.20.45 AM.png

    Trên một handheld, action xuất hiện trên một button được gắn vào thông báo (như hình dưới)

    Screen Shot 2016-09-28 at 7.24.31 AM.png

    trên một wearable, action xuất hiện như một button lớn hơn khi mà sử dụng swipe notification đến bên trái. khi người dùng tap vào action, thì các intent có liên quan được gọi ra trên handheld.

    Nếu thông báo của bạn bao gồm một action "Reply" (giống như Messaging app), bạn có thể cho phép trả lời bằng giọng nói trên Android wearable.

  • Specify Wearable-only Actions

    Nếu bạn muốn action có sẵn trên wearable và khác với trên handheld, sau đó sử dụng WearableExtender.addAction(). Mỗi lần bạn thêm action với phương thức này, wearable không hiển thị bất cứ cái nào khác action được thêm với NotificationCompat.Builder.addAction(). Đó là, chỉ action được thêm với WearableExtender.addAction() xuất hiện trên wearable và không hiển thị trên handheld.

    Screen Shot 2016-09-28 at 7.40.32 AM.png

  • Add a Big View

    Bạn có thể chèn vào một nội dung được thừa kế bằng cách bổ sung một "big view" style đến notification của bạn. Trên một thiết bị cầm tay, người dùng có thể xem nội dung lớn với việc mở rộng thông báo. Trên một thiết bị wearable, nội dung của big view cũng chỉ hiển thị mặc định theo thiết bị.

    Để bổ sung một nội dung được kế thừa đến notification của bạn, gọi setStyle() trên đối tượng NotificationCompat.Builder, thông qua một instance khác của BigTextStyle hoặc InboxStyle.

    Cho ví dụ, đoạn code sau sẽ bổ sung một instance của NotificationCompat.BigTextStyle đến một event notification, trong danh sách bao gồm việc hoàn thành mô tả các event (cái mà gồm nhiều kí tự hơn có thể đưa vào bên trong khoảng trống được cung cấp cho setContentText())

    Screen Shot 2016-09-28 at 7.56.39 AM.png

    Thông báo bạn có thể bổ sung một ảnh icon lớn đến bất cứ một notification nào sử dụng phương thức setLargeIcon(). Tuy nhiên, icon đó xuất hiện như một ảnh background lớn trên một wearable và trông ảnh đó không được tốt vì nó đã được scale lại cho phù hợp với màn hình wearable. Để bổ sung một ảnh nền của wearable cụ thể đến notification, hãy theo dõi phần sau.

  • Add Wearable Features For a Notification

    Nếu bạn đã cần để bổ sung một tuỳ chỉnh đến notification trên wearable, như là quy định cụ thể các trang nội dung hoặc cho phép người dùng trả lời các kí tự bắt buộc phải bằng giọng nói, bạn có thể sử dụng class NotificationCompat.WearableExtender đến các tuỳ chỉnh cụ thể. Để sử dụng API:

    1. Tạo instance của WearableExtender, cài đặt tuỳ chỉnh cụ thể cho notifications trên wearable.
    2. Tạo một instance của NotificationCompat.Builder, cài đặt các thuộc tính mong muốn cho nitification của bạn.
    3. Gọi extend() trên notification và đưa vào WearableExtender. Cái này thì áp dụng các tuỳ chỉnh trên wearable.
    4. Gọi build() để build notification.

    Cho ví dụ, đoạn code sau gọi đến phương thức setHintHideIcon() và gỡ bỏ icon của ứng dụng từ notification card.

    Screen Shot 2016-09-28 at 8.19.00 AM.png

    phương thức setHintHideIcon() và setBackground() là hai ví dụ của notification mới trong tương lai tương thích với NotificationCompat.WearableExtender.

    chú ý: bitmap bạn sử dụng setBackground() nên có kích thước là 400x400 không hỗ trợ scroll background và 640x400 cho background hỗ trợ parallax scrolling. Địa chỉ ảnh bitmap là thư mục res/drawable-nodpi. Các địa chỉ khác non-bitmap cho wearable notifications, sử dụng với phương thức setContentIcon(), trong thư mục res/drawable-hdpi

    Nếu bạn cần đọc một tuỳ chọn cụ thể hơn một lần trên wearable, sử phương thức tương ứng để tuỳ chỉnh. ví dụ sau gọi phương thức getHintHideIcon() để xem xem icon có đang ẩn hay không.

    Screen Shot 2016-09-28 at 9.17.47 AM.png

  • Deliver the Notification

    Khi bạn muốn đưa ra các notification của bạn, luôn luôn sử dụng NotificationManagerCompat API thay cho NotificationManager:

    Screen Shot 2016-09-28 at 9.20.56 AM.png

    Nếu bạn sử dụng NotificationManager của framework, một vài tính năng của NotificationCompat.WearableExtender không làm việc, nên chắc chắn bạn sẽ phải sử dụng NotificationCompat.

Tài liệu được dịch từ: wearables-notifications