不同类型的无屏眼镜和显示眼镜具有不同的功能。例如,虽然所有无屏眼镜和带屏眼镜都支持通过语音进行音频体验,但只有带屏眼镜具有显示屏,您的应用可以在其中显示使用 Jetpack Compose Glimmer 构建的界面。
为了在各种设备上打造顺畅的用户体验,请规划好眼镜版 Activity,以便检查不同的设备功能。这种方法可让您构建一个可调整其行为的 activity,而不是针对特定设备构建多个 activity,从而简化开发。
了解投影 activity 的生命周期
您为无屏眼镜和显示眼镜构建的 activity 不会直接在设备上运行,而是从主机设备(例如用户的手机)投射到设备上。您为此目的构建的专用 activity 称为投影 activity。投射 activity 的生命周期基于标准 activity 生命周期构建,但也包含一些关键差异,以支持不同类型的无屏眼镜和显示眼镜的功能。
以下是关键事件的细分,其中标注了投影到无屏眼镜和显示眼镜的活动所特有的互动:
onCreate()- 在创建投影 activity 时调用。
- 在此处初始化应用的 Jetpack Compose Glimmer 界面和其他组件。
onStart()- 在投射的 activity 启动且用户知道该应用时调用。
onResume()- 在投影 activity 重新获得焦点时调用。当 activity 获得焦点时,它是可互动的,并且可以消耗触摸板或按钮输入。
- 在眼镜之前从头上取下(摘下)后,当眼镜重新戴上(戴上)时调用。
onPause()- 当投影的 activity 失去焦点,但用户仍感知到您的应用时调用。当 activity 失去焦点时,它不可交互,并停止消耗输入。
onStop()- 当系统认为用户不再感知到您的应用时调用。
- 在眼镜从头部取下(摘下)时调用。
onDestroy()- 在投影 activity 即将被销毁时调用。调用此方法时,系统会释放与该 activity 关联的所有资源。
了解显示状态如何影响投影的 activity 生命周期
在标准 Activity 中,当设备屏幕关闭时,生命周期状态会发生变化,通常会变为 onPause() 或 onStop()。相比之下,当眼镜的显示屏开启或关闭时,投射的 activity 生命周期不会发生变化。这意味着,即使显示屏关闭,投射的 activity 也会继续在“已启动”或“已恢复”状态下运行,从而让应用的音频体验不间断地继续。
由不同系统和用户事件触发的其他activity 状态更改会照常运行。
了解用户认知度如何影响预计活动
即使投影 activity 不可见,用户也可以感知到它。 感知是指用户感知应用体验并与之互动的所有方式,包括:
- 收听音频、语音反馈或其他声音提示。
- 触发面向用户的 LED 的应用操作,例如当应用访问摄像头或麦克风时触发隐私指示器。
在这些情况下,用户会知道其无屏眼镜或显示眼镜处于活跃状态并正在响应,即使他们没有看着显示屏:
- 投影 activity 的
onStart()状态表示 activity 处于活跃状态。 onResume()状态表示 Activity 可互动,并且可以接收触控板输入,或者正在接收主要输入分派。
只要用户知道您的应用,您的 activity 就会保持活跃状态并位于前台。如果系统在短时间内未检测到任何意识信号,则会将 activity 从前台移除,并最终触发 onStop()。
了解预测的活动和预测的情境
无屏眼镜和显示眼镜被视为已连接的设备,可扩展用户手机的功能。投影上下文是一种可感知设备的 Context,可让应用与已连接眼镜设备上的硬件(例如传感器或摄像头)进行交互,而不是与手机的硬件进行交互。在为无屏眼镜和显示眼镜开发体验时,您的应用必须使用投影上下文来访问眼镜的硬件。
系统可能会根据调用 activity 的上下文自动向您的应用授予投影上下文:
对于投射的 activity:如果应用的代码在投射的 activity 中运行,则其自身的 activity 上下文已经是投射的上下文。在这种情况下,在该 activity 中发出的调用已经可以访问眼镜的硬件。
对于“电话”应用或服务:如果应用中不属于投影 activity 的部分(例如“电话” activity 或服务)需要访问眼镜的硬件,则必须明确获取投影上下文。为此,请使用
createProjectedDeviceContext()方法。
如需了解详情,请参阅使用投影上下文访问无屏眼镜和显示眼镜上的硬件。
了解设备感知型 API
某些标准 Android API 会根据调用 activity 的 Context 更改其访问的设备硬件。当这些 API 收到投影上下文时,它们会访问眼镜的硬件,而不是主机手机设备上的硬件:
CameraManager:访问眼镜上的摄像头。SensorManager:从眼镜中检索传感器数据(例如陀螺仪或加速度计数据)。AudioManager:管理眼镜上的音频串流、音量和路由。