feat(hrv): 添加心率变异性监控和压力评估功能
- 新增 HRV 监听服务,实时监控心率变异性数据 - 实现 HRV 到压力指数的转换算法和压力等级评估 - 添加智能通知服务,在压力偏高时推送健康建议 - 优化日志系统,修复日志丢失问题并增强刷新机制 - 改进个人页面下拉刷新,支持并行数据加载 - 优化勋章数据缓存策略,减少不必要的网络请求 - 重构应用初始化流程,优化权限服务和健康监听服务的启动顺序 - 移除冗余日志输出,提升应用性能
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { fetchHRVWithStatus } from '@/utils/health';
|
||||
import { convertHrvToStressIndex } from '@/utils/stress';
|
||||
import { Image } from 'expo-image';
|
||||
import { LinearGradient } from 'expo-linear-gradient';
|
||||
import React, { useEffect, useState } from 'react';
|
||||
@@ -13,20 +14,6 @@ interface StressMeterProps {
|
||||
export function StressMeter({ curDate }: StressMeterProps) {
|
||||
const { t } = useTranslation();
|
||||
|
||||
// 将HRV值转换为压力指数(0-100)
|
||||
// HRV值范围:30-110ms,映射到压力指数100-0
|
||||
// HRV值越高,压力越小;HRV值越低,压力越大
|
||||
const convertHrvToStressIndex = (hrv: number | null): number | null => {
|
||||
if (hrv === null || hrv === 0) return null;
|
||||
|
||||
// HRV 范围: 30-110ms,对应压力指数: 100-0
|
||||
// 线性映射: stressIndex = 100 - ((hrv - 30) / (110 - 30)) * 100
|
||||
const normalizedHrv = Math.max(30, Math.min(130, hrv));
|
||||
const stressIndex = 100 - ((normalizedHrv - 30) / (130 - 30)) * 100;
|
||||
|
||||
return Math.round(stressIndex);
|
||||
};
|
||||
|
||||
const [hrvValue, setHrvValue] = useState(0)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user