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:
@@ -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
|
||||
|
@@ -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:
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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));
|
||||
|
@@ -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());
|
||||
}
|
||||
}
|
||||
|
@@ -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:
|
||||
|
@@ -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);
|
||||
|
@@ -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()) {
|
||||
|
Reference in New Issue
Block a user