Skip to content

feat: 姿态检测优化、多样本校准、退出隐藏后台与悬浮窗保活 - #5

Merged
ccc007ccc merged 1 commit into
ccc007ccc:mainfrom
XiaochangXu:feat/posture-hide-recents
Jul 7, 2026
Merged

feat: 姿态检测优化、多样本校准、退出隐藏后台与悬浮窗保活#5
ccc007ccc merged 1 commit into
ccc007ccc:mainfrom
XiaochangXu:feat/posture-hide-recents

Conversation

@XiaochangXu

Copy link
Copy Markdown
Contributor

功能概述

本次 PR 包含三项功能改进:


1. 姿态检测算法优化(运动姿态判定)

问题:原算法仅凭加速度标准差瞬时值判定运动,短暂晃动(调整姿势、拿取手机)会误判为运动姿态。

优化

  • 新增持续时长判定:加速度模长标准差超过阈值(2.5 m/s²)连续持续 3 秒以上才识别为 EXERCISE 运动姿态
  • 不足 3 秒的短暂晃动保持当前姿态不变,避免误判
  • 运动姿态因已通过持续时长验证,直接写入稳定结果,不经过滞回防抖

2. 静坐/站立多样本校准

问题:手机在不同体位(口袋、手持、桌面)下加速度朝向不同,单一校准样本容易匹配失败。

优化

  • PostureCalibration 存储多样本列表(sittingSamples/standingSamples),代替原先的单一样本
  • 实时检测时取与当前窗口欧氏距离最小的样本参与判定
  • JSON 序列化使用数组格式,自动兼容旧单对象格式
  • UI 新增「清除校准」按钮,状态显示样本数量

3. 退出应用隐藏后台

功能:设置页「常规」区新增开关,开启后退出应用时自动从「最近任务」列表隐藏,不销毁 Activity。

实现

  • 新建 BaseActivity 基类,统一管理 started Activity 数量
  • 通过 ActivityManager.AppTask.setExcludeFromRecents(true) 在退到后台时隐藏
  • 回到前台时自动恢复可见
  • 跳转系统设置、浏览器等外部页面时抑制隐藏,避免闪退
  • FloatingWindowService 改为 started 服务,解除 Activity 绑定后悬浮窗不消失

截图

设置页-隐藏后台开关 姿态校准-多样本

- 姿态检测:大幅晃动需持续 3 秒以上才识别为运动姿态,短暂晃动不误判
- 多样本校准:静坐/站立支持多次采集样本,应对不同体位(口袋、手持、桌面等)
- 退出隐藏后台:设置页新增开关,退出应用时自动从最近任务隐藏,返回保留页面状态
- 悬浮窗保活:showWindow 时启动前台服务,解除 Activity 绑定后悬浮窗不消失
- 所有 Activity 统一继承 BaseActivity,便于全局功能扩展
@ccc007ccc
ccc007ccc merged commit 93931f1 into ccc007ccc:main Jul 7, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants