use of com.health.openscale.core.bodymetric.EstimatedFatMetric in project openScale by oliexdev.
the class OpenScale method addScaleData.
public int addScaleData(final ScaleMeasurement scaleMeasurement, boolean silent) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
if (scaleMeasurement.getUserId() == -1) {
if (prefs.getBoolean("smartUserAssign", false)) {
scaleMeasurement.setUserId(getSmartUserAssignment(scaleMeasurement.getWeight(), 15.0f));
} else {
scaleMeasurement.setUserId(getSelectedScaleUser().getId());
}
// don't add scale data if no user is selected
if (scaleMeasurement.getUserId() == -1) {
return -1;
}
}
MeasurementViewSettings settings = new MeasurementViewSettings(prefs, WaterMeasurementView.KEY);
if (settings.isEnabled() && settings.isEstimationEnabled()) {
EstimatedWaterMetric waterMetric = EstimatedWaterMetric.getEstimatedMetric(EstimatedWaterMetric.FORMULA.valueOf(settings.getEstimationFormula()));
scaleMeasurement.setWater(waterMetric.getWater(getScaleUser(scaleMeasurement.getUserId()), scaleMeasurement));
}
settings = new MeasurementViewSettings(prefs, LBWMeasurementView.KEY);
if (settings.isEnabled() && settings.isEstimationEnabled()) {
EstimatedLBWMetric lbwMetric = EstimatedLBWMetric.getEstimatedMetric(EstimatedLBWMetric.FORMULA.valueOf(settings.getEstimationFormula()));
scaleMeasurement.setLbw(lbwMetric.getLBW(getScaleUser(scaleMeasurement.getUserId()), scaleMeasurement));
}
settings = new MeasurementViewSettings(prefs, FatMeasurementView.KEY);
if (settings.isEnabled() && settings.isEstimationEnabled()) {
EstimatedFatMetric fatMetric = EstimatedFatMetric.getEstimatedMetric(EstimatedFatMetric.FORMULA.valueOf(settings.getEstimationFormula()));
scaleMeasurement.setFat(fatMetric.getFat(getScaleUser(scaleMeasurement.getUserId()), scaleMeasurement));
}
if (measurementDAO.insert(scaleMeasurement) != -1) {
ScaleUser scaleUser = getScaleUser(scaleMeasurement.getUserId());
final java.text.DateFormat dateFormat = DateFormat.getDateFormat(context);
final java.text.DateFormat timeFormat = DateFormat.getTimeFormat(context);
final Date dateTime = scaleMeasurement.getDateTime();
final Converters.WeightUnit unit = scaleUser.getScaleUnit();
if (!silent) {
String infoText = String.format(context.getString(R.string.info_new_data_added), scaleMeasurement.getConvertedWeight(unit), unit.toString(), dateFormat.format(dateTime) + " " + timeFormat.format(dateTime), scaleUser.getUserName());
Toast.makeText(context, infoText, Toast.LENGTH_LONG).show();
}
alarmHandler.entryChanged(context, scaleMeasurement);
updateScaleData();
} else {
if (!silent) {
Toast.makeText(context, context.getString(R.string.info_new_data_duplicated), Toast.LENGTH_LONG).show();
}
}
return scaleMeasurement.getUserId();
}
use of com.health.openscale.core.bodymetric.EstimatedFatMetric in project openScale by oliexdev.
the class OpenScale method addScaleMeasurement.
public int addScaleMeasurement(final ScaleMeasurement scaleMeasurement, boolean silent) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
// Check user id and do a smart user assign if option is enabled
if (scaleMeasurement.getUserId() == -1) {
if (prefs.getBoolean("smartUserAssign", false)) {
scaleMeasurement.setUserId(getSmartUserAssignment(scaleMeasurement.getWeight(), 15.0f));
} else {
scaleMeasurement.setUserId(getSelectedScaleUser().getId());
}
// don't add scale data if no user is selected
if (scaleMeasurement.getUserId() == -1) {
Timber.e("to be added measurement are thrown away because no user is selected");
return -1;
}
}
// Assisted weighing
if (getScaleUser(scaleMeasurement.getUserId()).isAssistedWeighing()) {
int assistedWeighingRefUserId = prefs.getInt("assistedWeighingRefUserId", -1);
if (assistedWeighingRefUserId != -1) {
ScaleMeasurement lastRefScaleMeasurement = getLastScaleMeasurement(assistedWeighingRefUserId);
if (lastRefScaleMeasurement != null) {
float refWeight = lastRefScaleMeasurement.getWeight();
float diffToRef = scaleMeasurement.getWeight() - refWeight;
scaleMeasurement.setWeight(diffToRef);
}
} else {
Timber.e("assisted weighing reference user id is -1");
}
}
// Calculate the amputation correction factor for the weight, if available
scaleMeasurement.setWeight((scaleMeasurement.getWeight() * 100.0f) / getScaleUser(scaleMeasurement.getUserId()).getAmputationCorrectionFactor());
// If option is enabled then calculate body measurements from generic formulas
MeasurementViewSettings settings = new MeasurementViewSettings(prefs, WaterMeasurementView.KEY);
if (settings.isEnabled() && settings.isEstimationEnabled()) {
EstimatedWaterMetric waterMetric = EstimatedWaterMetric.getEstimatedMetric(EstimatedWaterMetric.FORMULA.valueOf(settings.getEstimationFormula()));
scaleMeasurement.setWater(waterMetric.getWater(getScaleUser(scaleMeasurement.getUserId()), scaleMeasurement));
}
settings = new MeasurementViewSettings(prefs, FatMeasurementView.KEY);
if (settings.isEnabled() && settings.isEstimationEnabled()) {
EstimatedFatMetric fatMetric = EstimatedFatMetric.getEstimatedMetric(EstimatedFatMetric.FORMULA.valueOf(settings.getEstimationFormula()));
scaleMeasurement.setFat(fatMetric.getFat(getScaleUser(scaleMeasurement.getUserId()), scaleMeasurement));
}
// Must be after fat estimation as one formula is based on fat
settings = new MeasurementViewSettings(prefs, LBMMeasurementView.KEY);
if (settings.isEnabled() && settings.isEstimationEnabled()) {
EstimatedLBMMetric lbmMetric = EstimatedLBMMetric.getEstimatedMetric(EstimatedLBMMetric.FORMULA.valueOf(settings.getEstimationFormula()));
scaleMeasurement.setLbm(lbmMetric.getLBM(getScaleUser(scaleMeasurement.getUserId()), scaleMeasurement));
}
// Insert measurement into the database, check return if it was successful inserted
if (measurementDAO.insert(scaleMeasurement) != -1) {
Timber.d("Added measurement: %s", scaleMeasurement);
if (!silent) {
ScaleUser scaleUser = getScaleUser(scaleMeasurement.getUserId());
final java.text.DateFormat dateFormat = DateFormat.getDateFormat(context);
final java.text.DateFormat timeFormat = DateFormat.getTimeFormat(context);
final Date dateTime = scaleMeasurement.getDateTime();
final Converters.WeightUnit unit = scaleUser.getScaleUnit();
String infoText = String.format(context.getString(R.string.info_new_data_added), Converters.fromKilogram(scaleMeasurement.getWeight(), unit), unit.toString(), dateFormat.format(dateTime) + " " + timeFormat.format(dateTime), scaleUser.getUserName());
runUiToastMsg(infoText);
}
syncInsertMeasurement(scaleMeasurement);
alarmHandler.entryChanged(context, scaleMeasurement);
triggerWidgetUpdate();
} else {
Timber.d("to be added measurement is thrown away because measurement with the same date and time already exist");
if (!silent) {
runUiToastMsg(context.getString(R.string.info_new_data_duplicated));
}
}
return scaleMeasurement.getUserId();
}
Aggregations