不同類型的智慧音訊眼鏡和智慧螢幕眼鏡具備不同功能。舉例來說,所有音訊眼鏡和螢幕眼鏡都提供語音音訊體驗,但只有螢幕眼鏡有螢幕,可讓應用程式顯示以 Jetpack Compose Glimmer 建構的 UI。
為確保使用者在各種裝置上都能享有流暢體驗,請規劃眼鏡的
Activity,檢查不同裝置的功能。這種做法可讓您建構一個能調整行為的活動,而非針對特定裝置的多個活動,因此簡化了開發作業。
瞭解預測活動的生命週期
為智慧眼鏡和螢幕眼鏡建構的活動不會直接在裝置上執行,而是從主機裝置 (例如使用者的手機) 投影到裝置上。您為此目的建立的專屬活動稱為「預估活動」。投影活動的生命週期是以標準活動生命週期為基礎建構,但也有幾項重大差異,可支援不同類型的音訊眼鏡和顯示眼鏡功能。
以下是重要事件的細目,並標示出投影到音訊眼鏡和螢幕眼鏡的活動專屬互動:
onCreate()- 在建立投影活動時呼叫。
- 在此初始化應用程式的 Jetpack Compose Glimmer UI 和其他元件。
onStart()- 在投影活動開始時呼叫,且使用者知道應用程式。
onResume()- 當投影活動重新取得焦點時呼叫。活動處於前景運作時,可進行互動,並可使用觸控板或按鈕輸入內容。
- 當眼鏡先前從頭上取下 (doffed),然後重新戴上 (donned) 時呼叫。
onPause()- 當投影活動失去焦點,但使用者仍知道您的應用程式時,系統會呼叫這個方法。活動失去焦點時,無法互動,且會停止消耗輸入內容。
onStop()- 當系統認為使用者已不再注意您的應用程式時,就會呼叫這個方法。
- 當眼鏡從頭上取下時 (脫下) 呼叫。
onDestroy()- 即將刪除投影活動時呼叫。呼叫這個方法時,系統會釋出與活動相關的所有資源。
瞭解螢幕顯示狀態如何影響預計的活動生命週期
在標準 Activity 中,裝置螢幕關閉時,生命週期狀態會變更,通常會移至 onPause() 或 onStop()。相較之下,眼鏡螢幕開啟或關閉時,投影活動的生命週期不會改變。這表示即使螢幕關閉,投影活動仍會繼續以「已啟動」或「已恢復」狀態執行,讓應用程式的音訊體驗不中斷。
由不同系統和使用者事件觸發的其他活動狀態變更,則會照常運作。
瞭解使用者認知度對預估活動的影響
即使預計活動未顯示,使用者仍可得知。感知是指使用者感知及與應用程式體驗互動的所有方式,包括:
- 聆聽音訊、音效回饋或其他音效提示。
- 會觸發面向使用者的 LED 燈的應用程式動作,例如應用程式存取攝影機或麥克風時的隱私權指標。
在這些情況下,即使使用者沒有看著螢幕,也會知道智慧眼鏡和螢幕眼鏡處於啟用狀態並做出回應:
- 預計活動的
onStart()狀態表示活動有效。 onResume()狀態表示活動可互動,且可接收觸控板輸入內容,或正在接收主要輸入內容調度。
只要使用者知道您的應用程式,您的活動就會保持有效並處於前景。如果系統在短時間內未偵測到任何意識信號,就會從前景移除活動,並最終觸發 onStop()。
瞭解預計活動和預計情境
音訊眼鏡和螢幕眼鏡會視為連結裝置,可擴充手機功能。投影情境是裝置感應式 Context,可讓應用程式與連線眼鏡裝置上的硬體 (例如感應器、相機或麥克風) 互動,而非手機的硬體。為音訊眼鏡和螢幕眼鏡開發體驗時,應用程式必須使用投影環境,才能存取眼鏡的硬體。
系統會根據呼叫活動的環境,自動將預測環境授予應用程式:
針對投影活動:如果應用程式的程式碼是從投影活動中執行,活動內容本身就是投影內容。在這種情況下,該活動內發出的呼叫已可存取智慧眼鏡的硬體。
手機應用程式或服務:如果應用程式中投影活動以外的部分 (例如手機活動或服務) 需要存取智慧眼鏡的硬體,就必須明確取得投影內容。如要執行這項操作,請使用
createProjectedDeviceContext()方法。
詳情請參閱「使用投影環境存取音訊眼鏡和螢幕眼鏡的硬體」。
瞭解裝置感知 API
部分標準 Android API 會根據呼叫活動的 Context,變更存取的裝置硬體。當這些 API 收到投影的內容時,會存取智慧眼鏡的硬體,而不是主機手機裝置的硬體:
CameraManager:存取眼鏡上的攝影機。SensorManager:從眼鏡擷取感應器資料 (例如陀螺儀或加速計資料)。AudioManager:管理眼鏡上的音訊串流、音量和路徑。AudioRecord:使用眼鏡的麥克風擷取音訊。