Gadgetbridge/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/ActivityUser.java

102 lines
3.4 KiB
Java
Raw Normal View History

package nodomain.freeyourgadget.gadgetbridge.model;
import java.util.Calendar;
2016-05-13 23:47:47 +02:00
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
2016-05-13 23:47:47 +02:00
import nodomain.freeyourgadget.gadgetbridge.util.DateTimeUtils;
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
/**
* Class holding the common user information needed by most activity trackers
*/
public class ActivityUser {
2016-05-13 23:47:47 +02:00
private String activityUserName;
private Integer activityUserGender;
private Integer activityUserYearOfBirth;
private Integer activityUserHeightCm;
private Integer activityUserWeightKg;
private Integer activityUserSleepDuration;
2016-05-13 23:47:47 +02:00
private static final String defaultUserName = "gadgetbridge-user";
public static final int defaultUserGender = 0;
public static final int defaultUserYearOfBirth = 0;
public static final int defaultUserAge = 0;
public static final int defaultUserHeightCm = 175;
public static final int defaultUserWeightKg = 70;
public static final int defaultUserSleepDuration = 7;
2016-05-13 23:47:47 +02:00
public static final String PREF_USER_NAME = "mi_user_alias";
public static final String PREF_USER_YEAR_OF_BIRTH = "activity_user_year_of_birth";
public static final String PREF_USER_GENDER = "activity_user_gender";
public static final String PREF_USER_HEIGHT_CM = "activity_user_height_cm";
public static final String PREF_USER_WEIGHT_KG = "activity_user_weight_kg";
public static final String PREF_USER_SLEEP_DURATION = "activity_user_sleep_duration";
2016-05-13 23:47:47 +02:00
public ActivityUser() {
fetchPreferences();
}
public String getName() {
return activityUserName;
}
public int getWeightKg() {
return activityUserWeightKg;
}
2016-05-13 23:47:47 +02:00
public int getGender() {
return activityUserGender;
}
2016-05-13 23:47:47 +02:00
public int getYearOfBirth() {
return activityUserYearOfBirth;
}
2016-05-13 23:47:47 +02:00
public int getHeightCm() {
return activityUserHeightCm;
}
/**
* @return the user defined sleep duration or the default value when none is set or the stored
* value is out of any logical bounds.
*/
2016-05-13 23:47:47 +02:00
public int getSleepDuration() {
if (activityUserSleepDuration < 1 || activityUserSleepDuration > 24) {
activityUserSleepDuration = defaultUserSleepDuration;
}
return activityUserSleepDuration;
}
2016-05-13 23:47:47 +02:00
public int getAge() {
int userYear = getYearOfBirth();
int age = 25;
if (userYear > 1900) {
age = Calendar.getInstance().get(Calendar.YEAR) - userYear;
if (age <= 0) {
age = 25;
}
}
return age;
}
private void fetchPreferences() {
Prefs prefs = GBApplication.getPrefs();
2016-05-13 23:47:47 +02:00
activityUserName = prefs.getString(PREF_USER_NAME, defaultUserName);
activityUserGender = prefs.getInt(PREF_USER_GENDER, defaultUserGender);
activityUserHeightCm = prefs.getInt(PREF_USER_HEIGHT_CM, defaultUserHeightCm);
activityUserWeightKg = prefs.getInt(PREF_USER_WEIGHT_KG, defaultUserWeightKg);
activityUserYearOfBirth = prefs.getInt(PREF_USER_YEAR_OF_BIRTH, defaultUserYearOfBirth);
activityUserSleepDuration = prefs.getInt(PREF_USER_SLEEP_DURATION, defaultUserSleepDuration);
}
2016-05-13 23:47:47 +02:00
public Date getUserBirthday() {
Calendar cal = DateTimeUtils.getCalendarUTC();
cal.set(GregorianCalendar.YEAR, getYearOfBirth());
return cal.getTime();
}
}