1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-08-26 09:44:31 +02:00

Introduce an enum for gender

This commit is contained in:
Erik Johansson
2018-01-16 23:49:18 +01:00
parent 4b05f27a6e
commit b45f01d3eb
9 changed files with 58 additions and 32 deletions

View File

@@ -208,7 +208,7 @@ public class BluetoothBeurerBF700_800 extends BluetoothCommunication {
(byte) selectedUser.getBirthday().getMonth(), (byte) selectedUser.getBirthday().getMonth(),
(byte) selectedUser.getBirthday().getDate(), (byte) selectedUser.getBirthday().getDate(),
(byte) selectedUser.getBodyHeight(), (byte) selectedUser.getBodyHeight(),
(byte) (((1 - selectedUser.getGender()) << 7) | activity) (byte) (((selectedUser.isMale() ? 1 : 0) << 7) | activity)
}); });
} else { } else {
// Get existing user information // Get existing user information

View File

@@ -96,7 +96,7 @@ public class BluetoothMiScale2 extends BluetoothCommunication {
case 0: case 0:
// set scale units // set scale units
final ScaleUser selectedUser = OpenScale.getInstance(context).getSelectedScaleUser(); final ScaleUser selectedUser = OpenScale.getInstance(context).getSelectedScaleUser();
byte[] setUnitCmd = new byte[]{(byte)0x06, (byte)0x04, (byte)0x00, (byte) Converters.toInt(selectedUser.getScaleUnit())}; byte[] setUnitCmd = new byte[]{(byte)0x06, (byte)0x04, (byte)0x00, (byte) Converters.toWeightUnitInt(selectedUser.getScaleUnit())};
writeBytes(WEIGHT_CUSTOM_SERVICE, WEIGHT_CUSTOM_CONFIG, setUnitCmd); writeBytes(WEIGHT_CUSTOM_SERVICE, WEIGHT_CUSTOM_CONFIG, setUnitCmd);
break; break;
case 1: case 1:

View File

@@ -202,7 +202,7 @@ public class BluetoothSanitasSbf70 extends BluetoothCommunication {
(byte) selectedUser.getBirthday().getMonth(), (byte) selectedUser.getBirthday().getMonth(),
(byte) selectedUser.getBirthday().getDate(), (byte) selectedUser.getBirthday().getDate(),
(byte) selectedUser.getBodyHeight(), (byte) selectedUser.getBodyHeight(),
(byte) (((1 - selectedUser.getGender()) << 7) | activity) (byte) (((selectedUser.isMale() ? 1 : 0) << 7) | activity)
}); });
} else { } else {
// Get existing user information // Get existing user information

View File

@@ -26,10 +26,11 @@ public class BFDeurenberg extends EstimatedFatMetric {
@Override @Override
public float getFat(ScaleUser user, ScaleMeasurement data) { public float getFat(ScaleUser user, ScaleMeasurement data) {
final int gender = user.isMale() ? 1 : 0;
if (user.getAge(data.getDateTime()) >= 16) { if (user.getAge(data.getDateTime()) >= 16) {
return (1.2f * data.getBMI(user.getBodyHeight())) + (0.23f*user.getAge(data.getDateTime())) - (10.8f*(1-user.getGender())) - 5.4f; return (1.2f * data.getBMI(user.getBodyHeight())) + (0.23f*user.getAge(data.getDateTime())) - (10.8f * gender) - 5.4f;
} }
return (1.294f * data.getBMI(user.getBodyHeight())) + (0.20f*user.getAge(data.getDateTime())) - (11.4f*(1-user.getGender())) - 8.0f; return (1.294f * data.getBMI(user.getBodyHeight())) + (0.20f*user.getAge(data.getDateTime())) - (11.4f * gender) - 8.0f;
} }
} }

View File

@@ -112,8 +112,8 @@ public class ScaleUserDatabase extends SQLiteOpenHelper {
values.put(COLUMN_NAME_USER_NAME, scaleUser.getUserName()); values.put(COLUMN_NAME_USER_NAME, scaleUser.getUserName());
values.put(COLUMN_NAME_BIRTHDAY, formatDateTime.format(scaleUser.getBirthday())); values.put(COLUMN_NAME_BIRTHDAY, formatDateTime.format(scaleUser.getBirthday()));
values.put(COLUMN_NAME_BODY_HEIGHT, scaleUser.getBodyHeight()); values.put(COLUMN_NAME_BODY_HEIGHT, scaleUser.getBodyHeight());
values.put(COLUMN_NAME_SCALE_UNIT, Converters.toInt(scaleUser.getScaleUnit())); values.put(COLUMN_NAME_SCALE_UNIT, Converters.toWeightUnitInt(scaleUser.getScaleUnit()));
values.put(COLUMN_NAME_GENDER, scaleUser.getGender()); values.put(COLUMN_NAME_GENDER, Converters.toGenderInt(scaleUser.getGender()));
values.put(COLUMN_NAME_INITIAL_WEIGHT, scaleUser.getInitialWeight()); values.put(COLUMN_NAME_INITIAL_WEIGHT, scaleUser.getInitialWeight());
values.put(COLUMN_NAME_GOAL_WEIGHT, scaleUser.getGoalWeight()); values.put(COLUMN_NAME_GOAL_WEIGHT, scaleUser.getGoalWeight());
values.put(COLUMN_NAME_GOAL_DATE, formatDateTime.format(scaleUser.getGoalDate())); values.put(COLUMN_NAME_GOAL_DATE, formatDateTime.format(scaleUser.getGoalDate()));
@@ -145,8 +145,8 @@ public class ScaleUserDatabase extends SQLiteOpenHelper {
values.put(COLUMN_NAME_USER_NAME, scaleUser.getUserName()); values.put(COLUMN_NAME_USER_NAME, scaleUser.getUserName());
values.put(COLUMN_NAME_BIRTHDAY, formatDateTime.format(scaleUser.getBirthday())); values.put(COLUMN_NAME_BIRTHDAY, formatDateTime.format(scaleUser.getBirthday()));
values.put(COLUMN_NAME_BODY_HEIGHT, scaleUser.getBodyHeight()); values.put(COLUMN_NAME_BODY_HEIGHT, scaleUser.getBodyHeight());
values.put(COLUMN_NAME_SCALE_UNIT, Converters.toInt(scaleUser.getScaleUnit())); values.put(COLUMN_NAME_SCALE_UNIT, Converters.toWeightUnitInt(scaleUser.getScaleUnit()));
values.put(COLUMN_NAME_GENDER, scaleUser.getGender()); values.put(COLUMN_NAME_GENDER, Converters.toGenderInt(scaleUser.getGender()));
values.put(COLUMN_NAME_INITIAL_WEIGHT, scaleUser.getInitialWeight()); values.put(COLUMN_NAME_INITIAL_WEIGHT, scaleUser.getInitialWeight());
values.put(COLUMN_NAME_GOAL_WEIGHT, scaleUser.getGoalWeight()); values.put(COLUMN_NAME_GOAL_WEIGHT, scaleUser.getGoalWeight());
values.put(COLUMN_NAME_GOAL_DATE, formatDateTime.format(scaleUser.getGoalDate())); values.put(COLUMN_NAME_GOAL_DATE, formatDateTime.format(scaleUser.getGoalDate()));
@@ -214,8 +214,8 @@ public class ScaleUserDatabase extends SQLiteOpenHelper {
scaleUser.setUserName(cur.getString(cur.getColumnIndexOrThrow(COLUMN_NAME_USER_NAME))); scaleUser.setUserName(cur.getString(cur.getColumnIndexOrThrow(COLUMN_NAME_USER_NAME)));
String birthday = cur.getString(cur.getColumnIndexOrThrow(COLUMN_NAME_BIRTHDAY)); String birthday = cur.getString(cur.getColumnIndexOrThrow(COLUMN_NAME_BIRTHDAY));
scaleUser.setBodyHeight(cur.getInt(cur.getColumnIndexOrThrow(COLUMN_NAME_BODY_HEIGHT))); scaleUser.setBodyHeight(cur.getInt(cur.getColumnIndexOrThrow(COLUMN_NAME_BODY_HEIGHT)));
scaleUser.setScaleUnit(Converters.fromInt(cur.getInt(cur.getColumnIndexOrThrow(COLUMN_NAME_SCALE_UNIT)))); scaleUser.setScaleUnit(Converters.fromWeightUnitInt(cur.getInt(cur.getColumnIndexOrThrow(COLUMN_NAME_SCALE_UNIT))));
scaleUser.setGender(cur.getInt(cur.getColumnIndexOrThrow(COLUMN_NAME_GENDER))); scaleUser.setGender(Converters.fromGenderInt(cur.getInt(cur.getColumnIndexOrThrow(COLUMN_NAME_GENDER))));
double initial_weight = cur.getFloat(cur.getColumnIndexOrThrow(COLUMN_NAME_INITIAL_WEIGHT)); double initial_weight = cur.getFloat(cur.getColumnIndexOrThrow(COLUMN_NAME_INITIAL_WEIGHT));
double goal_weight = cur.getFloat(cur.getColumnIndexOrThrow(COLUMN_NAME_GOAL_WEIGHT)); double goal_weight = cur.getFloat(cur.getColumnIndexOrThrow(COLUMN_NAME_GOAL_WEIGHT));
String goal_date = cur.getString(cur.getColumnIndexOrThrow(COLUMN_NAME_GOAL_DATE)); String goal_date = cur.getString(cur.getColumnIndexOrThrow(COLUMN_NAME_GOAL_DATE));

View File

@@ -42,7 +42,8 @@ public class ScaleUser {
@NonNull @NonNull
private Converters.WeightUnit scaleUnit; private Converters.WeightUnit scaleUnit;
@ColumnInfo(name = "gender") @ColumnInfo(name = "gender")
private int gender; @NonNull
private Converters.Gender gender;
@ColumnInfo(name = "initialWeight") @ColumnInfo(name = "initialWeight")
private float initialWeight; private float initialWeight;
@ColumnInfo(name = "goalWeight") @ColumnInfo(name = "goalWeight")
@@ -55,7 +56,7 @@ public class ScaleUser {
birthday = new Date(); birthday = new Date();
bodyHeight = -1; bodyHeight = -1;
scaleUnit = Converters.WeightUnit.KG; scaleUnit = Converters.WeightUnit.KG;
gender = 0; gender = Converters.Gender.MALE;
initialWeight = -1; initialWeight = -1;
goalWeight = -1; goalWeight = -1;
goalDate = new Date(); goalDate = new Date();
@@ -101,11 +102,11 @@ public class ScaleUser {
this.scaleUnit = scaleUnit; this.scaleUnit = scaleUnit;
} }
public int getGender() { public Converters.Gender getGender() {
return gender; return gender;
} }
public void setGender(int gender) { public void setGender(Converters.Gender gender) {
this.gender = gender; this.gender = gender;
} }
@@ -126,9 +127,9 @@ public class ScaleUser {
} }
public boolean isMale() { public boolean isMale() {
if (gender == 0) if (gender == Converters.Gender.MALE) {
return true; return true;
}
return false; return false;
} }
@@ -162,9 +163,9 @@ public class ScaleUser {
public String toString() public String toString()
{ {
return String.format( return String.format(
"ID: %d, NAME: %s, BIRTHDAY: %s, BODY_HEIGHT: %d, SCALE_UNIT: %s, GENDER: %d, " + "ID: %d, NAME: %s, BIRTHDAY: %s, BODY_HEIGHT: %d, SCALE_UNIT: %s, " +
"INITIAL_WEIGHT: %.2f, GOAL_WEIGHT: %.2f, GOAL_DATE: %s", "GENDER: %s, INITIAL_WEIGHT: %.2f, GOAL_WEIGHT: %.2f, GOAL_DATE: %s",
id, userName, birthday.toString(), bodyHeight, scaleUnit.toString(), id, userName, birthday.toString(), bodyHeight, scaleUnit.toString(),
gender, initialWeight, goalWeight, goalDate.toString()); gender.toString().toLowerCase(), initialWeight, goalWeight, goalDate.toString());
} }
} }

View File

@@ -35,6 +35,8 @@ public class Converters {
} }
} }
public enum Gender { MALE, FEMALE }
private static float KG_LB = 2.20462f; private static float KG_LB = 2.20462f;
private static float KG_ST = 0.157473f; private static float KG_ST = 0.157473f;
@@ -49,7 +51,7 @@ public class Converters {
} }
@TypeConverter @TypeConverter
public static WeightUnit fromInt(int unit) { public static WeightUnit fromWeightUnitInt(int unit) {
switch (unit) { switch (unit) {
case 1: case 1:
return WeightUnit.LB; return WeightUnit.LB;
@@ -60,7 +62,7 @@ public class Converters {
} }
@TypeConverter @TypeConverter
public static int toInt(WeightUnit unit) { public static int toWeightUnitInt(WeightUnit unit) {
switch (unit) { switch (unit) {
case LB: case LB:
return 1; return 1;
@@ -70,6 +72,16 @@ public class Converters {
return 0; return 0;
} }
@TypeConverter
public static Gender fromGenderInt(int gender) {
return gender == 0 ? Gender.MALE : Gender.FEMALE;
}
@TypeConverter
public static int toGenderInt(Gender gender) {
return gender == Gender.MALE ? 0 : 1;
}
public static float toKilogram(float value, WeightUnit unit) { public static float toKilogram(float value, WeightUnit unit) {
switch (unit) { switch (unit) {
case LB: case LB:

View File

@@ -161,10 +161,10 @@ public class UserSettingsActivity extends Activity {
switch (scaleUser.getGender()) switch (scaleUser.getGender())
{ {
case 0: case MALE:
radioGender.check(R.id.btnRadioMale); radioGender.check(R.id.btnRadioMale);
break; break;
case 1: case FEMALE:
radioGender.check(R.id.btnRadioWoman); radioGender.check(R.id.btnRadioWoman);
break; break;
} }
@@ -312,8 +312,8 @@ public class UserSettingsActivity extends Activity {
scaleUser.setUserName(name); scaleUser.setUserName(name);
scaleUser.setBirthday(birthday); scaleUser.setBirthday(birthday);
scaleUser.setBodyHeight(body_height); scaleUser.setBodyHeight(body_height);
scaleUser.setScaleUnit(Converters.fromInt(scale_unit)); scaleUser.setScaleUnit(Converters.fromWeightUnitInt(scale_unit));
scaleUser.setGender(gender); scaleUser.setGender(Converters.fromGenderInt(gender));
scaleUser.setConvertedInitialWeight(initial_weight); scaleUser.setConvertedInitialWeight(initial_weight);
scaleUser.setGoalWeight(goal_weight); scaleUser.setGoalWeight(goal_weight);
scaleUser.setGoalDate(goal_date); scaleUser.setGoalDate(goal_date);

View File

@@ -26,19 +26,31 @@ public class ConvertersTest {
@Test @Test
public void weightUnitTypeConverters() throws Exception { public void weightUnitTypeConverters() throws Exception {
assertEquals(0, Converters.toInt(Converters.WeightUnit.KG)); assertEquals(0, Converters.toWeightUnitInt(Converters.WeightUnit.KG));
assertEquals(1, Converters.toInt(Converters.WeightUnit.LB)); assertEquals(1, Converters.toWeightUnitInt(Converters.WeightUnit.LB));
assertEquals(2, Converters.toInt(Converters.WeightUnit.ST)); assertEquals(2, Converters.toWeightUnitInt(Converters.WeightUnit.ST));
assertEquals(Converters.WeightUnit.KG, Converters.fromInt(0)); assertEquals(Converters.WeightUnit.KG, Converters.fromWeightUnitInt(0));
assertEquals(Converters.WeightUnit.LB, Converters.fromInt(1)); assertEquals(Converters.WeightUnit.LB, Converters.fromWeightUnitInt(1));
assertEquals(Converters.WeightUnit.ST, Converters.fromInt(2)); assertEquals(Converters.WeightUnit.ST, Converters.fromWeightUnitInt(2));
assertEquals("kg", Converters.WeightUnit.KG.toString()); assertEquals("kg", Converters.WeightUnit.KG.toString());
assertEquals("lb", Converters.WeightUnit.LB.toString()); assertEquals("lb", Converters.WeightUnit.LB.toString());
assertEquals("st", Converters.WeightUnit.ST.toString()); assertEquals("st", Converters.WeightUnit.ST.toString());
} }
@Test
public void genderTypeConverters() throws Exception {
assertEquals(0, Converters.toGenderInt(Converters.Gender.MALE));
assertEquals(1, Converters.toGenderInt(Converters.Gender.FEMALE));
assertEquals(Converters.Gender.MALE, Converters.fromGenderInt(0));
assertEquals(Converters.Gender.FEMALE, Converters.fromGenderInt(1));
assertEquals("MALE", Converters.Gender.MALE.toString());
assertEquals("FEMALE", Converters.Gender.FEMALE.toString());
}
@Test @Test
public void weightConverters() throws Exception { public void weightConverters() throws Exception {
for (Converters.WeightUnit unit : Converters.WeightUnit.values()) { for (Converters.WeightUnit unit : Converters.WeightUnit.values()) {