Duy trì sự hiện diện của ứng dụng trên Wear

Wear OS tự động xử lý thao tác chuyển sang chế độ tiết kiệm pin cho ứng dụng đang hoạt động khi người dùng không còn dùng đồng hồ. Đây được gọi là chế độ môi trường xung quanh của hệ thống. Nếu người dùng tương tác lại với đồng hồ trong một khung thời gian nhất định, thiết bị Wear OS sẽ đưa người dùng quay lại nơi họ đã dừng lại trong ứng dụng.

Đối với các trường hợp sử dụng cụ thể, chẳng hạn như người dùng muốn xem nhịp tim và nhịp độ trong khi chạy, bạn cũng có thể kiểm soát nội dung hiện ở chế độ môi trường xung quanh tiết kiệm pin. Các ứng dụng Wear OS chạy ở cả chế độ môi trường xung quanh lẫn chế độ tương tác được gọi là ứng dụng luôn bật.

Việc cho phép một ứng dụng liên tục xuất hiện sẽ ảnh hưởng đến thời lượng pin, vì vậy bạn hãy cân nhắc ảnh hưởng đó khi thêm tính năng này vào ứng dụng.

Định cấu hình dự án của bạn

Để hỗ trợ chế độ môi trường xung quanh, hãy làm theo các bước sau:

  1. Tạo hoặc cập nhật dự án của bạn dựa vào cấu hình trên trang Tạo và chạy ứng dụng cho thiết bị đeo.
  2. Thêm quyền WAKE_LOCK vào tệp kê khai Android:
<uses-permission android:name="android.permission.WAKE_LOCK" />

Bật chế độ luôn bật

Để sử dụng lớp AmbientLifecycleObserver, hãy làm như sau:

  1. Triển khai giao diện AmbientLifecycleObserver.AmbientLifecycleCallback, như trong ví dụ sau. Ở giai đoạn này, các phương thức sẽ trống, nhưng ở phần sau của hướng dẫn, bạn sẽ thấy thông tin chi tiết về những thay đổi cần đảm bảo đối với hình ảnh để vào và thoát khỏi chế độ môi trường xung quanh.

    Kotlin

        val ambientCallback = object : AmbientLifecycleObserver.AmbientLifecycleCallback {
          override fun onEnterAmbient(ambientDetails: AmbientLifecycleObserver.AmbientDetails) {
            // ... Called when moving from interactive mode into ambient mode.
          }
    
          override fun onExitAmbient() {
            // ... Called when leaving ambient mode, back into interactive mode.
          }
    
          override fun onUpdateAmbient() {
            // ... Called by the system in order to allow the app to periodically
            // update the display while in ambient mode. Typically the system will
            // call this every 60 seconds.
          }
        }
        
  2. Tạo AmbientLifecycleObserver rồi đăng ký trình quan sát. Thông thường, thuộc tính này sẽ được dùng trong onCreate() hoặc thành phần kết hợp cấp cao nhất nếu sử dụng Compose cho Wear OS, để cho phép bật hành vi luôn bật trong suốt vòng đời hoạt động.

    Kotlin

    private val ambientObserver = AmbientLifecycleObserver(activity, callback)
    
    override fun onCreate(savedInstanceState: Bundle) {
      super.onCreate(savedInstanceState)
      lifecycle.addObserver(observer)
    
      // ...
    }
    
  3. Xoá trình quan sát bằng cách gọi removeObserver() khi hành vi luôn bật không còn cần thiết nữa. Ví dụ: bạn có thể gọi phương thức này trong phương thức onDestroy() của hoạt động.

Sửa đổi giao diện hình ảnh ở chế độ môi trường xung quanh

Theo mặc định, khi triển khai chế độ luôn bật, màn hình sẽ không thay đổi giao diện khi đồng hồ chuyển sang chế độ môi trường xung quanh. Bạn có thể sửa đổi hành vi này bằng cách ghi đè các phương thức trong AmbientLifecycleCallback.

Để tiết kiệm pin, hãy làm như sau:

  • Phát sáng ít điểm ảnh hơn và để phần lớn màn hình màu đen. Hãy cân nhắc chỉ hiển thị thông tin quan trọng ở chế độ môi trường xung quanh và cung cấp thêm thông tin chi tiết khi người dùng chuyển sang chế độ tương tác.
  • Điều chỉnh mọi nội dung để nhận được các bản cập nhật nhưng ít thường xuyên hơn. Ví dụ: hiện đồng hồ hẹn giờ ở phút gần nhất thay vì giây gần nhất.
  • Trong đối tượng AmbientDetails được truyền đến onEnterAmbient():
    • Nếu bạn đặt deviceHasLowBitAmbient, hãy tắt tính năng khử răng cưa khi có thể.
    • Nếu bạn đặt burnInProtectionRequired, hãy chuyển hình ảnh trực quan xung quanh theo định kỳ và tránh các vùng màu trắng đồng nhất.

Khi sử dụng Compose cho Wear OS, bạn nên sử dụng các phương thức gọi lại này để cập nhật state, để hệ thống có thể kết hợp lại giao diện người dùng của bạn một cách phù hợp.

Để xem ví dụ về cách đạt được điều này, hãy xem Mẫu bài tập dựa trên Compose trên GitHub, trong đó sử dụng thành phần kết hợp AmbientAware trong thư viện Horologist.