不同类型的音频眼镜和显示眼镜具有不同的功能。例如,虽然所有音频眼镜和显示眼镜都通过语音提供音频体验,但只有显示眼镜具有显示屏,您的应用可以在该显示屏上显示使用 Jetpack Compose Glimmer 构建的界面。
为了在各种设备上打造顺畅无缝的用户体验,请规划眼镜的 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 或服务)需要访问眼镜的硬件,则必须明确获取投影的 context。为此,请使用
createProjectedDeviceContext()方法。
如需了解详情,请参阅使用投影的上下文来访问音频眼镜和显示眼镜上的硬件。
了解设备感知型 API
某些标准 Android API 会根据调用 activity 的 Context 更改其访问的设备硬件。当这些 API 接收到投影的上下文时,它们会访问眼镜的硬件,而不是主机手机设备上的硬件:
CameraManager:访问眼镜上的摄像头。SensorManager:从眼镜中检索传感器数据(例如,陀螺仪或加速度计数据)。AudioManager:管理眼镜上的音频流、音量和路由。AudioRecord:使用眼镜的麦克风捕获音频。