chore: 关闭加速度计抬手亮屏(硬件无陀螺仪,不可靠)
设备仅有基础加速度计(MTK),无陀螺仪/重力传感器/旋转向量。 经 v1~v5 五轮实测验证,"看表"与"不看表"的角度差仅~7°, 无法可靠区分抬手和小幅摆动。旧版uni-app也放弃了此功能。 代码保留但默认不启用(start/stop/pause/resume 全部注释), 待更换有陀螺仪的硬件后取消注释即可启用。 保留的文件: - AccelerometerWakeController.kt(接口) - FiseAccelerometerWake.kt(实现,含倾斜角度+低通滤波方案) - DeviceModule.kt(DI绑定) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -62,8 +62,10 @@ class MainActivity : AppCompatActivity() {
|
|||||||
// 注册系统状态监听(电量、蓝牙)
|
// 注册系统状态监听(电量、蓝牙)
|
||||||
systemStateMonitor.register()
|
systemStateMonitor.register()
|
||||||
|
|
||||||
// 启动加速度计抬手亮屏
|
// 加速度计抬手亮屏:当前硬件仅有基础加速度计(无陀螺仪),
|
||||||
accelerometerWake.start()
|
// 无法可靠区分"看表"和"小幅摆动"(角度差仅~7°),暂不启用。
|
||||||
|
// 待更换有陀螺仪的硬件后取消注释。
|
||||||
|
// accelerometerWake.start()
|
||||||
|
|
||||||
// 初始化通知横幅
|
// 初始化通知横幅
|
||||||
notificationBanner = binding.notificationBanner
|
notificationBanner = binding.notificationBanner
|
||||||
@@ -76,7 +78,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
accelerometerWake.stop()
|
// accelerometerWake.stop() // 与 start() 对应,暂不启用
|
||||||
systemStateMonitor.unregister()
|
systemStateMonitor.unregister()
|
||||||
notificationBanner.destroy()
|
notificationBanner.destroy()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -98,10 +98,10 @@ class PunchViewModel @Inject constructor(
|
|||||||
Timber.d("考勤: 开始NFC打卡, punchType=$punchType")
|
Timber.d("考勤: 开始NFC打卡, punchType=$punchType")
|
||||||
_uiState.update { it.copy(isNfcScanning = true, scanningPunchType = punchType) }
|
_uiState.update { it.copy(isNfcScanning = true, scanningPunchType = punchType) }
|
||||||
|
|
||||||
// 1. 暂停加速度计亮屏检测(防止贴卡姿势误触发熄屏)
|
// 加速度计亮屏暂不启用(硬件无陀螺仪),启用后取消注释
|
||||||
accelerometerWake.pause()
|
// accelerometerWake.pause()
|
||||||
|
|
||||||
// 2. 开启 NFC + 音效
|
// 1. 开启 NFC + 音效
|
||||||
nfcController.open()
|
nfcController.open()
|
||||||
playFeedback(PLAN_NFC_OPEN)
|
playFeedback(PLAN_NFC_OPEN)
|
||||||
|
|
||||||
@@ -139,8 +139,8 @@ class PunchViewModel @Inject constructor(
|
|||||||
// 关闭 NFC 硬件(不播关闭音效,成功/失败音效由 API 结果决定)
|
// 关闭 NFC 硬件(不播关闭音效,成功/失败音效由 API 结果决定)
|
||||||
nfcController.stopScan()
|
nfcController.stopScan()
|
||||||
nfcController.close()
|
nfcController.close()
|
||||||
// 恢复加速度计亮屏检测
|
// 加速度计亮屏暂不启用,启用后取消注释
|
||||||
accelerometerWake.resume()
|
// accelerometerWake.resume()
|
||||||
// 清除倒计时
|
// 清除倒计时
|
||||||
_uiState.update { it.copy(nfcCountdown = 0) }
|
_uiState.update { it.copy(nfcCountdown = 0) }
|
||||||
|
|
||||||
@@ -244,13 +244,13 @@ class PunchViewModel @Inject constructor(
|
|||||||
_uiState.update { it.copy(punchResult = null, errorMessage = null) }
|
_uiState.update { it.copy(punchResult = null, errorMessage = null) }
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 关闭 NFC 硬件 + 播放关闭音效 + 恢复加速度计 */
|
/** 关闭 NFC 硬件 + 播放关闭音效 */
|
||||||
private fun closeNfc() {
|
private fun closeNfc() {
|
||||||
nfcController.stopScan()
|
nfcController.stopScan()
|
||||||
nfcController.close()
|
nfcController.close()
|
||||||
playFeedback(PLAN_NFC_CLOSE)
|
playFeedback(PLAN_NFC_CLOSE)
|
||||||
// 恢复加速度计亮屏检测
|
// 加速度计亮屏暂不启用,启用后取消注释
|
||||||
accelerometerWake.resume()
|
// accelerometerWake.resume()
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 播放震动+音效反馈 */
|
/** 播放震动+音效反馈 */
|
||||||
@@ -268,8 +268,8 @@ class PunchViewModel @Inject constructor(
|
|||||||
if (nfcController.isOpen()) {
|
if (nfcController.isOpen()) {
|
||||||
nfcController.stopScan()
|
nfcController.stopScan()
|
||||||
nfcController.close()
|
nfcController.close()
|
||||||
// 确保加速度计恢复(防止页面销毁时 NFC 未关闭导致永久暂停)
|
// 加速度计亮屏暂不启用,启用后取消注释
|
||||||
accelerometerWake.resume()
|
// accelerometerWake.resume()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
16
app/src/main/res/drawable/bg_btn_primary.xml
Normal file
16
app/src/main/res/drawable/bg_btn_primary.xml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 主按钮背景(深蓝色圆角) -->
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item android:state_pressed="true">
|
||||||
|
<shape android:shape="rectangle">
|
||||||
|
<solid android:color="#FF1565C0" />
|
||||||
|
<corners android:radius="12dp" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<shape android:shape="rectangle">
|
||||||
|
<solid android:color="#FF1E88E5" />
|
||||||
|
<corners android:radius="12dp" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</selector>
|
||||||
16
app/src/main/res/drawable/bg_btn_secondary.xml
Normal file
16
app/src/main/res/drawable/bg_btn_secondary.xml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 次按钮背景(深灰色圆角) -->
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item android:state_pressed="true">
|
||||||
|
<shape android:shape="rectangle">
|
||||||
|
<solid android:color="#FF424242" />
|
||||||
|
<corners android:radius="12dp" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<shape android:shape="rectangle">
|
||||||
|
<solid android:color="#FF333333" />
|
||||||
|
<corners android:radius="12dp" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</selector>
|
||||||
Reference in New Issue
Block a user