feat(device-interaction): 加速度计抬手亮屏功能

REQ-20260430-0026

- 新增 AccelerometerWakeController 接口 + FiseAccelerometerWake 实现
- 双模式策略:方案D(WRIST_TILT)优先,不支持自动降级方案C(Z轴变化趋势)
- 方案C防误触发:检测Z轴从低(<3)到高(≥6)的变化趋势,非简单阈值
- NFC打卡时 pause/resume 暂停检测,防止贴卡姿势误触发
- 熄屏交系统SCREEN_OFF_TIMEOUT管理,加速度计只管亮屏
- DeviceModule 增加 DI 绑定
- MainActivity 增加 start/stop 生命周期管理
- PunchViewModel 增加 NFC 开关时 pause/resume 调用

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
dongliang
2026-04-30 16:54:05 +09:30
parent 08aae2065e
commit e3f6ac3c97
5 changed files with 258 additions and 3 deletions

View File

@@ -9,6 +9,7 @@ import androidx.appcompat.app.AppCompatActivity
import com.xiaoqu.watch.databinding.ActivityMainBinding
import com.xiaoqu.watch.event.AppEvent
import com.xiaoqu.watch.event.EventBus
import com.xiaoqu.watch.device.sensor.AccelerometerWakeController
import com.xiaoqu.watch.service.manager.NotificationManager
import com.xiaoqu.watch.service.manager.SystemStateMonitor
import com.xiaoqu.watch.ui.widget.NotificationBannerView
@@ -34,6 +35,8 @@ class MainActivity : AppCompatActivity() {
@Inject lateinit var systemStateMonitor: SystemStateMonitor
@Inject lateinit var notificationManager: NotificationManager
@Inject lateinit var eventBus: EventBus
/** 加速度计抬手亮屏控制器 */
@Inject lateinit var accelerometerWake: AccelerometerWakeController
lateinit var notificationBanner: NotificationBannerView
private val activityScope = CoroutineScope(Dispatchers.Main + SupervisorJob())
@@ -59,6 +62,9 @@ class MainActivity : AppCompatActivity() {
// 注册系统状态监听(电量、蓝牙)
systemStateMonitor.register()
// 启动加速度计抬手亮屏
accelerometerWake.start()
// 初始化通知横幅
notificationBanner = binding.notificationBanner
@@ -70,6 +76,7 @@ class MainActivity : AppCompatActivity() {
override fun onDestroy() {
super.onDestroy()
accelerometerWake.stop()
systemStateMonitor.unregister()
notificationBanner.destroy()
}