1. Wear OS传感器应用工程导论
Wear OS 是 Google 面向智能手表等可穿戴设备推出的操作系统平台,它并不是把手机 Android 简单缩小后塞进表壳,而是围绕“贴身佩戴、屏幕小、电池小、交互短促”重新组织的一套运行环境。理解这一点,是学习传感器应用工程的前提:手表上的加速度计、陀螺仪、心率传感器、气压计、环境光传感器等,并不是孤立外设,而是通过 Wear OS 的分层架构被应用层以统一 API 访问,同时受到功耗、采样率、后台限制和传感器权限的约束。
Wear OS 平台架构:从硬件到应用的四层视角
从工程视角看,Wear OS 可以拆成四层。最底层是硬件与传感器子系统,包括 SoC、传感器集线器(sensor hub)、各物理传感器和显示/触控模块。传感器集线器很关键:它是一颗低功耗协处理器,可以在主 CPU 休眠时持续采集加速度、步数等数据,从而避免主处理器频繁唤醒。第二层是系统服务与 HAL,传感器服务负责管理传感器列表、采样率、批处理(batching)和唤醒策略,并通过 HAL 与具体硬件驱动对接。第三层是框架与 API,向应用暴露 SensorManager、Sensor、SensorEvent、SensorEventListener 等接口,以及 Health Services 等更高层健康数据接口。最上层是应用与表盘,包括前台应用、后台服务、Tile、Complication 和 Watch Face。
需要特别注意的是,Wear OS 对后台执行有严格限制。普通后台服务不能长期运行,长时间采集通常要借助前台服务(Foreground Service)并显示常驻通知,或使用 WorkManager、Health Services 的被动数据订阅。传感器采样率也不是越高越好:SENSOR_DELAY_GAME 约 20ms 一次,SENSOR_DELAY_UI 约 60ms,SENSOR_DELAY_NORMAL 约 200ms,而 SENSOR_DELAY_FASTEST 则尽可能快。采样率越高,功耗和发热越明显,因此工程上要在“数据质量”和“续航”之间做权衡。
传感器在可穿戴设备中的角色
在手表上,传感器承担三类角色。第一类是“运动与姿态感知”,加速度计和陀螺仪组合可以判断抬腕、计步、识别手势和运动状态;第二类是“生理与健康监测”,PPG 心率传感器、血氧传感器、皮肤温度传感器用于连续或间歇采集体征数据;第三类是“环境与交互辅助”,气压计用于海拔和楼层判断,环境光传感器用于自动亮度调节,磁力计用于指南针。与手机不同,手表传感器更强调“贴身、连续、低功耗”,因此很多采集任务需要交给传感器集线器或 Health Services 在后台完成。
以计步为例,应用并不需要自己从原始加速度里做峰值检测,Wear OS 通常提供 TYPE_STEP_COUNTER 和 TYPE_STEP_DETECTOR。TYPE_STEP_COUNTER 返回自开机以来的累计步数,适合做日步数统计;TYPE_STEP_DETECTOR 每检测到一步就触发一次事件,适合做实时反馈。若要做更复杂的动作识别,才需要读取 TYPE_ACCELEROMETER 原始数据并自行做滤波和特征提取。这里有一个工程判断:能用系统高层传感器解决的,优先用高层传感器,因为它们在底层已经做了功耗优化和算法处理。
课程项目目标与开发环境搭建
本课程最终要完成一个可运行的 Wear OS 传感器应用:在手表上采集加速度、心率和步数,做简单的实时状态判断,并把结果通过 Tile 或表盘展示出来。为了达到这个目标,需要先搭好开发环境。推荐使用 Android Studio 最新稳定版,安装 Wear OS 系统镜像和对应 SDK。创建项目时选择 “Wear OS” 模板,最小 SDK 建议设为 API 30(Wear OS 3)或更高,以便使用较新的 Health Services 和前台服务 API。
环境搭建的关键步骤包括:在 SDK Manager 中安装 Wear OS API 级别、创建 Wear OS 模拟器或配对真机、开启手表开发者选项与 ADB 调试。真机调试时,手表和电脑需要在同一网络,或通过蓝牙配对;模拟器则可以直接用 Android Studio 的 Wear OS 虚拟设备。下面给出一个典型的项目依赖配置示例,用于后续章节的传感器采集与健康数据访问:
// build.gradle (Module: app)
android {
compileSdk 34
defaultConfig {
minSdk 30
targetSdk 34
}
}
dependencies {
// Wear OS 基础库
implementation "androidx.wear:wear:1.3.0"
// Health Services(心率、步数等)
implementation "androidx.health:health-services-client:1.1.0-alpha03"
// 协程与生命周期
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3"
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.7.0"
}
权限方面,读取心率通常需要 BODY_SENSORS,读取步数需要 ACTIVITY_RECOGNITION,前台服务需要 FOREGROUND_SERVICE 和 FOREGROUND_SERVICE_HEALTH。注意 Wear OS 对权限的运行时申请和手机类似,但用户授权界面更小,因此要在申请前给出清晰说明。开发环境验证的标准很简单:能通过 ADB 连接设备,能安装并启动一个空白 Wear OS 应用,能在 Logcat 中看到传感器列表输出。完成这一步,后续的传感器采集、数据处理和界面展示才有稳定的运行基础。