1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-08-26 01:43:59 +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().getDate(),
(byte) selectedUser.getBodyHeight(),
(byte) (((1 - selectedUser.getGender()) << 7) | activity)
(byte) (((selectedUser.isMale() ? 1 : 0) << 7) | activity)
});
} else {
// Get existing user information

View File

@@ -96,7 +96,7 @@ public class BluetoothMiScale2 extends BluetoothCommunication {
case 0:
// set scale units
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);
break;
case 1:

View File

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

View File

@@ -26,10 +26,11 @@ public class BFDeurenberg extends EstimatedFatMetric {
@Override
public float getFat(ScaleUser user, ScaleMeasurement data) {
final int gender = user.isMale() ? 1 : 0;
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_BIRTHDAY, formatDateTime.format(scaleUser.getBirthday()));
values.put(COLUMN_NAME_BODY_HEIGHT, scaleUser.getBodyHeight());
values.put(COLUMN_NAME_SCALE_UNIT, Converters.toInt(scaleUser.getScaleUnit()));
values.put(COLUMN_NAME_GENDER, scaleUser.getGender());
values.put(COLUMN_NAME_SCALE_UNIT, Converters.toWeightUnitInt(scaleUser.getScaleUnit()));
values.put(COLUMN_NAME_GENDER, Converters.toGenderInt(scaleUser.getGender()));
values.put(COLUMN_NAME_INITIAL_WEIGHT, scaleUser.getInitialWeight());
values.put(COLUMN_NAME_GOAL_WEIGHT, scaleUser.getGoalWeight());
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_BIRTHDAY, formatDateTime.format(scaleUser.getBirthday()));
values.put(COLUMN_NAME_BODY_HEIGHT, scaleUser.getBodyHeight());
values.put(COLUMN_NAME_SCALE_UNIT, Converters.toInt(scaleUser.getScaleUnit()));
values.put(COLUMN_NAME_GENDER, scaleUser.getGender());
values.put(COLUMN_NAME_SCALE_UNIT, Converters.toWeightUnitInt(scaleUser.getScaleUnit()));
values.put(COLUMN_NAME_GENDER, Converters.toGenderInt(scaleUser.getGender()));
values.put(COLUMN_NAME_INITIAL_WEIGHT, scaleUser.getInitialWeight());
values.put(COLUMN_NAME_GOAL_WEIGHT, scaleUser.getGoalWeight());
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)));
String birthday = cur.getString(cur.getColumnIndexOrThrow(COLUMN_NAME_BIRTHDAY));
scaleUser.setBodyHeight(cur.getInt(cur.getColumnIndexOrThrow(COLUMN_NAME_BODY_HEIGHT)));
scaleUser.setScaleUnit(Converters.fromInt(cur.getInt(cur.getColumnIndexOrThrow(COLUMN_NAME_SCALE_UNIT))));
scaleUser.setGender(cur.getInt(cur.getColumnIndexOrThrow(COLUMN_NAME_GENDER)));
scaleUser.setScaleUnit(Converters.fromWeightUnitInt(cur.getInt(cur.getColumnIndexOrThrow(COLUMN_NAME_SCALE_UNIT))));
scaleUser.setGender(Converters.fromGenderInt(cur.getInt(cur.getColumnIndexOrThrow(COLUMN_NAME_GENDER))));
double initial_weight = cur.getFloat(cur.getColumnIndexOrThrow(COLUMN_NAME_INITIAL_WEIGHT));
double goal_weight = cur.getFloat(cur.getColumnIndexOrThrow(COLUMN_NAME_GOAL_WEIGHT));
String goal_date = cur.getString(cur.getColumnIndexOrThrow(COLUMN_NAME_GOAL_DATE));

View File

@@ -42,7 +42,8 @@ public class ScaleUser {
@NonNull
private Converters.WeightUnit scaleUnit;
@ColumnInfo(name = "gender")
private int gender;
@NonNull
private Converters.Gender gender;
@ColumnInfo(name = "initialWeight")
private float initialWeight;
@ColumnInfo(name = "goalWeight")
@@ -55,7 +56,7 @@ public class ScaleUser {
birthday = new Date();
bodyHeight = -1;
scaleUnit = Converters.WeightUnit.KG;
gender = 0;
gender = Converters.Gender.MALE;
initialWeight = -1;
goalWeight = -1;
goalDate = new Date();
@@ -101,11 +102,11 @@ public class ScaleUser {
this.scaleUnit = scaleUnit;
}
public int getGender() {
public Converters.Gender getGender() {
return gender;
}
public void setGender(int gender) {
public void setGender(Converters.Gender gender) {
this.gender = gender;
}
@@ -126,9 +127,9 @@ public class ScaleUser {
}
public boolean isMale() {
if (gender == 0)
if (gender == Converters.Gender.MALE) {
return true;
}
return false;
}
@@ -162,9 +163,9 @@ public class ScaleUser {
public String toString()
{
return String.format(
"ID: %d, NAME: %s, BIRTHDAY: %s, BODY_HEIGHT: %d, SCALE_UNIT: %s, GENDER: %d, " +
"INITIAL_WEIGHT: %.2f, GOAL_WEIGHT: %.2f, GOAL_DATE: %s",
"ID: %d, NAME: %s, BIRTHDAY: %s, BODY_HEIGHT: %d, SCALE_UNIT: %s, " +
"GENDER: %s, INITIAL_WEIGHT: %.2f, GOAL_WEIGHT: %.2f, GOAL_DATE: %s",
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_ST = 0.157473f;
@@ -49,7 +51,7 @@ public class Converters {
}
@TypeConverter
public static WeightUnit fromInt(int unit) {
public static WeightUnit fromWeightUnitInt(int unit) {
switch (unit) {
case 1:
return WeightUnit.LB;
@@ -60,7 +62,7 @@ public class Converters {
}
@TypeConverter
public static int toInt(WeightUnit unit) {
public static int toWeightUnitInt(WeightUnit unit) {
switch (unit) {
case LB:
return 1;
@@ -70,6 +72,16 @@ public class Converters {
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) {
switch (unit) {
case LB:

View File

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

View File

@@ -26,19 +26,31 @@ public class ConvertersTest {
@Test
public void weightUnitTypeConverters() throws Exception {
assertEquals(0, Converters.toInt(Converters.WeightUnit.KG));
assertEquals(1, Converters.toInt(Converters.WeightUnit.LB));
assertEquals(2, Converters.toInt(Converters.WeightUnit.ST));
assertEquals(0, Converters.toWeightUnitInt(Converters.WeightUnit.KG));
assertEquals(1, Converters.toWeightUnitInt(Converters.WeightUnit.LB));
assertEquals(2, Converters.toWeightUnitInt(Converters.WeightUnit.ST));
assertEquals(Converters.WeightUnit.KG, Converters.fromInt(0));
assertEquals(Converters.WeightUnit.LB, Converters.fromInt(1));
assertEquals(Converters.WeightUnit.ST, Converters.fromInt(2));
assertEquals(Converters.WeightUnit.KG, Converters.fromWeightUnitInt(0));
assertEquals(Converters.WeightUnit.LB, Converters.fromWeightUnitInt(1));
assertEquals(Converters.WeightUnit.ST, Converters.fromWeightUnitInt(2));
assertEquals("kg", Converters.WeightUnit.KG.toString());
assertEquals("lb", Converters.WeightUnit.LB.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
public void weightConverters() throws Exception {
for (Converters.WeightUnit unit : Converters.WeightUnit.values()) {