1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-08-13 12:14:19 +02:00

Support old Yunmai premium 1 (#519)

Support old Yunmai premium 1
This commit is contained in:
Sunguk Lee
2019-11-29 01:49:45 +09:00
committed by OliE
parent c30e34e4b3
commit fb2f898709
3 changed files with 27 additions and 2 deletions

View File

@@ -96,7 +96,7 @@ public class BluetoothFactory {
if (name.startsWith("SANITAS SBF70".toLowerCase(Locale.US)) || name.startsWith("sbf75")) {
return new BluetoothBeurerSanitas(context, BluetoothBeurerSanitas.DeviceType.SANITAS_SBF70_70);
}
if (deviceName.startsWith("YUNMAI-SIGNAL-") || deviceName.startsWith("YUNMAI-ISM")) {
if (deviceName.startsWith("YUNMAI-SIGNAL") || deviceName.startsWith("YUNMAI-ISM")) {
return new BluetoothYunmaiSE_Mini(context, true);
}
if (deviceName.startsWith("YUNMAI-ISSE")) {

View File

@@ -130,8 +130,15 @@ public class BluetoothYunmaiSE_Mini extends BluetoothCommunication {
}
YunmaiLib yunmaiLib = new YunmaiLib(sex, scaleUser.getBodyHeight());
float bodyFat = Converters.fromUnsignedInt16Be(weightBytes, 17) / 100.0f;
float bodyFat;
int resistance = Converters.fromUnsignedInt16Be(weightBytes, 15);
if (weightBytes[1] >= (byte)0x1E) {
Timber.d("Extract the fat value from received bytes");
bodyFat = Converters.fromUnsignedInt16Be(weightBytes, 17) / 100.0f;
} else {
Timber.d("Calculate the fat value using the Yunmai lib");
bodyFat = yunmaiLib.getFat(scaleUser.getAge(), weight, resistance);
}
if (bodyFat != 0) {
scaleBtData.setFat(bodyFat);

View File

@@ -29,6 +29,24 @@ public class YunmaiLib {
return ((100.0f - bodyFat) * 0.726f * 100.0f + 0.5f) / 100.0f;
}
public float getFat(int age, float weight, int resistance) {
// for < 0x1e version devices
float fat;
float r = (resistance - 100.0f) / 100.0f;
float h = height / 100.0f;
if (this.sex == 1) {
fat = (weight * 1.5f / h / h) + (age * 0.08f) - 10.8f;
} else {
fat = (weight * 1.5f / h / h) + (age * 0.08f);
}
fat = (fat - 7.4f) + r;
return fat;
}
public float getMuscle(float bodyFat) {
float muscle;
muscle = (100.0f - bodyFat) * 0.67f;