|
|
|
import 'dart:async';
|
|
|
|
import 'dart:io';
|
|
|
|
import 'dart:developer' as developer;
|
|
|
|
import 'dart:isolate';
|
|
|
|
import 'dart:math' as math;
|
|
|
|
|
|
|
|
import 'package:flutter/foundation.dart';
|
|
...
|
...
|
@@ -307,14 +308,20 @@ class HealthRawDataCoreService { |
|
|
|
readChunkDays: readChunkDays,
|
|
|
|
);
|
|
|
|
|
|
|
|
final result = calculate(
|
|
|
|
hrvPoints: hrvPoints,
|
|
|
|
heartRatePoints: heartRatePoints,
|
|
|
|
restingHeartRatePoints: restingHeartRatePoints,
|
|
|
|
sleepIntervals: sleepIntervals,
|
|
|
|
workoutIntervals: workoutIntervals,
|
|
|
|
startTime: math.min(hrvStartTime, heartRateStartTime),
|
|
|
|
endTime: effectiveEndTime,
|
|
|
|
final capturedUserId = userId;
|
|
|
|
final capturedStartTime = math.min(hrvStartTime, heartRateStartTime);
|
|
|
|
final result = await Isolate.run(
|
|
|
|
() => calculate(
|
|
|
|
userId: capturedUserId,
|
|
|
|
hrvPoints: hrvPoints,
|
|
|
|
heartRatePoints: heartRatePoints,
|
|
|
|
restingHeartRatePoints: restingHeartRatePoints,
|
|
|
|
sleepIntervals: sleepIntervals,
|
|
|
|
workoutIntervals: workoutIntervals,
|
|
|
|
startTime: capturedStartTime,
|
|
|
|
endTime: effectiveEndTime,
|
|
|
|
),
|
|
|
|
debugName: 'HealthRawStressCalculator',
|
|
|
|
);
|
|
|
|
final newResult = result.copyWith(
|
|
|
|
hrvStressPoints: _filterNewHrvStressPoints(
|
|
...
|
...
|
@@ -710,7 +717,8 @@ class HealthRawDataCoreService { |
|
|
|
return '当前非 Debug 模式,未记录本地上传日志';
|
|
|
|
}
|
|
|
|
|
|
|
|
HealthRawStressCalculationResult calculate({
|
|
|
|
static HealthRawStressCalculationResult calculate({
|
|
|
|
required int userId,
|
|
|
|
required List<HealthKitRawDataPoint> hrvPoints,
|
|
|
|
required List<HealthKitRawDataPoint> heartRatePoints,
|
|
|
|
required List<HealthKitRawDataPoint> restingHeartRatePoints,
|
|
...
|
...
|
@@ -721,7 +729,7 @@ class HealthRawDataCoreService { |
|
|
|
required int startTime,
|
|
|
|
required int endTime,
|
|
|
|
}) {
|
|
|
|
return HealthRawStressCalculator(userId: _userId).calculate(
|
|
|
|
return HealthRawStressCalculator(userId: userId).calculate(
|
|
|
|
hrvPoints: hrvPoints,
|
|
|
|
heartRatePoints: heartRatePoints,
|
|
|
|
restingHeartRatePoints: restingHeartRatePoints,
|
...
|
...
|
|