getAltitute method
Implementation
Stream<double> getAltitute() {
var barometerStream = barometer.getRawWithoutTimelimit();
List<double> temperatures = [];
temperature.getRawWithoutTimelimit().listen((event) {
temperatures.add(event);
});
double p0 = 1013.25;
Stream<double> altStream = barometerStream.map((event) {
double alt = 0;
double currentTempC = temperatures.isEmpty ? 15 : temperatures.last;
double currentTempK = currentTempC + 273.15;
double ph = event.hectpascal;
var pressureQuotient = ph / p0;
var exponent = 1 / 5.255;
var pressureValue = pow(pressureQuotient, exponent);
var temperatureValue = currentTempK / 0.0065;
alt = temperatureValue * (1 - pressureValue);
return alt;
});
var timestampAtLastCall = DateTime.now().millisecondsSinceEpoch;
return altStream.where((event) {
if (DateTime.now().millisecondsSinceEpoch - timestampAtLastCall > inMillis) {
timestampAtLastCall = DateTime.now().millisecondsSinceEpoch;
return true;
}
return false;
});
}