Browse Source

通过八电极体脂秤demo代码

master
陈福行 4 weeks ago
parent
commit
c1c61110cc

+ 11
- 1
app/src/main/java/aicare/net/cn/sdk/ailinksdkdemoandroid/base/BleBaseActivity.java View File

} }





/**
* 设置标题
*
* @param title 标题
*/
public void setTitleData(String title) {
ActionBar supportActionBar = getSupportActionBar();
if (supportActionBar != null) {
supportActionBar.setTitle(title);
}
}


/** /**
* 连接设备 * 连接设备

app/src/main/java/aicare/net/cn/sdk/ailinksdkdemoandroid/modules/eight_bodyfat/EightBodyfatAdc.java → app/src/main/java/aicare/net/cn/sdk/ailinksdkdemoandroid/modules/eight_bodyfat/EightBodyFatAdc.java View File

package aicare.net.cn.sdk.ailinksdkdemoandroid.modules.eight_bodyfat; package aicare.net.cn.sdk.ailinksdkdemoandroid.modules.eight_bodyfat;


public class EightBodyfatAdc {
public class EightBodyFatAdc {




/** /**

+ 233
- 65
app/src/main/java/aicare/net/cn/sdk/ailinksdkdemoandroid/modules/eight_bodyfat/EightBodyfatActivity.java View File

import android.view.View; import android.view.View;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.CompoundButton; import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.ListView; import android.widget.ListView;
import android.widget.RadioButton; import android.widget.RadioButton;


import androidx.annotation.Nullable; import androidx.annotation.Nullable;


import com.holtek.libHTBodyfat.HTBodyBasicInfo;
import com.pingwang.bluetoothlib.bean.SupportUnitBean; import com.pingwang.bluetoothlib.bean.SupportUnitBean;
import com.pingwang.bluetoothlib.device.BleDevice; import com.pingwang.bluetoothlib.device.BleDevice;
import com.pingwang.bluetoothlib.listener.OnCallbackBle; import com.pingwang.bluetoothlib.listener.OnCallbackBle;


import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Locale;


import aicare.net.cn.sdk.ailinksdkdemoandroid.R; import aicare.net.cn.sdk.ailinksdkdemoandroid.R;
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity;
import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.eight_bodyfat.dual_band.UserInfoBean;
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.EightBodyFatAlgorithms; import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.EightBodyFatAlgorithms;
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.EightBodyFatBean; import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.EightBodyFatBean;
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.L; import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.L;
import cn.net.aicare.modulelibrary.module.EightBodyfatscale.EightBodyFatBleDeviceData; import cn.net.aicare.modulelibrary.module.EightBodyfatscale.EightBodyFatBleDeviceData;
import cn.net.aicare.modulelibrary.module.EightBodyfatscale.EightBodyFatMcuDeviceData;
import cn.net.aicare.modulelibrary.module.EightBodyfatscale.EightBodyFatUtil; import cn.net.aicare.modulelibrary.module.EightBodyfatscale.EightBodyFatUtil;


/** /**
* 八电极秤
* 八电极秤 (单频APP算法)
*/ */
public class EightBodyfatActivity extends BleBaseActivity implements View.OnClickListener, OnCallbackBle, EightBodyFatBleDeviceData.EightBodyFatCallback { public class EightBodyfatActivity extends BleBaseActivity implements View.OnClickListener, OnCallbackBle, EightBodyFatBleDeviceData.EightBodyFatCallback {


private String mAddress; private String mAddress;
private EightBodyFatBleDeviceData mEightBodyFatBleDeviceData; private EightBodyFatBleDeviceData mEightBodyFatBleDeviceData;
private RadioButton kg, jing, stlb, lb, C, F; private RadioButton kg, jing, stlb, lb, C, F;
private UserInfoBean mUserInfoBean;
private EditText et_weight, et_height, et_age, et_sex;


@Override @Override
protected void onCreate(@Nullable Bundle savedInstanceState) { protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_eight_body_fata); setContentView(R.layout.activity_eight_body_fata);
mAddress = getIntent().getStringExtra("mac"); mAddress = getIntent().getStringExtra("mac");
init();

initView();
initData();
initListener();
setTitleData("八电极秤 APP算法:0x" + Integer.toHexString(EightBodyFatUtil.EIGHT_BODY_FAT_SCALE));
// test();

}

private void test() {
weight = 60;
if (mEightBodyFatAdc == null) {
mEightBodyFatAdc = new EightBodyFatAdc();
mEightBodyFatAdc.setAlgorithms(0x20);
}
mEightBodyFatAdc.setAdcFoot(5784349);
mEightBodyFatAdc.setAdcHand(5121114);
mEightBodyFatAdc.setAdcLeftHand(12854746);
mEightBodyFatAdc.setAdcRightHand(15738341);
mEightBodyFatAdc.setAdcLeftFoot(1074604);
mEightBodyFatAdc.setAdcRightFoot(13046299);
mEightBodyFatAdc.setAdcLeftBody(7480094);
mEightBodyFatAdc.setAdcRightBody(7480094);
kaimengJieMi(mEightBodyFatAdc, mUserInfoBean);
}


private void initData() {
initUserInfo();
loglist = new ArrayList<>(); loglist = new ArrayList<>();
listAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, loglist); listAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, loglist);
log_list.setAdapter(listAdapter); log_list.setAdapter(listAdapter);

// weight = 60;
// if (mEightBodyfatAdc == null) {
// mEightBodyfatAdc = new EightBodyfatAdc();
// }
// mEightBodyfatAdc.setAdcFoot(5784349);
// mEightBodyfatAdc.setAdcHand(5121114);
// mEightBodyfatAdc.setAdcLeftHand(12854746);
// mEightBodyfatAdc.setAdcRightHand(15738341);
// mEightBodyfatAdc.setAdcLeftFoot(1074604);
// mEightBodyfatAdc.setAdcRightFoot(13046299);
// mEightBodyfatAdc.setAdcLeftBody(7480094);
// mEightBodyfatAdc.setAdcRightBody(7480094);
// kaimengJieMi(mEightBodyfatAdc);

} }


/**
* 初始化用户信息
*/
private void initUserInfo() {
String weightKg = et_weight.getText().toString().trim();
String height = et_height.getText().toString().trim();
String age = et_age.getText().toString().trim();
String sex = et_sex.getText().toString().trim();
if (mUserInfoBean == null) {
mUserInfoBean = new UserInfoBean();
mUserInfoBean.setUserId(1);
mUserInfoBean.setUserType(0);
}
mUserInfoBean.setAge(Integer.parseInt(age));
mUserInfoBean.setSex(Integer.parseInt(sex));
mUserInfoBean.setHeightCm(Integer.parseInt(height));
mUserInfoBean.setWeightKg(Float.parseFloat(weightKg));
}


private void init() {
private void initView() {
et_weight = findViewById(R.id.et_weight);
et_height = findViewById(R.id.et_height);
et_age = findViewById(R.id.et_age);
et_sex = findViewById(R.id.et_sex);
log_list = findViewById(R.id.log_list); log_list = findViewById(R.id.log_list);
kg = findViewById(R.id.kg); kg = findViewById(R.id.kg);
jing = findViewById(R.id.jin); jing = findViewById(R.id.jin);
lb = findViewById(R.id.lb); lb = findViewById(R.id.lb);
C = findViewById(R.id.c); C = findViewById(R.id.c);
F = findViewById(R.id.f); F = findViewById(R.id.f);
}


private void initListener() {
findViewById(R.id.support_unit).setOnClickListener(this); findViewById(R.id.support_unit).setOnClickListener(this);
findViewById(R.id.btn_update).setOnClickListener(this);
kg.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { kg.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override @Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {


@Override @Override
public void onServiceSuccess() { public void onServiceSuccess() {
loglist.add(0, "绑定服务成功");
addLog("绑定服务成功");
if (mAILinkBleManager != null) { if (mAILinkBleManager != null) {
mAILinkBleManager.setOnCallbackBle(this); mAILinkBleManager.setOnCallbackBle(this);
BleDevice bleDevice = mAILinkBleManager.getBleDevice(mAddress); BleDevice bleDevice = mAILinkBleManager.getBleDevice(mAddress);
if (v.getId() == R.id.support_unit) { if (v.getId() == R.id.support_unit) {
if (mEightBodyFatBleDeviceData != null) if (mEightBodyFatBleDeviceData != null)
mEightBodyFatBleDeviceData.getUnitList(); mEightBodyFatBleDeviceData.getUnitList();
} else if (v.getId() == R.id.btn_update) {
initUserInfo();
addLog("更新用户信息");
} }
} }




} }


loglist.add(0, adc);
addLog(adc);
break; break;
case EightBodyFatUtil.HEART_RATE: case EightBodyFatUtil.HEART_RATE:
switch (typeState) { switch (typeState) {
case EightBodyFatUtil.HEART_RATE_MEASUREMENT: case EightBodyFatUtil.HEART_RATE_MEASUREMENT:
//心率测量完成 //心率测量完成
loglist.add(0, "心率测量中");
addLog("心率测量中");
break; break;
case EightBodyFatUtil.HEART_RATE_SUCCESS: case EightBodyFatUtil.HEART_RATE_SUCCESS:
loglist.add(0, "心率测量成功");
addLog("心率测量成功");
//心率测量成功 //心率测量成功
break; break;
case EightBodyFatUtil.HEART_RATE_FAILED: case EightBodyFatUtil.HEART_RATE_FAILED:
loglist.add(0, "心率测量失败");
addLog("心率测量失败");
//心率测量失败 //心率测量失败
break; break;
} }
break; break;
case EightBodyFatUtil.TEMP_MEASUREMENT: case EightBodyFatUtil.TEMP_MEASUREMENT:
loglist.add(0, "测量温度");
addLog("测量温度");
break; break;
case EightBodyFatUtil.MEASUREMENT_END: case EightBodyFatUtil.MEASUREMENT_END:
loglist.add(0, "测量完成");
addLog("测量完成");
//测量完成 //测量完成
if (mEightBodyfatAdc != null) {
kaimengJieMi(mEightBodyfatAdc);
if (mEightBodyFatAdc != null) {
kaimengJieMi(mEightBodyFatAdc, mUserInfoBean);
} }


break; break;
case EightBodyFatUtil.APP_CMD_CALIBRATION: case EightBodyFatUtil.APP_CMD_CALIBRATION:
//校验 //校验
if (result == EightBodyFatUtil.SUCCESS) { if (result == EightBodyFatUtil.SUCCESS) {
loglist.add(0, "校验成功");
addLog("校验成功");
} else if (result == EightBodyFatUtil.FAILED) { } else if (result == EightBodyFatUtil.FAILED) {
loglist.add(0, "校验失败");
addLog("校验失败");
} else { } else {
loglist.add(0, "校验中");
addLog("校验中");
} }
break; break;
case EightBodyFatUtil.APP_CMD_TEMP_UNIT: case EightBodyFatUtil.APP_CMD_TEMP_UNIT:
if (result == EightBodyFatUtil.SUCCESS) { if (result == EightBodyFatUtil.SUCCESS) {
loglist.add(0, "切换温度成功");
addLog("切换温度成功");
} else if (result == EightBodyFatUtil.FAILED) { } else if (result == EightBodyFatUtil.FAILED) {
loglist.add(0, "切换温度失败");
addLog("切换温度失败");
} else { } else {
loglist.add(0, "切换温度中");
addLog("切换温度中");
} }
//切换温度 //切换温度
break; break;
case EightBodyFatUtil.APP_CMD_WEIGHT_UNIT: case EightBodyFatUtil.APP_CMD_WEIGHT_UNIT:
if (result == EightBodyFatUtil.SUCCESS) { if (result == EightBodyFatUtil.SUCCESS) {
loglist.add(0, "切换体重单位成功");
addLog("切换体重单位成功");
} else if (result == EightBodyFatUtil.FAILED) { } else if (result == EightBodyFatUtil.FAILED) {
loglist.add(0, "切换体重单位失败");
addLog("切换体重单位失败");
} else { } else {
loglist.add(0, "切换体重单位中");
addLog("切换体重单位中");
} }
//切换温度 //切换温度
break; break;
} }
break; break;
case EightBodyFatUtil.ERROR_CODE: case EightBodyFatUtil.ERROR_CODE:
loglist.add(0, "错误码" + typeState);
addLog("错误码" + typeState);
break; break;


} }
listAdapter.notifyDataSetChanged();


} }


} }
this.weight = weight; this.weight = weight;
if (unit == EightBodyFatUtil.ST) { if (unit == EightBodyFatUtil.ST) {
loglist.add(0, "测量状态:" + state + stateStr + " 体重:" + EightBodyFatUtil.lbtostlb(weight) + " 体重单位:" + unit + " 小数点位" + decimal);
addLog("测量状态:" + state + stateStr + " 体重:" + EightBodyFatUtil.lbtostlb(weight) + " 体重单位:" + unit + " 小数点位" + decimal);
} else { } else {
loglist.add(0, "测量状态:" + state + stateStr + " 体重:" + weight + " 体重单位:" + unit + " 小数点位" + decimal);
addLog("测量状态:" + state + stateStr + " 体重:" + weight + " 体重单位:" + unit + " 小数点位" + decimal);
}
if (et_weight != null) {
et_weight.setText(String.valueOf(weight));
} }
} }


@Override @Override
public void onImpedance(int adc, int part, int arithmetic) { public void onImpedance(int adc, int part, int arithmetic) {
loglist.add(0, "阻抗:" + adc + " 部位: " + part + " 算法" + arithmetic);
addLog("阻抗:" + adc + " 部位: " + part + " 算法" + arithmetic);
kaimeng(part, adc, arithmetic); kaimeng(part, adc, arithmetic);
} }




@Override @Override
public void onTemp(int sign, float temp, int unit, int decimal) { public void onTemp(int sign, float temp, int unit, int decimal) {
loglist.add(0, " 温度 正负" + sign + " 温度:" + temp + " 单位: " + unit + " 小数位" + decimal);
addLog(" 温度 正负" + sign + " 温度:" + temp + " 单位: " + unit + " 小数位" + decimal);
} }


@Override @Override
public void onVersion(String version) { public void onVersion(String version) {
loglist.add(0, "当前版本:" + version);
listAdapter.notifyDataSetChanged();
addLog("当前版本:" + version);
} }


@Override @Override
} }




private EightBodyfatAdc mEightBodyfatAdc;
private EightBodyFatAdc mEightBodyFatAdc;


private void kaimeng(int part, int adc, int algorithms) { private void kaimeng(int part, int adc, int algorithms) {
if (mEightBodyfatAdc == null) {
mEightBodyfatAdc = new EightBodyfatAdc();
if (mEightBodyFatAdc == null) {
mEightBodyFatAdc = new EightBodyFatAdc();
} }
mEightBodyfatAdc.setAlgorithms(algorithms);
mEightBodyFatAdc.setAlgorithms(algorithms);
switch (part) { switch (part) {
case EightBodyFatUtil.IMPEDANCE_FOOT: case EightBodyFatUtil.IMPEDANCE_FOOT:
//双脚阻抗 //双脚阻抗
mEightBodyfatAdc.setAdcFoot(adc);
mEightBodyFatAdc.setAdcFoot(adc);
break; break;
case EightBodyFatUtil.IMPEDANCE_HAND: case EightBodyFatUtil.IMPEDANCE_HAND:
//双手阻抗 //双手阻抗
mEightBodyfatAdc.setAdcHand(adc);
mEightBodyFatAdc.setAdcHand(adc);


break; break;
case EightBodyFatUtil.IMPEDANCE_BODY: case EightBodyFatUtil.IMPEDANCE_BODY:
//躯干阻抗 //躯干阻抗
mEightBodyfatAdc.setAdcBody(adc);
mEightBodyFatAdc.setAdcBody(adc);


break; break;
case EightBodyFatUtil.IMPEDANCE_L_HAND: case EightBodyFatUtil.IMPEDANCE_L_HAND:
//"左手阻抗"; //"左手阻抗";
mEightBodyfatAdc.setAdcLeftHand(adc);
mEightBodyFatAdc.setAdcLeftHand(adc);
break; break;
case EightBodyFatUtil.IMPEDANCE_R_HAND: case EightBodyFatUtil.IMPEDANCE_R_HAND:
// adc = adc + "右手阻抗"; // adc = adc + "右手阻抗";
mEightBodyfatAdc.setAdcRightHand(adc);
mEightBodyFatAdc.setAdcRightHand(adc);
break; break;
case EightBodyFatUtil.IMPEDANCE_L_FOOT: case EightBodyFatUtil.IMPEDANCE_L_FOOT:
// adc = adc + "左脚阻抗"; // adc = adc + "左脚阻抗";
mEightBodyfatAdc.setAdcLeftFoot(adc);
mEightBodyFatAdc.setAdcLeftFoot(adc);


break; break;
case EightBodyFatUtil.IMPEDANCE_R_FOOT: case EightBodyFatUtil.IMPEDANCE_R_FOOT:
// adc = adc + "右脚阻抗"; // adc = adc + "右脚阻抗";
mEightBodyfatAdc.setAdcRightFoot(adc);
mEightBodyFatAdc.setAdcRightFoot(adc);


break; break;
case EightBodyFatUtil.IMPEDANCE_L_BODY: case EightBodyFatUtil.IMPEDANCE_L_BODY:
// adc = adc + "左驱干"; // adc = adc + "左驱干";
mEightBodyfatAdc.setAdcLeftBody(adc);
mEightBodyFatAdc.setAdcLeftBody(adc);


break; break;
case EightBodyFatUtil.IMPEDANCE_R_BODY: case EightBodyFatUtil.IMPEDANCE_R_BODY:
// adc = adc + "右躯干"; // adc = adc + "右躯干";
mEightBodyfatAdc.setAdcRightBody(adc);
mEightBodyFatAdc.setAdcRightBody(adc);


break; break;
case EightBodyFatUtil.IMPEDANCE_R_HAND_L_FOOT: case EightBodyFatUtil.IMPEDANCE_R_HAND_L_FOOT:
// adc = adc + "右手左脚"; // adc = adc + "右手左脚";
mEightBodyfatAdc.setAdcRightHandLeftFoot(adc);
mEightBodyFatAdc.setAdcRightHandLeftFoot(adc);
break; break;
case EightBodyFatUtil.IMPEDANCE_L_HAND_R_FOOT: case EightBodyFatUtil.IMPEDANCE_L_HAND_R_FOOT:
// adc = adc + "左手右脚"; // adc = adc + "左手右脚";
mEightBodyfatAdc.setAdcLeftHandRightFoot(adc);
mEightBodyFatAdc.setAdcLeftHandRightFoot(adc);


break; break;
default: default:


} }


private void kaimengJieMi(EightBodyfatAdc mEightBodyfatAdc) {
loglist.add(0, mEightBodyfatAdc.toString());
loglist.add(0, "默认传入用户: 性别:男,身高:180,年龄27," + "weight " + weight + "kg");
private void kaimengJieMi(EightBodyFatAdc eightBodyFatAdc, UserInfoBean userInfoBean) {
loglist.add(0, "默认传入用户: " + userInfoBean.toString());
EightBodyFatBean algorithmsData = EightBodyFatAlgorithms.getInstance() EightBodyFatBean algorithmsData = EightBodyFatAlgorithms.getInstance()
.getAlgorithmsData(mEightBodyfatAdc.getAlgorithms(), 1, 180, weight, 27, mEightBodyfatAdc);
.getAlgorithmsData(eightBodyFatAdc.getAlgorithms(), userInfoBean.getSex(),
userInfoBean.getHeightCm(), userInfoBean.getWeightKg(),
userInfoBean.getAge(), eightBodyFatAdc);
if (algorithmsData.getBhErrorType() != null) {
String type = algorithmsData.getBhErrorType();
int typeInt = -1;
try {
typeInt = Integer.parseInt(algorithmsData.getBhErrorType());
} catch (NumberFormatException e) {
typeInt = -1;
e.printStackTrace();
}

if (typeInt != -1) {
//新算法
switch (typeInt) {
case HTBodyBasicInfo.ErrorAge:
loglist.add(0, "年龄不符合要求:6~99");
break;
case HTBodyBasicInfo.ErrorHeight:
loglist.add(0, "身高不符合要求:90~220");
break;
case HTBodyBasicInfo.ErrorWeight:
loglist.add(0, "体重不符合要求:10.0~200.0");
break;
case HTBodyBasicInfo.ErrorImpedance:
loglist.add(0, "阻抗不符合要求100~600");
break;
case HTBodyBasicInfo.ErrorImpedanceLeftLeg:
loglist.add(0, "左手左脚阻抗不符合要求:100~600");
break;
case HTBodyBasicInfo.ErrorImpedanceRightLeg:
loglist.add(0, "右手左脚阻抗不符合要求:100~600");
break;
case HTBodyBasicInfo.ErrorImpedanceLeftArm:
loglist.add(0, "左手阻抗不符合要求:100~600");
break;
case HTBodyBasicInfo.ErrorImpedanceRightArm:
loglist.add(0, "右手阻抗不符合要求:100~600");
break;
case HTBodyBasicInfo.ErrorNone:
//正常
loglist.add(0, "算法计算结果:" + algorithmsData.toString());
break;
default:
loglist.add(0, "其他错误:" + algorithmsData.getBhErrorType());
break;
}
} else {
switch (type) {
case "AGE":
loglist.add(0, "年龄不符合要求:6~99");
break;
case "HEIGHT":
loglist.add(0, "身高不符合要求:90~220");
break;
case "WEIGHT":
loglist.add(0, "体重不符合要求:10.0~200.0");
break;
case "IMPEDANCE_LEFT_BODY":
loglist.add(0, "左侧全身阻抗不符合要求:200~1200");
break;
case "IMPEDANCE_LEFT_ARM":
loglist.add(0, "左手阻抗不符合要求:100~600");
break;
case "IMPEDANCE_RIGHT_ARM":
loglist.add(0, "右手阻抗不符合要求:100~600");
break;
case "IMPEDANCE_LEFT_LEG":
loglist.add(0, "左脚阻抗不符合要求:100~600");
break;
case "IMPEDANCE_RIGHT_LEG":
loglist.add(0, "右脚阻抗不符合要求:100~600");
break;
case "NONE":
//正常
loglist.add(0, "算法计算结果:" + algorithmsData.toString());
break;
default:
loglist.add(0, "其他错误:" + algorithmsData.getBhErrorType());
break;
}
}

} else {
loglist.add(0, "其他错误:" + algorithmsData.getBhErrorType());
}
if (listAdapter != null) {
listAdapter.notifyDataSetChanged();
}
// EightBodyFatBean algorithmsData = // EightBodyFatBean algorithmsData =
// EightBodyFatAlgorithms.getInstance().getAlgorithmsData(2, 0, 165, weight, 27, mEightBodyfatAdc);
loglist.add(0, algorithmsData.toString());
// EightBodyFatAlgorithms.getInstance().getAlgorithmsData(2, 0, 165, weight, 27, mEightBodyFatAdc);
L.i("算法结果" + algorithmsData.toString()); L.i("算法结果" + algorithmsData.toString());
} }




private String mOldLog = "";
private SimpleDateFormat sdf;

/**
* 添加日志
*
* @param log 日志
*/
private void addLog(String log) {
if (mOldLog.equalsIgnoreCase(log)) {
return;
}
if (sdf == null) {
sdf = new SimpleDateFormat("HH:mm:ss", Locale.US);
}
mOldLog = log;
loglist.add(0, sdf.format(System.currentTimeMillis()) + ":\n" + log);
if (listAdapter != null) {
listAdapter.notifyDataSetChanged();
}
}

@Override
protected void onDestroy() {
super.onDestroy();
if (mAILinkBleManager != null) {
mAILinkBleManager.disconnectAll();
}
}
} }

+ 19
- 2
app/src/main/java/aicare/net/cn/sdk/ailinksdkdemoandroid/modules/eight_bodyfat/dual_band/UserInfoBean.java View File



public class UserInfoBean { public class UserInfoBean {


private int userId;
private int age; private int age;
private int heightCm; private int heightCm;
private float weightKg; private float weightKg;
private int userType;
private int sex; private int sex;


public int getUserId() {
return userId;
}

public void setUserId(int userId) {
this.userId = userId;
}

public int getAge() { public int getAge() {
return age; return age;
} }
this.sex = sex; this.sex = sex;
} }


public int getUserType() {
return userType;
}

public void setUserType(int userType) {
this.userType = userType;
}

@Override @Override
public String toString() { public String toString() {
return "UserInfoBean{" + "age=" + age + ", heightCm=" + heightCm + ", weightKg=" + weightKg + ", sex=" + sex + '}';
return "UserInfoBean{" + "年龄=" + age + "用户类型=" + userType + ", 身高=" + heightCm + ", 体重=" + weightKg + ", 性别=" + (sex == 1 ? "男" : "女") + '}';
} }
} }

+ 2
- 2
app/src/main/java/aicare/net/cn/sdk/ailinksdkdemoandroid/utils/EightBodyFatAlgorithms.java View File



import java.util.Locale; import java.util.Locale;


import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.eight_bodyfat.EightBodyfatAdc;
import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.eight_bodyfat.EightBodyFatAdc;




public class EightBodyFatAlgorithms { public class EightBodyFatAlgorithms {
} }




public EightBodyFatBean getAlgorithmsData(int algorithms, int sex, int height, float weight_kg, int age, EightBodyfatAdc eightBodyfatAdc) {
public EightBodyFatBean getAlgorithmsData(int algorithms, int sex, int height, float weight_kg, int age, EightBodyFatAdc eightBodyfatAdc) {
EightBodyFatBean eightBodyFatBean = new EightBodyFatBean(); EightBodyFatBean eightBodyFatBean = new EightBodyFatBean();
switch (algorithms) { switch (algorithms) {



+ 52
- 13
app/src/main/java/aicare/net/cn/sdk/ailinksdkdemoandroid/utils/EightBodyFatBean.java View File

*/ */
private String bhSkeletalMuscleKgListStandardOrExcellent; private String bhSkeletalMuscleKgListStandardOrExcellent;


private String mBhErrorType;



public void setBhSkeletalMuscleKg(String bhSkeletalMuscleKg) { public void setBhSkeletalMuscleKg(String bhSkeletalMuscleKg) {
this.bhSkeletalMuscleKg = bhSkeletalMuscleKg; this.bhSkeletalMuscleKg = bhSkeletalMuscleKg;
return heartRate; return heartRate;
} }


public String getBhErrorType() {
return mBhErrorType;
}

public void setBhErrorType(String bhErrorType) {
mBhErrorType = bhErrorType;
}

@Override @Override
public String toString() { public String toString() {
return "EightBodyFatBean{" + "体重=" + weight + ", bmi=" + bmi + ", 体脂率=" + bfr +
", 皮下脂肪率=" + sfr + ", 内脏脂肪率=" + uvi + ", 肌肉率=" + rom + ", 基础代谢率=" + bmr + ", 骨量=" + bm +
", 水分=" + vwc + ", 身体年龄=" + bodyAge + ", 蛋白率=" + pp + ", 双脚阻抗=" + adcFoot +
", 双手阻抗=" + adcHand + ", 阻抗左手=" + adcLeftHand + ", 阻抗右手=" + adcRightHand +
", 阻抗左脚=" + adcLeftFoot + ", 阻抗右脚=" + adcRightFoot + ", 阻抗左身体=" + adcLeftBody +
", 阻抗右身体=" + adcRightBody + ", 阻抗右手左脚=" + adcRightHandLeftFoot +
", 阻抗左手右脚=" + adcLeftHandRightFoot + ", 身体阻抗=" + adcBody +
", 算法ID=" + arithmetic + ", 心率=" + heartRate + ", fatMassRightTop=" + fatMassRightTop +
", fatMassRightBottom=" + fatMassRightBottom + ", fatMassLeftTop=" + fatMassLeftTop +
", fatMassLeftBottom=" + fatMassLeftBottom + ", fatMassBody=" + fatMassBody +
", muscleMassRightTop=" + muscleMassRightTop + ", muscleMassRightBottom=" + muscleMassRightBottom +
", muscleMassLeftTop=" + muscleMassLeftTop + ", muscleMassLeftBottom=" + muscleMassLeftBottom
+ ", muscleMassBody=" + muscleMassBody + ", testAdc=" + testAdc + '}';
return "EightBodyFatBean{" +
"体重='" + weight + '\'' +
", bmi=" + bmi +
", 体脂率=" + bfr +
", 皮下脂肪率=" + sfr +
", 内脏脂肪率=" + uvi +
", 肌肉率=" + rom +
", 基础代谢率=" + bmr +
", 骨量='" + bm + '\'' +
", 水分" + vwc +
", 身体年龄=" + bodyAge +
", 蛋白率=" + pp +
", 双脚阻抗=" + adcFoot +
", 双手阻抗=" + adcHand +
", 阻抗左手=" + adcLeftHand +
", 阻抗右手=" + adcRightHand +
", 阻抗左脚=" + adcLeftFoot +
", 阻抗右脚=" + adcRightFoot +
", 阻抗左身体=" + adcLeftBody +
", 阻抗右身体=" + adcRightBody +
", 阻抗右手左脚=" + adcRightHandLeftFoot +
", 阻抗左手右脚=" + adcLeftHandRightFoot +
", 身体阻抗=" + adcBody +
", 算法ID=" + arithmetic +
", 心率=" + heartRate +
", 体脂-右上='" + fatMassRightTop + '\'' +
", 体脂-右下='" + fatMassRightBottom + '\'' +
", 体脂-左上='" + fatMassLeftTop + '\'' +
", 体脂-左下='" + fatMassLeftBottom + '\'' +
", 体脂-躯干='" + fatMassBody + '\'' +
", 肌肉-右上='" + muscleMassRightTop + '\'' +
", 肌肉-右下='" + muscleMassRightBottom + '\'' +
", 肌肉-左上='" + muscleMassLeftTop + '\'' +
", 肌肉量-左下='" + muscleMassLeftBottom + '\'' +
", 肌肉量-躯干='" + muscleMassBody + '\'' +
", 阻抗='" + testAdc + '\'' +
", 骨骼肌='" + bhSkeletalMuscleKg + '\'' +
", 骨骼肌公斤级别='" + bhSkeletalMuscleKgLevel + '\'' +
", 骨骼肌公斤列表或标准='" + bhSkeletalMuscleKgListUnderOrStandard + '\'' +
", 骨骼肌公斤标准或优秀列表='" + bhSkeletalMuscleKgListStandardOrExcellent + '\'' +
", 错误码='" + mBhErrorType + '\'' +
'}';
} }


} }

+ 108
- 23
app/src/main/res/layout/activity_eight_body_fata.xml View File

<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<RadioGroup <RadioGroup
android:id="@+id/unit" android:id="@+id/unit"
android:layout_below="@+id/edit_Userid"
android:layout_width="match_parent" android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:layout_below="@+id/edit_Userid"
android:orientation="horizontal">

<RadioButton <RadioButton
android:id="@+id/kg" android:id="@+id/kg"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:text="kg"/>
android:text="kg" />

<RadioButton <RadioButton
android:id="@+id/jin" android:id="@+id/jin"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:text="斤"/>
android:text="斤" />

<RadioButton <RadioButton
android:id="@+id/st_lb" android:id="@+id/st_lb"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:text="st:lb"/>
android:text="st:lb" />

<RadioButton <RadioButton
android:id="@+id/lb" android:id="@+id/lb"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:text="lb"/>
android:text="lb" />
</RadioGroup> </RadioGroup>

<RadioGroup <RadioGroup
android:id="@+id/temp_unit" android:id="@+id/temp_unit"
android:layout_below="@+id/edit_Userid"
android:layout_width="match_parent" android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:layout_below="@+id/edit_Userid"
android:orientation="horizontal">

<RadioButton <RadioButton
android:id="@+id/c" android:id="@+id/c"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:text="℃"/>
android:text="℃" />

<RadioButton <RadioButton
android:id="@+id/f" android:id="@+id/f"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:text="℉"/>
android:text="℉" />


</RadioGroup> </RadioGroup>
<Button
android:id="@+id/support_unit"
android:text="查询支持单位"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="年龄:"
android:textSize="12dp" />

<EditText
android:id="@+id/et_age"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:inputType="number"
android:text="34" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="性别(女=0,男=1):"
android:textSize="12dp" />

<EditText
android:id="@+id/et_sex"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:inputType="number"
android:text="1" />


</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="身高(CM):"
android:textSize="12dp" />

<EditText
android:id="@+id/et_height"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:inputType="number"
android:text="178" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="体重(kg):"
android:textSize="12dp" />

<EditText
android:id="@+id/et_weight"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:digits="0123456789."
android:inputType="number"
android:text="78" />

<Button
android:id="@+id/btn_update"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12dp"
android:text="更新用户" />

</LinearLayout>

<Button
android:id="@+id/support_unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="查询支持单位" />

<ListView <ListView
android:id="@+id/log_list" android:id="@+id/log_list"
android:layout_marginTop="20dp"
android:layout_below="@id/unit"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:layout_below="@id/unit"
android:layout_marginTop="20dp">


</ListView> </ListView>
</LinearLayout> </LinearLayout>

Loading…
Cancel
Save