Kullanıcı gün içinde sesli gözlüğünü veya ekranlı gözlüğünü taktığında gözlüğün ana cihazla (ör. kullanıcının telefonu) bağlantısı kesilebilir ya da gözlüğünü çıkardığında gözlük geçici olarak kullanılamayabilir. Cihaz kullanılabilirliğindeki bu tür değişiklikleri hesaba katmak için uygulamanız, cihaz kullanılabilirlik sinyallerini standart Android Lifecycle.State değerlerinde birleştiren XR Device Availability API'yi kullanabilir. Ses yönlendirmeyi ve etkinleştirme kelimesini yönetmeye yardımcı olmak için bu API'yi kullanın. Ayrıca, gözlüğün ne zaman kullanılabileceğine bağlı olarak kullanıcı girişinin ne zaman bekleneceğini öğrenin.
Yaşam döngüsü durumlarını anlama
Aşağıdaki tabloda, cihaz kullanılabilirlik sinyallerinin Lifecycle.State değerleriyle nasıl eşlendiği listelenmektedir.
Yaşam döngüsü durumu |
Cihaz durumu |
Açıklama |
|---|---|---|
|
oluşturuldu |
Yaşam döngüsü nesnesi oluşturuldu ancak henüz gözlemlenmedi. |
|
Etkin değil |
Hizmet bağlı ancak kullanıcı cihazı takmıyor. |
|
Etkin |
Kullanıcı cihazı takıyor. |
|
Bağlantı kesildi |
Cihazın bağlantısı kesildiğinde veya hizmet bağlantısı kaybolduğunda. |
|
Yok |
Cihaz yaşam döngüsünde şu anda bu durum kullanılmıyor veya bu durum yayılmıyor. |
Cihaz kullanılabilirliğini kontrol etme ve izleme
Bir cihazın kullanılabilirliğini kontrol etmek ve izlemek için, uygulamanızın her durumu nasıl ele alması gerektiğini belirlemek üzere yaşam döngüsü durumuyla birlikte öngörülen bir bağlam kullanırsınız:
// In your phone activity or service, check for projected device connection state before // attempting to create a projected device context and get the device lifecycle. ProjectedContext.isProjectedDeviceConnected(context, currentCoroutineContext()) .flatMapLatest { isConnected -> if (isConnected) { try { // Create the projected device context on connection val projectedContext = ProjectedContext.createProjectedDeviceContext(context) val xrDevice = XrDevice.getCurrentDevice(projectedContext) // Get the device lifecycle xrDevice.getLifecycle().currentStateFlow } catch (e: IllegalStateException) { flowOf(Lifecycle.State.DESTROYED) } } else { flowOf(Lifecycle.State.DESTROYED) } } .collect { state -> when (state) { Lifecycle.State.STARTED -> { /* Device is available (worn) */ } Lifecycle.State.CREATED -> { /* Device is unavailable (not worn) */ } Lifecycle.State.DESTROYED -> { /* Device is disconnected from host phone */ } else -> { /* Handle other states */ } } } }
Kodla ilgili önemli noktalar
- Bağlantı olup olmadığını kontrol edin: Cihaz yaşam döngüsüne erişmeden önce, yansıtılan cihazın ana cihaza bağlı olduğunu doğrulamak için
ProjectedContext.isProjectedDeviceConnectedişlevini çağırın. ProjectedContextalın: Yalnızca bağlantıyı doğruladıktan sonraProjectedContext.createProjectedDeviceContextnumaralı telefonu arayın ve bu bağlamıXrDeviceörneğinize ilettiğinizden emin olun.- Bağlam geçersiz kılma işlemini gerçekleştirme: Yansıtılan bir cihaz her bağlandığında yeni bir
deviceIdoluşturulur. DurumDESTROYED'ya ulaştığında mevcutProjectedContextgeçersiz olur. Hemen kullanmayı bırakın ve yeni bir bağlantı bekleyin. - Pili ve kaynakları optimize etme: Sistem kaynaklarını korumak ve pil tüketimini azaltmak için uygulama işlevselliğini yaşam döngüsü durumuna göre sorunsuz bir şekilde yönetin. Örneğin, durum
STARTED'danCREATED'ye geçtiğinde kameranın veri akışı gibi gözlüğe özel kaynakları serbest bırakmanız gerekir.CREATEDdurumu, cihazın artık takılmadığını gösterir. Bu nedenle, gereksiz pilin hızlı tükenmesini önlemek ve kullanıcı gizliliğini desteklemek için bu işlemlerin durdurulması gerekir.