You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Android Wear OS Health Services编程订阅睡眠/唤醒事件?

在Wear OS Health Services中订阅睡眠/唤醒事件的实现方法

是的,你可以通过Wear OS Health Services的SleepSession API编程订阅睡眠/唤醒状态变化事件,从而实现在用户入睡时自动执行代码的功能,以下是具体实现步骤:

  • 添加依赖与权限配置
    在模块的build.gradle文件中引入Health Services依赖:

    implementation "com.google.android.gms:play-services-health-services:16.0.0"
    

    在Manifest中声明必要权限:

    <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />
    <uses-permission android:name="com.google.android.gms.permission.health_services" />
    

    注意ACTIVITY_RECOGNITION属于危险权限,需要在运行时动态申请。

  • 初始化SleepClient并订阅事件
    获取SleepClient实例后,通过subscribeToSleepSessionUpdates方法注册监听回调:

    val sleepClient = HealthServices.getClient(context)
    val listener = object : SleepSessionUpdatesListener {
        override fun onSleepSessionUpdate(update: SleepSessionUpdate) {
            val sessionInfo = update.sessionInfo
            when (sessionInfo.state) {
                SleepSessionInfo.SLEEP_SESSION_STATE_STARTED -> {
                    // 用户入睡时执行的代码逻辑
                    // 比如启动后台任务、触发自定义操作
                }
                SleepSessionInfo.SLEEP_SESSION_STATE_ENDED -> {
                    // 用户唤醒时执行的代码逻辑
                }
                // 可处理其他状态如SLEEP_SESSION_STATE_IN_PROGRESS等
            }
        }
    
        override fun onSleepSessionError(error: SleepSessionError) {
            // 处理错误情况
        }
    }
    
    // 发起订阅请求
    lifecycleScope.launch {
        val result = sleepClient.subscribeToSleepSessionUpdates(listener)
        if (result.isSuccess) {
            // 订阅成功
        } else {
            // 订阅失败,处理错误
        }
    }
    
  • 后台运行保障
    若需要在应用后台持续接收睡眠事件,建议使用WorkManager配合前台服务,避免应用被系统进程回收,确保事件触发时能正常执行代码。

  • 测试验证
    你可以利用官方提供的合成数据生成功能模拟睡眠事件,验证监听逻辑的正确性。

内容的提问来源于stack exchange,提问作者Alex Rothberg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 19:02:45