Kiểm tra trạng thái thiết bị trong thời gian chạy cho kính AI

Khi người dùng hoạt động trong ngày, kính AI của họ có thể mất kết nối với thiết bị lưu trữ (chẳng hạn như điện thoại của người dùng) hoặc mắt kính của họ có thể tạm thời không dùng được nếu họ tháo mắt kính ra. Để tính đến những loại thay đổi này về trạng thái sẵn có của thiết bị, ứng dụng của bạn có thể sử dụng XR Device Availability API. API này hợp nhất các tín hiệu về trạng thái sẵn có của thiết bị thành các giá trị Lifecycle.State tiêu chuẩn của Android. Sử dụng API này để giúp quản lý việc định tuyến âm thanh, kích hoạt cụm từ kích hoạt và biết thời điểm dự kiến hoạt động đầu vào của người dùng dựa trên thời điểm kính AI có sẵn.

Tìm hiểu các trạng thái vòng đời

Bảng sau đây liệt kê cách các tín hiệu về tình trạng còn hàng của thiết bị liên kết đến các giá trị Lifecycle.State.

Trạng thái vòng đời

Trạng thái thiết bị

Mô tả

INITIALIZED

Đã tạo

Đối tượng vòng đời được tạo nhưng chưa được quan sát.

CREATED

Không hoạt động

Dịch vụ đã kết nối nhưng người dùng không đeo thiết bị.

STARTED

Đang hoạt động

Người dùng đang đeo thiết bị.

DESTROYED

Đã ngắt kết nối

Thiết bị bị ngắt kết nối hoặc mất kết nối dịch vụ.

Kiểm tra và theo dõi tình trạng còn hàng của thiết bị

Để kiểm tra và theo dõi trạng thái sẵn có của thiết bị, bạn sẽ sử dụng một ngữ cảnh được chiếu cùng với trạng thái vòng đời để xác định cách ứng dụng của bạn nên xử lý từng trường hợp:

    val xrDevice = XrDevice.getCurrentDevice(projectedContext)

    xrDevice.getLifecycle().currentStateFlow
        .takeWhile { it != Lifecycle.State.DESTROYED }
        .collect { state ->
            when (state) {
                Lifecycle.State.STARTED -> { /* Device is ACTIVE (worn) */ }
                Lifecycle.State.CREATED -> { /* Device is INACTIVE (not worn) */ }
                else -> { /* Handle other states */ }
            }
        }
}

Các điểm chính về mã

  • Kiểm tra kết nối: Trước khi truy cập vào vòng đời của thiết bị, hãy gọi ProjectedContext.isProjectedDeviceConnected để xác minh rằng thiết bị được chiếu đã kết nối với thiết bị lưu trữ.
  • Lấy ProjectedContext: Chỉ gọi ProjectedContext.createProjectedDeviceContext sau khi xác minh kết nối và đảm bảo bạn truyền ngữ cảnh này vào phiên bản XrDevice.
  • Xử lý việc vô hiệu hoá bối cảnh: Một deviceId mới sẽ được tạo mỗi khi một thiết bị được chiếu kết nối. Khi trạng thái đạt đến DESTROYED, ProjectedContext hiện tại sẽ không hợp lệ. Ngừng sử dụng ngay lập tức và chờ kết nối mới.
  • Tối ưu hoá pin và tài nguyên: Xử lý chức năng của ứng dụng một cách hiệu quả dựa trên trạng thái vòng đời để duy trì tài nguyên hệ thống và giảm mức tiêu thụ pin. Ví dụ: bạn nên giải phóng các tài nguyên dành riêng cho kính, chẳng hạn như luồng dữ liệu camera, khi trạng thái chuyển từ STARTED về CREATED. Trạng thái CREATED cho biết thiết bị không còn được đeo nữa, vì vậy, việc dừng các quy trình này là cần thiết để ngăn tình trạng tiêu hao pin không cần thiết và để bảo vệ quyền riêng tư của người dùng.