@ -11,6 +11,7 @@ class HealthConnectHelper extends WatchHelper {
final Health health = Health ( ) ;
final List < HealthDataType > _healthPermissions = [
HealthDataType . ACTIVE_ENERGY_BURNED ,
HealthDataType . HEART_RATE ,
HealthDataType . STEPS ,
HealthDataType . BLOOD_OXYGEN ,
@ -24,10 +25,11 @@ class HealthConnectHelper extends WatchHelper {
@ override
FutureOr < void > getHeartRate ( ) async {
try {
final types = [ HealthDataType . HEART_RATE ] ;
final types = HealthDataType . HEART_RATE ;
final endDate = DateTime . now ( ) ;
/ / final startDate = endDate . subtract ( Duration ( days: 365 ) ) ;
final startDate = endDate . subtract ( Duration ( days: 365 ) ) ;
final data = await ge tData( startDate , endDate , types ) ;
final data = await ge tHear tData( startDate , endDate , types ) ;
addDataToMap ( " heartRate " , data ) ;
} catch ( e ) {
print ( ' Error getting heart rate: $ e ' ) ;
@ -37,7 +39,7 @@ class HealthConnectHelper extends WatchHelper {
@ override
FutureOr < void > getSleep ( ) async {
try {
final types = [ HealthDataType . SLEEP_IN_BED ] ;
final types = HealthDataType . SLEEP_IN_BED ;
final endDate = DateTime . now ( ) ;
final startDate = endDate . subtract ( Duration ( days: 365 ) ) ;
final data = await getData ( startDate , endDate , types ) ;
@ -50,7 +52,7 @@ class HealthConnectHelper extends WatchHelper {
@ override
FutureOr < void > getSteps ( ) async {
try {
final types = [ HealthDataType . STEPS ] ;
final types = HealthDataType . STEPS ;
final endDate = DateTime . now ( ) ;
final startDate = endDate . subtract ( Duration ( days: 365 ) ) ;
final data = await getData ( startDate , endDate , types ) ;
@ -64,7 +66,7 @@ class HealthConnectHelper extends WatchHelper {
@ override
Future < void > getActivity ( ) async {
try {
final types = [ HealthDataType . ACTIVE_ENERGY_BURNED ] ;
final types = HealthDataType . ACTIVE_ENERGY_BURNED ;
final endDate = DateTime . now ( ) ;
final startDate = endDate . subtract ( Duration ( days: 365 ) ) ;
final data = await getData ( startDate , endDate , types ) ;
@ -77,17 +79,17 @@ class HealthConnectHelper extends WatchHelper {
@ override
Future < dynamic > retrieveData ( ) async {
return mappedData ;
return Result. value ( getMappedData ( ) ) ;
}
@ override
Future < dynamic > getBloodOxygen ( ) async {
try {
final types = [ HealthDataType . BLOOD_OXYGEN ] ;
final types = HealthDataType . BLOOD_OXYGEN ;
final endDate = DateTime . now ( ) ;
final startDate = endDate . subtract ( Duration ( days: 365 ) ) ;
final data = await getData ( startDate , endDate , types ) ;
addDataToMap ( " bloodOxygen " , data ) ;
addDataToMap BloodOxygen ( " bloodOxygen " , data ) ;
} catch ( e ) {
print ( ' Error getting blood oxygen: $ e ' ) ;
}
@ -96,7 +98,7 @@ class HealthConnectHelper extends WatchHelper {
@ override
Future < dynamic > getBodyTemperature ( ) async {
try {
final types = [ HealthDataType . BODY_TEMPERATURE ] ;
final types = HealthDataType . BODY_TEMPERATURE ;
final endDate = DateTime . now ( ) ;
final startDate = endDate . subtract ( Duration ( days: 365 ) ) ;
final data = await getData ( startDate , endDate , types ) ;
@ -109,7 +111,7 @@ class HealthConnectHelper extends WatchHelper {
@ override
FutureOr < void > getDistance ( ) async {
try {
final types = [ HealthDataType . DISTANCE_WALKING_RUNNING ] ;
final types = HealthDataType . DISTANCE_WALKING_RUNNING ;
final endDate = DateTime . now ( ) ;
final startDate = endDate . subtract ( Duration ( days: 365 ) ) ;
final data = await getData ( startDate , endDate , types ) ;
@ -141,7 +143,8 @@ class HealthConnectHelper extends WatchHelper {
startDate: startTime ,
endDate: endTime ,
types: [ type ] ,
interval: 86400 ,
/ / interval: 86400 ,
interval: 3600 ,
) ;
}
@ -150,9 +153,9 @@ class HealthConnectHelper extends WatchHelper {
for ( var point in data ) {
if ( point . value is NumericHealthValue ) {
final numericValue = ( point . value as NumericHealthValue ) . numericValue ;
point . value = NumericHealthValue (
numericValue: numericValue * 100 ,
) ;
/ / point . value = NumericHealthValue (
/ / numericValue: numericValue * 100 ,
/ / ) ;
Vitals vitals = Vitals (
value: ( point . value as NumericHealthValue ) . numericValue . toStringAsFixed ( 2 ) ,
timestamp: point . dateFrom . toString ( )
@ -161,4 +164,30 @@ class HealthConnectHelper extends WatchHelper {
}
}
}
void addDataToMapBloodOxygen ( String s , data ) {
mappedData [ s ] = [ ] ;
for ( var point in data ) {
if ( point . value is NumericHealthValue ) {
final numericValue = ( point . value as NumericHealthValue ) . numericValue ;
point . value = NumericHealthValue (
numericValue: numericValue * 100 ,
) ;
Vitals vitals = Vitals ( value: ( point . value as NumericHealthValue ) . numericValue . toStringAsFixed ( 2 ) , timestamp: point . dateFrom . toString ( ) ) ;
mappedData [ s ] ? . add ( vitals ) ;
}
}
}
getMappedData ( ) {
return " { \" heartRate \" : ${ mappedData [ " heartRate " ] ? ? [ ] } , \" sleep \" : ${ mappedData [ " sleep " ] ? ? [ ] } , \" steps \" : ${ mappedData [ " steps " ] ? ? [ ] } , \" activity \" : ${ mappedData [ " activity " ] ? ? [ ] } , \" bloodOxygen \" : ${ mappedData [ " bloodOxygen " ] ? ? [ ] } , \" bodyTemperature \" : ${ mappedData [ " bodyTemperature " ] ? ? [ ] } , \" distance \" : ${ mappedData [ " distance " ] ? ? [ ] } } " ;
}
getHeartData ( DateTime startDate , DateTime endDate , HealthDataType types ) async {
return await health . getHealthDataFromTypes (
startTime: startDate ,
endTime: endDate ,
types: [ types ] ,
) ;
}
}