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