writeAudiogram method
Saves audiogram into Apple Health. Not supported on Android.
Returns true if successful, false otherwise.
Parameters:
frequencies
- array of frequencies of the testleftEarSensitivities
threshold in decibel for the left earrightEarSensitivities
threshold in decibel for the left earstartTime
- the start time when the audiogram is measured. It must be equal to or earlier thanendTime
.endTime
- the end time when the audiogram is measured. It must be equal to or later thanstartTime
. Simply setendTime
equal tostartTime
if the audiogram is measured only at a specific point in time (default).metadata
- optional map of keys, both HKMetadataKeyExternalUUID and HKMetadataKeyDeviceName are required
Implementation
Future<bool> writeAudiogram({
required List<double> frequencies,
required List<double> leftEarSensitivities,
required List<double> rightEarSensitivities,
required DateTime startTime,
DateTime? endTime,
Map<String, dynamic>? metadata,
}) async {
if (frequencies.isEmpty ||
leftEarSensitivities.isEmpty ||
rightEarSensitivities.isEmpty) {
throw ArgumentError(
"frequencies, leftEarSensitivities and rightEarSensitivities can't be empty");
}
if (frequencies.length != leftEarSensitivities.length ||
rightEarSensitivities.length != leftEarSensitivities.length) {
throw ArgumentError(
"frequencies, leftEarSensitivities and rightEarSensitivities need to be of the same length");
}
endTime ??= startTime;
if (startTime.isAfter(endTime)) {
throw ArgumentError("startTime must be equal or earlier than endTime");
}
if (Platform.isAndroid) {
throw UnsupportedError("writeAudiogram is not supported on Android");
}
Map<String, dynamic> args = {
'frequencies': frequencies,
'leftEarSensitivities': leftEarSensitivities,
'rightEarSensitivities': rightEarSensitivities,
'dataTypeKey': HealthDataType.AUDIOGRAM.name,
'startTime': startTime.millisecondsSinceEpoch,
'endTime': endTime.millisecondsSinceEpoch,
'metadata': metadata,
};
return await _channel.invokeMethod('writeAudiogram', args) == true;
}