dependencies { | dependencies { | ||||
implementation fileTree(dir: 'libs', include: ['*.jar']) | implementation fileTree(dir: 'libs', include: ['*.jar']) | ||||
implementation 'androidx.appcompat:appcompat:1.1.0' | |||||
implementation 'androidx.constraintlayout:constraintlayout:1.1.3' | |||||
implementation 'androidx.appcompat:appcompat:1.2.0' | |||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.4' | |||||
testImplementation 'junit:junit:4.12' | testImplementation 'junit:junit:4.12' | ||||
implementation 'com.github.elinkthings:AILinkSDKRepositoryAndroid:1.8.0'//蓝牙核心库 | |||||
implementation 'com.github.elinkthings:AILinkSDKRepositoryAndroid:1.8.6'//蓝牙核心库 | |||||
implementation 'com.github.elinkthings:AILinkSDKOtaLibraryAndroid:1.0.3'//OTA库,需要依赖核心库 | implementation 'com.github.elinkthings:AILinkSDKOtaLibraryAndroid:1.0.3'//OTA库,需要依赖核心库 | ||||
implementation 'com.github.elinkthings:AILinkSDKParsingLibraryAndroid:1.6.1'//蓝牙解析库 | |||||
implementation 'com.github.elinkthings:AILinkSDKParsingLibraryAndroid:1.6.2'//蓝牙解析库 | |||||
implementation 'androidx.recyclerview:recyclerview:1.1.0' | implementation 'androidx.recyclerview:recyclerview:1.1.0' | ||||
implementation 'com.jakewharton:butterknife:10.2.0' | implementation 'com.jakewharton:butterknife:10.2.0' | ||||
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.0' | annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.0' | ||||
api 'com.squareup.retrofit2:converter-gson:2.5.0' | |||||
} | } |
import com.pingwang.bluetoothlib.utils.BleDensityUtil; | import com.pingwang.bluetoothlib.utils.BleDensityUtil; | ||||
import com.pingwang.bluetoothlib.utils.BleLog; | import com.pingwang.bluetoothlib.utils.BleLog; | ||||
import com.pingwang.bluetoothlib.utils.BleStrUtils; | import com.pingwang.bluetoothlib.utils.BleStrUtils; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import cn.net.aicare.modulelibrary.module.ADWeight.ADWeightScaleBleConfig; | import cn.net.aicare.modulelibrary.module.ADWeight.ADWeightScaleBleConfig; | ||||
import cn.net.aicare.modulelibrary.module.ADWeight.ADWeightScaleUserData; | import cn.net.aicare.modulelibrary.module.ADWeight.ADWeightScaleUserData; | ||||
/** | /** | ||||
* xing<br> | * xing<br> | ||||
* 2019/7/12<br> | * 2019/7/12<br> | ||||
* 艾地体脂秤 | |||||
* 显示数据 | |||||
*/ | */ | ||||
public class ADWeightScaleCmdActivity extends BleBaseActivity implements OnCallbackBle, OnBleVersionListener, OnMcuParameterListener, OnBleCompanyListener, OnBleSettingListener, | public class ADWeightScaleCmdActivity extends BleBaseActivity implements OnCallbackBle, OnBleVersionListener, OnMcuParameterListener, OnBleCompanyListener, OnBleSettingListener, | ||||
ADWeightScaleDeviceData.onNotifyData, View.OnClickListener, RadioGroup.OnCheckedChangeListener { | ADWeightScaleDeviceData.onNotifyData, View.OnClickListener, RadioGroup.OnCheckedChangeListener { | ||||
} | } | ||||
@Override | @Override | ||||
public void OnSettingReturn(byte cmdType, byte cmdData) { | |||||
public void OnSettingReturn(int cmdType, int cmdData) { | |||||
String msg = ""; | String msg = ""; | ||||
switch (cmdType) { | switch (cmdType) { | ||||
case CmdConfig.SET_SYS_TIME://设置系统当前时间返回 | case CmdConfig.SET_SYS_TIME://设置系统当前时间返回 |
/** | /** | ||||
* xing<br> | * xing<br> | ||||
* 2019/11/14<br> | * 2019/11/14<br> | ||||
* 艾地体脂秤用户管理界面 | |||||
* java类作用描述 | |||||
*/ | */ | ||||
public class ADWeightScaleUserActivity extends AppCompatActivity implements View.OnClickListener { | public class ADWeightScaleUserActivity extends AppCompatActivity implements View.OnClickListener { | ||||
package aicare.net.cn.sdk.ailinksdkdemoandroid; | |||||
import android.os.Bundle; | |||||
import android.os.Handler; | |||||
import android.os.Message; | |||||
import android.view.View; | |||||
import android.widget.ArrayAdapter; | |||||
import android.widget.CompoundButton; | |||||
import android.widget.ListView; | |||||
import android.widget.RadioButton; | |||||
import androidx.annotation.Nullable; | |||||
import com.pingwang.bluetoothlib.bean.BleValueBean; | |||||
import com.pingwang.bluetoothlib.bean.SupportUnitBean; | |||||
import com.pingwang.bluetoothlib.device.BleDevice; | |||||
import com.pingwang.bluetoothlib.listener.OnCallbackBle; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import java.lang.ref.WeakReference; | |||||
import java.util.ArrayList; | |||||
import java.util.List; | |||||
import cn.net.aicare.modulelibrary.module.BLDBodyfatScale.BLDBodyFatBleUtilsData; | |||||
import cn.net.aicare.modulelibrary.module.BLDBodyfatScale.BLDBodyFatDataUtil; | |||||
import cn.net.aicare.modulelibrary.module.BLDBodyfatScale.BLDUser; | |||||
public class BLDWeightScaleBleActivity extends BleBaseActivity implements View.OnClickListener, OnCallbackBle, BLDBodyFatBleUtilsData.BleBodyFatCallback { | |||||
private String TAG = BLDWeightScaleBleActivity.class.getName(); | |||||
private String mAddress; | |||||
private List<String> mlogList; | |||||
private ArrayAdapter listAdapter; | |||||
private BLDBodyFatBleUtilsData bodyFatBleUtilsData; | |||||
private MHandler mMHandler; | |||||
private RadioButton kg, jing, stlb, lb; | |||||
private BLDUser selectUser; | |||||
private ListView loglistView; | |||||
private int weighunit = BLDBodyFatDataUtil.WeightUnit.KG; | |||||
@Override | |||||
protected void onCreate(@Nullable Bundle savedInstanceState) { | |||||
super.onCreate(savedInstanceState); | |||||
setContentView(R.layout.activity_bld_weight_scale_ble); | |||||
initView(); | |||||
setUnitinit(); | |||||
initdata(); | |||||
} | |||||
private void initView() { | |||||
kg = findViewById(R.id.kg); | |||||
jing = findViewById(R.id.jin); | |||||
stlb = findViewById(R.id.st_lb); | |||||
lb = findViewById(R.id.lb); | |||||
kg.setChecked(true); | |||||
loglistView = findViewById(R.id.log_list); | |||||
} | |||||
private void initdata() { | |||||
mAddress = getIntent().getStringExtra("mac"); | |||||
WeakReference weakReference = new WeakReference(new MHandler()); | |||||
mMHandler = (MHandler) weakReference.get(); | |||||
mlogList = new ArrayList<>(); | |||||
listAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mlogList); | |||||
loglistView.setAdapter(listAdapter); | |||||
selectUser = getdefault(); | |||||
} | |||||
private BLDUser getdefault() { | |||||
BLDUser user = new BLDUser(); | |||||
user.setModeType(BLDBodyFatDataUtil.UserEum.MODE_ORDINARY); | |||||
user.setSex(BLDBodyFatDataUtil.UserEum.SEX_MAN); | |||||
user.setAge(18); | |||||
user.setHeight(170); | |||||
user.setAdc(560); | |||||
user.setWeight(50); | |||||
user.setId(1); | |||||
return user; | |||||
} | |||||
private void setUnitinit() { | |||||
kg.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { | |||||
@Override | |||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { | |||||
if (isChecked) { | |||||
weighunit = BLDBodyFatDataUtil.WeightUnit.KG; | |||||
if (bodyFatBleUtilsData != null) | |||||
bodyFatBleUtilsData.sendData(BLDBodyFatDataUtil.getInstance().setWeightUnit( | |||||
BLDBodyFatDataUtil.WeightUnit.KG)); | |||||
} | |||||
} | |||||
}); | |||||
jing.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { | |||||
@Override | |||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { | |||||
if (isChecked) { | |||||
weighunit = BLDBodyFatDataUtil.WeightUnit.JIN; | |||||
if (bodyFatBleUtilsData != null) | |||||
bodyFatBleUtilsData.sendData(BLDBodyFatDataUtil.getInstance().setWeightUnit(BLDBodyFatDataUtil.WeightUnit.JIN)); | |||||
} | |||||
} | |||||
}); | |||||
stlb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { | |||||
@Override | |||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { | |||||
if (isChecked) { | |||||
weighunit = BLDBodyFatDataUtil.WeightUnit.ST; | |||||
if (bodyFatBleUtilsData != null) | |||||
bodyFatBleUtilsData.sendData(BLDBodyFatDataUtil.getInstance().setWeightUnit(BLDBodyFatDataUtil.WeightUnit.ST)); | |||||
} | |||||
} | |||||
}); | |||||
lb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { | |||||
@Override | |||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { | |||||
if (isChecked) { | |||||
weighunit = BLDBodyFatDataUtil.WeightUnit.LB; | |||||
if (bodyFatBleUtilsData != null) | |||||
bodyFatBleUtilsData.sendData(BLDBodyFatDataUtil.getInstance().setWeightUnit(BLDBodyFatDataUtil.WeightUnit.LB)); | |||||
} | |||||
} | |||||
}); | |||||
} | |||||
@Override | |||||
public void onServiceSuccess() { | |||||
mlogList.add(0, "服务与界面建立连接成功"); | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | |||||
// BleLog.i(TAG, "服务与界面建立连接成功"); | |||||
//与服务建立连接 | |||||
if (mBluetoothService != null) { | |||||
mBluetoothService.setOnCallback(this); | |||||
BleDevice bleDevice = mBluetoothService.getBleDevice(mAddress); | |||||
if (bleDevice != null) { | |||||
BLDBodyFatBleUtilsData.init(bleDevice, this); | |||||
bodyFatBleUtilsData = BLDBodyFatBleUtilsData.getInstance(); | |||||
bodyFatBleUtilsData.sendData(BLDBodyFatDataUtil.getInstance().getVersion()); | |||||
mMHandler.sendEmptyMessageDelayed(GETLIST, 200); | |||||
mMHandler.sendEmptyMessageDelayed(GETLIST, 300); | |||||
} | |||||
} | |||||
} | |||||
@Override | |||||
public void onServiceErr() { | |||||
mlogList.add(0, "服务与界面建立连接出错"); | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | |||||
} | |||||
@Override | |||||
public void unbindServices() { | |||||
mlogList.add(0, "服务与界面建立断开连接成功"); | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | |||||
} | |||||
@Override | |||||
public void onStartScan() { | |||||
mlogList.add(0, "开始扫描"); | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | |||||
} | |||||
@Override | |||||
public void onScanning(BleValueBean data) { | |||||
mlogList.add(0, "扫描中"); | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | |||||
} | |||||
@Override | |||||
public void onScanTimeOut() { | |||||
mlogList.add(0, "扫描超时"); | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | |||||
} | |||||
@Override | |||||
public void onConnecting(String mac) { | |||||
mlogList.add(0, "正在连接" + mac); | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | |||||
} | |||||
@Override | |||||
public void onDisConnected(String mac, int code) { | |||||
mlogList.add(0, "断开连接" + mac); | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | |||||
} | |||||
@Override | |||||
public void onServicesDiscovered(String mac) { | |||||
mlogList.add(0, "发现蓝牙服务" + mac); | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | |||||
} | |||||
@Override | |||||
public void bleOpen() { | |||||
mlogList.add(0, "蓝牙打开"); | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | |||||
} | |||||
@Override | |||||
public void bleClose() { | |||||
mlogList.add(0, "蓝牙关闭"); | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | |||||
} | |||||
@Override | |||||
public void onWeightData(int status, int symbol, int weight, int weightUnit, int decimals) { | |||||
String symbolStr = symbol == BLDBodyFatDataUtil.Symbol.MINUS ? "(-)" : "(+)"; | |||||
String unitStr = ""; | |||||
switch (weightUnit) { | |||||
case BLDBodyFatDataUtil.WeightUnit.JIN: | |||||
unitStr = "斤"; | |||||
break; | |||||
case BLDBodyFatDataUtil.WeightUnit.KG: | |||||
unitStr = "Kg"; | |||||
break; | |||||
case BLDBodyFatDataUtil.WeightUnit.LB: | |||||
unitStr = "lb"; | |||||
break; | |||||
case BLDBodyFatDataUtil.WeightUnit.ST: | |||||
unitStr = "ST:LB( 由于 st 与 lb 是标准整数换算,1st=14lb,故重量数据部分还是 lb 的重量)"; | |||||
break; | |||||
} | |||||
unitStr += "(" + weightUnit + ")"; | |||||
mlogList.add(0, "体重数据类型:" + status + " 符号:" + symbol + symbolStr | |||||
+ " 体重:" + weight + " 单位:" + unitStr + " 小数点位: " + decimals); | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | |||||
} | |||||
@Override | |||||
public void onTempData(int symhol, int temp) { | |||||
mlogList.add(0, "温度 符号:" + symhol + " 温度: " + temp + " (精度(precision) 0.1℃)"); | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | |||||
} | |||||
@Override | |||||
public void onStatus(int status) { | |||||
switch (status) { | |||||
case BLDBodyFatDataUtil.WEIGHT_TESTING: | |||||
mlogList.add(0, "测量状态:" + status + " 测量实时体重"); | |||||
break; | |||||
case BLDBodyFatDataUtil.WEIGHT_RESULT: | |||||
mlogList.add(0, "测量状态:" + status + " 稳定体重"); | |||||
break; | |||||
case BLDBodyFatDataUtil.IMPEDANCE_TESTING: | |||||
mlogList.add(0, "测量状态:" + status + " 阻抗测量中"); | |||||
break; | |||||
case BLDBodyFatDataUtil.IMPEDANCE_SUCCESS: | |||||
case BLDBodyFatDataUtil.IMPEDANCE_SUCCESS_DATA: | |||||
mlogList.add(0, "测量状态:" + status + " 阻抗测量成功"); | |||||
break; | |||||
case BLDBodyFatDataUtil.IMPEDANCE_FAIL: | |||||
mlogList.add(0, "测量状态:" + status + " 阻抗测量失败"); | |||||
break; | |||||
case BLDBodyFatDataUtil.TEST_FINISH: | |||||
mlogList.add(0, "测量状态:" + status + " 测量完成"); | |||||
break; | |||||
case BLDBodyFatDataUtil.REQUESR_USER_INFO: | |||||
mlogList.add(0, "测量状态:" + status + " 请求用户信息"); | |||||
break; | |||||
case BLDBodyFatDataUtil.TEMPERATURE: | |||||
mlogList.add(0, "测量状态:" + status + " 测量温度"); | |||||
break; | |||||
case BLDBodyFatDataUtil.REQUEST_CURRENT_UNIT: | |||||
mlogList.add(0, "测量状态:" + status + " 请求单位单位"); | |||||
mMHandler.sendEmptyMessage(SETUNIT); | |||||
break; | |||||
case BLDBodyFatDataUtil.ERROR_CODE: | |||||
mlogList.add(0, "测量状态:" + status + " 错误"); | |||||
break; | |||||
default: | |||||
mlogList.add(0, "测量状态:" + status); | |||||
} | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | |||||
} | |||||
@Override | |||||
public void onAdc(int adc, int algorithmic) { | |||||
mlogList.add(0, "阻抗:" + adc); | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | |||||
} | |||||
@Override | |||||
public void onBodyFat(int bf, int vfg, int muscleMassKg, int bmv, int Bmr, int age, int bfStandard, int vfgStandard, int muscleMassStandard, int bmvStandard) { | |||||
StringBuffer stringBuffer = new StringBuffer(); | |||||
stringBuffer.append("体脂: "); | |||||
stringBuffer.append(bf); | |||||
stringBuffer.append(" 精度(precision) 0.1%,范围(scope) 5.0~75.0%"); | |||||
stringBuffer.append(" 标准:"); | |||||
stringBuffer.append(bfStandard); | |||||
stringBuffer.append("\n内脏脂肪等级: "); | |||||
stringBuffer.append(vfg); | |||||
stringBuffer.append(" 精度(precision) 0.5,范围(scope) 1.0~59.0"); | |||||
stringBuffer.append(" 标准:"); | |||||
stringBuffer.append(vfgStandard); | |||||
stringBuffer.append("\n肌肉量: "); | |||||
stringBuffer.append(muscleMassKg); | |||||
stringBuffer.append(" 精度(precision) 0.1kg"); | |||||
stringBuffer.append(" 标准:"); | |||||
stringBuffer.append(muscleMassStandard); | |||||
stringBuffer.append("\n基础代谢量: "); | |||||
stringBuffer.append(bmv); | |||||
stringBuffer.append(" 精度(precision) 1kcal"); | |||||
stringBuffer.append(" 标准:"); | |||||
stringBuffer.append(bmvStandard); | |||||
stringBuffer.append("\n体水分率: "); | |||||
stringBuffer.append(Bmr); | |||||
stringBuffer.append(" 精度(precision) 0.1%"); | |||||
stringBuffer.append("\n体内年龄: "); | |||||
stringBuffer.append(age); | |||||
stringBuffer.append(" 范围(scope) 18-90"); | |||||
mlogList.add(0, stringBuffer.toString()); | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | |||||
} | |||||
@Override | |||||
public void onError(int code) { | |||||
mlogList.add(0, "错误码:" + code); | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | |||||
} | |||||
@Override | |||||
public void onVersion(String version) { | |||||
mlogList.add(0, "版本号:" + version); | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | |||||
} | |||||
@Override | |||||
public void onSupportUnit(List<SupportUnitBean> list) { | |||||
String listStr = ""; | |||||
for (SupportUnitBean supportUnitBean : list) { | |||||
listStr = supportUnitBean.toString(); | |||||
} | |||||
mlogList.add(0, "支持的单位列表:" + listStr); | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | |||||
} | |||||
@Override | |||||
public void onMcuBatteryStatus(int status, int battery) { | |||||
mlogList.add(0, "电量状态" + status + " 电量:" + battery); | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | |||||
} | |||||
/** | |||||
* @param status {@link#Bod} | |||||
*/ | |||||
@Override | |||||
public void setUnitCallback(int status) { | |||||
if (status == BLDBodyFatDataUtil.UnitResult.SUCCESS) { | |||||
mlogList.add(0, "下发单位回调" + status + " 成功"); | |||||
} else if (status == BLDBodyFatDataUtil.UnitResult.FAIL) { | |||||
mlogList.add(0, "下发单位回调" + status + " 失败"); | |||||
} else { | |||||
mlogList.add(0, "下发单位回调" + status + " 不支持"); | |||||
} | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | |||||
} | |||||
@Override | |||||
public void requestUserData(int status) { | |||||
if (status == BLDBodyFatDataUtil.REQUEST_SEND_USER) { | |||||
mlogList.add(0, "下发用户信息 " + status + " \n" + selectUser.toString()); | |||||
bodyFatBleUtilsData.sendData(BLDBodyFatDataUtil.getInstance().setUserInfo(selectUser)); | |||||
} else if (status == BLDBodyFatDataUtil.REQUEST_SEND_USER_RECEIVE_SUCESS) { | |||||
mlogList.add(0, "下发用户信息成功 " + status); | |||||
} else { | |||||
mlogList.add(0, "下发用户信息失败 " + status); | |||||
} | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | |||||
} | |||||
@Override | |||||
public void onClick(View v) { | |||||
int id = v.getId(); | |||||
} | |||||
private final int ToRefreUi = 300; | |||||
private final int GETLIST = 301; | |||||
private final int SETUNIT = 302; | |||||
private class MHandler extends Handler { | |||||
@Override | |||||
public void handleMessage(Message msg) { | |||||
super.handleMessage(msg); | |||||
switch (msg.what) { | |||||
case ToRefreUi: | |||||
if (listAdapter != null) { | |||||
listAdapter.notifyDataSetChanged(); | |||||
} | |||||
break; | |||||
case GETLIST: | |||||
if (bodyFatBleUtilsData != null) | |||||
bodyFatBleUtilsData.sendData(BLDBodyFatDataUtil.getInstance().getUnitSupportUnit()); | |||||
break; | |||||
case SETUNIT: | |||||
if (bodyFatBleUtilsData != null) | |||||
bodyFatBleUtilsData.sendData(BLDBodyFatDataUtil.getInstance().setWeightUnit(weighunit)); | |||||
break; | |||||
} | |||||
} | |||||
} | |||||
} |
import com.pingwang.bluetoothlib.utils.BleDensityUtil; | import com.pingwang.bluetoothlib.utils.BleDensityUtil; | ||||
import com.pingwang.bluetoothlib.utils.BleLog; | import com.pingwang.bluetoothlib.utils.BleLog; | ||||
import com.pingwang.bluetoothlib.utils.BleStrUtils; | import com.pingwang.bluetoothlib.utils.BleStrUtils; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import cn.net.aicare.modulelibrary.module.babyBodyFat.BabyBodyFatBleConfig; | import cn.net.aicare.modulelibrary.module.babyBodyFat.BabyBodyFatBleConfig; |
import com.pingwang.bluetoothlib.utils.BleDensityUtil; | import com.pingwang.bluetoothlib.utils.BleDensityUtil; | ||||
import com.pingwang.bluetoothlib.utils.BleLog; | import com.pingwang.bluetoothlib.utils.BleLog; | ||||
import com.pingwang.bluetoothlib.utils.BleStrUtils; | import com.pingwang.bluetoothlib.utils.BleStrUtils; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import cn.net.aicare.modulelibrary.module.babyscale.BabyBleConfig; | import cn.net.aicare.modulelibrary.module.babyscale.BabyBleConfig; | ||||
import cn.net.aicare.modulelibrary.module.babyscale.BabyDeviceData; | import cn.net.aicare.modulelibrary.module.babyscale.BabyDeviceData; | ||||
/** | /** | ||||
* xing<br> | * xing<br> | ||||
* 2019/4/25<br> | * 2019/4/25<br> | ||||
* 婴儿秤 | |||||
* 显示数据 | |||||
*/ | */ | ||||
public class BabyCmdActivity extends BleBaseActivity implements OnCallbackDis, OnBleVersionListener | public class BabyCmdActivity extends BleBaseActivity implements OnCallbackDis, OnBleVersionListener | ||||
, OnMcuParameterListener, OnBleCompanyListener, View.OnClickListener, | , OnMcuParameterListener, OnBleCompanyListener, View.OnClickListener, |
import com.pingwang.bluetoothlib.listener.OnBleRssiListener; | import com.pingwang.bluetoothlib.listener.OnBleRssiListener; | ||||
import com.pingwang.bluetoothlib.listener.OnBleSettingListener; | import com.pingwang.bluetoothlib.listener.OnBleSettingListener; | ||||
import com.pingwang.bluetoothlib.listener.OnBleVersionListener; | import com.pingwang.bluetoothlib.listener.OnBleVersionListener; | ||||
import com.pingwang.bluetoothlib.listener.OnCallbackDis; | |||||
import com.pingwang.bluetoothlib.listener.OnCallbackBle; | |||||
import com.pingwang.bluetoothlib.listener.OnMcuParameterListener; | import com.pingwang.bluetoothlib.listener.OnMcuParameterListener; | ||||
import com.pingwang.bluetoothlib.utils.BleDataUtils; | import com.pingwang.bluetoothlib.utils.BleDataUtils; | ||||
import com.pingwang.bluetoothlib.utils.BleLog; | import com.pingwang.bluetoothlib.utils.BleLog; | ||||
import com.pingwang.bluetoothlib.utils.BleStrUtils; | import com.pingwang.bluetoothlib.utils.BleStrUtils; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.Locale; | import java.util.Locale; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
* 2019/4/25<br> | * 2019/4/25<br> | ||||
* 基础指令信息数据显示 | * 基础指令信息数据显示 | ||||
*/ | */ | ||||
public class BleCmdActivity extends BleBaseActivity implements OnCallbackDis, OnBleDeviceDataListener, OnBleVersionListener, OnMcuParameterListener, OnBleErrListener, OnBleInfoListener, OnBleParameterListener, OnBleCompanyListener, OnBleSettingListener, OnBleHandshakeListener, View.OnClickListener, OnBleOtherDataListener, OnBleRssiListener { | |||||
public class BleCmdActivity extends BleBaseActivity implements OnCallbackBle, OnBleDeviceDataListener, OnBleVersionListener, OnMcuParameterListener, OnBleErrListener, OnBleInfoListener, | |||||
OnBleParameterListener, OnBleCompanyListener, OnBleSettingListener, OnBleHandshakeListener, View.OnClickListener, OnBleOtherDataListener, OnBleRssiListener { | |||||
private static String TAG = BleCmdActivity.class.getName(); | private static String TAG = BleCmdActivity.class.getName(); | ||||
private final int REFRESH_DATA = 3; | private final int REFRESH_DATA = 3; | ||||
private List<String> mList; | private List<String> mList; | ||||
private ArrayAdapter listAdapter; | private ArrayAdapter listAdapter; | ||||
private EditText etName, etMacType, etCid, etVid, etPid, etBroadcastTime, etMcuType, etSleepTime; | |||||
private EditText etName, etMacType, etCid, etVid, etPid, etBroadcastTime, etMcuType, etSleepTime, et_set_device; | |||||
private Context mContext; | private Context mContext; | ||||
private String mAddress; | private String mAddress; | ||||
private BleSendCmdUtil mBleSendCmdUtil; | private BleSendCmdUtil mBleSendCmdUtil; | ||||
findViewById(R.id.btnSleepTimeRead).setOnClickListener(this); | findViewById(R.id.btnSleepTimeRead).setOnClickListener(this); | ||||
findViewById(R.id.btn_start_ble).setOnClickListener(this); | findViewById(R.id.btn_start_ble).setOnClickListener(this); | ||||
findViewById(R.id.btnNameRssi).setOnClickListener(this); | findViewById(R.id.btnNameRssi).setOnClickListener(this); | ||||
findViewById(R.id.btn_set_device).setOnClickListener(this); | |||||
findViewById(R.id.btn_get_device).setOnClickListener(this); | |||||
findViewById(R.id.btnDis).setOnClickListener(this); | |||||
findViewById(R.id.btnConnect).setOnClickListener(this); | |||||
etName = findViewById(R.id.etName); | etName = findViewById(R.id.etName); | ||||
etMacType = findViewById(R.id.etMacType); | etMacType = findViewById(R.id.etMacType); | ||||
etCid = findViewById(R.id.etCid); | etCid = findViewById(R.id.etCid); | ||||
etBroadcastTime = findViewById(R.id.etBroadcastTime); | etBroadcastTime = findViewById(R.id.etBroadcastTime); | ||||
etMcuType = findViewById(R.id.etMcuType); | etMcuType = findViewById(R.id.etMcuType); | ||||
etSleepTime = findViewById(R.id.etSleepTime); | etSleepTime = findViewById(R.id.etSleepTime); | ||||
et_set_device = findViewById(R.id.et_set_device); | |||||
} | } | ||||
@Override | @Override | ||||
public void onClick(View v) { | public void onClick(View v) { | ||||
SendBleBean sendBleBean; | SendBleBean sendBleBean; | ||||
switch (v.getId()) { | switch (v.getId()) { | ||||
case R.id.btnDis: | |||||
if (mBleDevice!=null){ | |||||
mBleDevice.disconnect(); | |||||
} | |||||
mList.add(TimeUtils.getTime() + "断开连接"); | |||||
mHandler.sendEmptyMessage(REFRESH_DATA); | |||||
break; | |||||
case R.id.btnConnect: | |||||
mBluetoothService.connectDevice(mAddress); | |||||
mList.add(TimeUtils.getTime() + "连接设备"); | |||||
mHandler.sendEmptyMessage(REFRESH_DATA); | |||||
break; | |||||
case R.id.btnClear: | case R.id.btnClear: | ||||
if (mList != null) | if (mList != null) | ||||
mList.clear(); | mList.clear(); | ||||
} | } | ||||
break; | break; | ||||
case R.id.btnVersion: | case R.id.btnVersion: | ||||
// sendBleBean = new SendBleBean(); | |||||
// sendBleBean.setHex(mBleSendCmdUtil.getBleVersion()); | |||||
// sendData(sendBleBean); | |||||
if (mBleDevice != null) { | if (mBleDevice != null) { | ||||
String version = mBleDevice.getVersion(); | String version = mBleDevice.getVersion(); | ||||
if (TextUtils.isEmpty(version)) { | |||||
sendBleBean = new SendBleBean(); | |||||
sendBleBean.setHex(mBleSendCmdUtil.getBleVersion()); | |||||
sendData(sendBleBean); | |||||
mList.add(TimeUtils.getTime() + "正在获取版本号."); | |||||
mHandler.sendEmptyMessage(REFRESH_DATA); | |||||
return; | |||||
} | |||||
mList.add(TimeUtils.getTime() + "版本号:" + version); | mList.add(TimeUtils.getTime() + "版本号:" + version); | ||||
mHandler.sendEmptyMessage(REFRESH_DATA); | mHandler.sendEmptyMessage(REFRESH_DATA); | ||||
} | } | ||||
mBleDevice.readRssi(); | mBleDevice.readRssi(); | ||||
} | } | ||||
break; | break; | ||||
case R.id.btn_set_device: | |||||
// 设置设备信息 | |||||
String setDevice = et_set_device.getText().toString(); | |||||
setDevice = setDevice.replace(" ", ""); | |||||
setDevice = setDevice.replace(",", ""); | |||||
if (TextUtils.isEmpty(setDevice)) { | |||||
return; | |||||
} | |||||
byte[] data = BleStrUtils.stringToByte(setDevice); | |||||
sendBleBean = new SendBleBean(); | |||||
sendBleBean.setHex(mBleSendCmdUtil.setDeviceInfo(data)); | |||||
sendData(sendBleBean); | |||||
mList.add(TimeUtils.getTime() + "设置设备信息:" + BleStrUtils.byte2HexStr(data)); | |||||
mHandler.sendEmptyMessage(REFRESH_DATA); | |||||
break; | |||||
case R.id.btn_get_device: | |||||
// 获取设备信息 | |||||
sendBleBean = new SendBleBean(); | |||||
sendBleBean.setHex(mBleSendCmdUtil.getDeviceInfo()); | |||||
sendData(sendBleBean); | |||||
mList.add(TimeUtils.getTime() + "读取设备信息"); | |||||
mHandler.sendEmptyMessage(REFRESH_DATA); | |||||
break; | |||||
} | } | ||||
} | } | ||||
mList.add(TimeUtils.getTime() + "服务与界面建立连接成功"); | mList.add(TimeUtils.getTime() + "服务与界面建立连接成功"); | ||||
mHandler.sendEmptyMessage(REFRESH_DATA); | mHandler.sendEmptyMessage(REFRESH_DATA); | ||||
CallbackDisIm.getInstance().addListListener(this); | CallbackDisIm.getInstance().addListListener(this); | ||||
mBluetoothService.setOnCallback(this); | |||||
mBluetoothService.deviceConnectListener(mAddress, true); | |||||
connectSuccess(); | |||||
} | |||||
private void connectSuccess() { | |||||
if (mBluetoothService != null) { | if (mBluetoothService != null) { | ||||
mBleDevice = mBluetoothService.getBleDevice(mAddress); | mBleDevice = mBluetoothService.getBleDevice(mAddress); | ||||
if (mBleDevice == null) { | if (mBleDevice == null) { | ||||
finish(); | |||||
BleLog.i(TAG, "mBleDevice==null"); | BleLog.i(TAG, "mBleDevice==null"); | ||||
return; | return; | ||||
} | } | ||||
mBleDevice.setOnBleHandshakeListener(this); | mBleDevice.setOnBleHandshakeListener(this); | ||||
mBleDevice.setOnBleOtherDataListener(this); | mBleDevice.setOnBleOtherDataListener(this); | ||||
mBleDevice.setOnBleRssiListener(this); | mBleDevice.setOnBleRssiListener(this); | ||||
} | } | ||||
} | } | ||||
BleLog.i(TAG, "连接断开"); | BleLog.i(TAG, "连接断开"); | ||||
if (mAddress.equals(mac)) { | if (mAddress.equals(mac)) { | ||||
Toast.makeText(mContext, "连接断开:" + code, Toast.LENGTH_SHORT).show(); | Toast.makeText(mContext, "连接断开:" + code, Toast.LENGTH_SHORT).show(); | ||||
finish(); | |||||
mBleDevice=null; | |||||
} | } | ||||
} | } | ||||
public void onServicesDiscovered(@NonNull String mac) { | public void onServicesDiscovered(@NonNull String mac) { | ||||
//TODO 连接成功(获取服务成功) | //TODO 连接成功(获取服务成功) | ||||
BleLog.i(TAG, "连接成功(获取服务成功)"); | BleLog.i(TAG, "连接成功(获取服务成功)"); | ||||
connectSuccess(); | |||||
} | } | ||||
@Override | @Override | ||||
public void onNotifyDataA6(byte[] hex) { | public void onNotifyDataA6(byte[] hex) { | ||||
if (hex != null && hex.length > 0) { | |||||
switch (hex[0]) { | |||||
case CmdConfig.SET_DEVICE_INFO: { | |||||
// 设置设备信息 | |||||
mList.add(TimeUtils.getTime() + "设置设备信息:结果:" + hex[1]); | |||||
mHandler.sendEmptyMessage(REFRESH_DATA); | |||||
} | |||||
break; | |||||
case CmdConfig.GET_DEVICE_INFO: { | |||||
// 读取设备信息 | |||||
byte[] data = new byte[hex.length - 1]; | |||||
System.arraycopy(hex, 1, data, 0, data.length); | |||||
mList.add(TimeUtils.getTime() + "读取设备信息:结果:" + BleStrUtils.byte2HexStr(data)); | |||||
mHandler.sendEmptyMessage(REFRESH_DATA); | |||||
} | |||||
break; | |||||
} | |||||
} | |||||
} | } | ||||
@Override | @Override | ||||
if (hex != null) | if (hex != null) | ||||
data = BleStrUtils.byte2HexStr(hex); | data = BleStrUtils.byte2HexStr(hex); | ||||
if (type == 100) { | if (type == 100) { | ||||
mList.add(TimeUtils.getTime() + "send->" + data); | |||||
mList.add(TimeUtils.getTime() + "cid=" + type + "\nsend->" + data); | |||||
} else { | } else { | ||||
mList.add(TimeUtils.getTime() + "notify->" + data); | |||||
mList.add(TimeUtils.getTime() + "cid=" + type + "\nnotify->" + data); | |||||
} | } | ||||
mHandler.sendEmptyMessage(REFRESH_DATA); | mHandler.sendEmptyMessage(REFRESH_DATA); | ||||
} | } | ||||
} | } | ||||
@Override | @Override | ||||
public void OnSettingReturn(byte cmdType, byte cmdData) { | |||||
public void OnSettingReturn(int cmdType, int cmdData) { | |||||
if (CmdConfig.SET_TO_SLEEP == cmdType && cmdData == CmdConfig.SETTING_SUCCESS) { | if (CmdConfig.SET_TO_SLEEP == cmdType && cmdData == CmdConfig.SETTING_SUCCESS) { | ||||
//进入睡眠 | //进入睡眠 | ||||
} | } |
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import cn.net.aicare.modulelibrary.module.BloodGlucose.BloodGlucoseBleDeviceData; | import cn.net.aicare.modulelibrary.module.BloodGlucose.BloodGlucoseBleDeviceData; | ||||
import cn.net.aicare.modulelibrary.module.BloodGlucose.BloodGlucoseUtil; | import cn.net.aicare.modulelibrary.module.BloodGlucose.BloodGlucoseUtil; | ||||
public class BloodGlucoseActivity extends BleBaseActivity implements OnCallbackBle ,BloodGlucoseBleDeviceData.BloodGlucoseCallback{ | |||||
public class BloodGlucoseActivity extends aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity implements OnCallbackBle ,BloodGlucoseBleDeviceData.BloodGlucoseCallback{ | |||||
private Button support_unit, quest_status,showdata; | private Button support_unit, quest_status,showdata; | ||||
private RadioButton mmol, mg; | private RadioButton mmol, mg; |
import android.widget.TextView; | import android.widget.TextView; | ||||
import android.widget.Toast; | import android.widget.Toast; | ||||
import androidx.annotation.Nullable; | |||||
import androidx.appcompat.widget.AppCompatSeekBar; | |||||
import com.pingwang.bluetoothlib.bean.BleValueBean; | import com.pingwang.bluetoothlib.bean.BleValueBean; | ||||
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 com.pingwang.bluetoothlib.utils.BleStrUtils; | import com.pingwang.bluetoothlib.utils.BleStrUtils; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import androidx.annotation.Nullable; | |||||
import androidx.appcompat.widget.AppCompatSeekBar; | |||||
import cn.net.aicare.modulelibrary.module.BloodOxygen.BleBloodOxygenBleConfig; | import cn.net.aicare.modulelibrary.module.BloodOxygen.BleBloodOxygenBleConfig; | ||||
import cn.net.aicare.modulelibrary.module.BloodOxygen.BleBloodOxygenDeviceData; | import cn.net.aicare.modulelibrary.module.BloodOxygen.BleBloodOxygenDeviceData; | ||||
import android.widget.EditText; | import android.widget.EditText; | ||||
import android.widget.ListView; | import android.widget.ListView; | ||||
import androidx.annotation.Nullable; | |||||
import androidx.appcompat.app.AppCompatActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import org.json.JSONArray; | import org.json.JSONArray; | ||||
import org.json.JSONException; | import org.json.JSONException; | ||||
import org.json.JSONObject; | import org.json.JSONObject; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.Locale; | import java.util.Locale; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import androidx.annotation.Nullable; | |||||
import androidx.appcompat.app.AppCompatActivity; | |||||
/** | /** | ||||
* 4G血糖仪 | * 4G血糖仪 | ||||
*/ | */ | ||||
} | } | ||||
}); | }); | ||||
} | } | ||||
public void login() throws Throwable { | public void login() throws Throwable { | ||||
//以下登录信息为服务器key和用户账号密码,仅供测试使用上线使用会导致只有一个用户可用 | |||||
String key = "inet_elink";//key | |||||
String username = "dhls@qq.com";//用户账号 | |||||
String password = "dc483e80a7a0bd9ef71d8cf973673924";//用户密码 | |||||
String mUrl = url + "/api/user/login?key=" + key + "&username=" + username + "&password=" + password; | |||||
String mUrl=url + "/api/user/login?key=inet_elink&username=dhls@qq.com&password=dc483e80a7a0bd9ef71d8cf973673924"; | |||||
URL uri = new URL(mUrl); | URL uri = new URL(mUrl); | ||||
HttpURLConnection httpURLConnection = (HttpURLConnection) uri.openConnection(); | HttpURLConnection httpURLConnection = (HttpURLConnection) uri.openConnection(); | ||||
// Post请求必须设置允许输出 | // Post请求必须设置允许输出 |
import com.pingwang.bluetoothlib.listener.OnScanFilterListener; | import com.pingwang.bluetoothlib.listener.OnScanFilterListener; | ||||
import com.pingwang.bluetoothlib.utils.BleDensityUtil; | import com.pingwang.bluetoothlib.utils.BleDensityUtil; | ||||
import com.pingwang.bluetoothlib.utils.BleLog; | import com.pingwang.bluetoothlib.utils.BleLog; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.UUID; | import java.util.UUID; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import cn.net.aicare.modulelibrary.module.BloodOxygen.BroadcastBloodOxygenBleConfig; | import cn.net.aicare.modulelibrary.module.BloodOxygen.BroadcastBloodOxygenBleConfig; | ||||
import cn.net.aicare.modulelibrary.module.BloodOxygen.BroadcastBloodOxygenDeviceData; | import cn.net.aicare.modulelibrary.module.BloodOxygen.BroadcastBloodOxygenDeviceData; |
import com.pingwang.bluetoothlib.utils.BleDensityUtil; | import com.pingwang.bluetoothlib.utils.BleDensityUtil; | ||||
import com.pingwang.bluetoothlib.utils.BleLog; | import com.pingwang.bluetoothlib.utils.BleLog; | ||||
import com.pingwang.bluetoothlib.utils.BleStrUtils; | import com.pingwang.bluetoothlib.utils.BleStrUtils; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.UUID; | import java.util.UUID; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import cn.net.aicare.modulelibrary.module.BroadcastScale.BroadcastScaleBleConfig; | import cn.net.aicare.modulelibrary.module.BroadcastScale.BroadcastScaleBleConfig; | ||||
import cn.net.aicare.modulelibrary.module.BroadcastScale.BroadcastScaleDeviceData; | import cn.net.aicare.modulelibrary.module.BroadcastScale.BroadcastScaleDeviceData; | ||||
return; | return; | ||||
} | } | ||||
mOldData=data; | mOldData=data; | ||||
mList.add(TimeUtils.getTime() + "数据ID" + type+" ,||解密数据:"+data+" ,||原始数据:"+ BleStrUtils.byte2HexStr(dataOriginal)); | |||||
mList.add(TimeUtils.getTime() + "数据ID" + type+" ,||解密数据:"+data+" ,||原始数据:"+BleStrUtils.byte2HexStr(dataOriginal)); | |||||
mHandler.sendEmptyMessage(REFRESH_DATA); | mHandler.sendEmptyMessage(REFRESH_DATA); | ||||
} | } | ||||
import android.widget.EditText; | import android.widget.EditText; | ||||
import android.widget.ListView; | import android.widget.ListView; | ||||
import androidx.annotation.NonNull; | |||||
import androidx.annotation.Nullable; | |||||
import com.pingwang.bluetoothlib.device.BleDevice; | import com.pingwang.bluetoothlib.device.BleDevice; | ||||
import com.pingwang.bluetoothlib.device.BleSendCmdUtil; | import com.pingwang.bluetoothlib.device.BleSendCmdUtil; | ||||
import com.pingwang.bluetoothlib.device.SendBleBean; | import com.pingwang.bluetoothlib.device.SendBleBean; | ||||
import com.pingwang.bluetoothlib.listener.OnMcuParameterListener; | import com.pingwang.bluetoothlib.listener.OnMcuParameterListener; | ||||
import com.pingwang.bluetoothlib.utils.BleLog; | import com.pingwang.bluetoothlib.utils.BleLog; | ||||
import com.pingwang.bluetoothlib.utils.BleStrUtils; | import com.pingwang.bluetoothlib.utils.BleStrUtils; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import androidx.annotation.NonNull; | |||||
import androidx.annotation.Nullable; | |||||
import cn.net.aicare.modulelibrary.module.sphygmomanometer.SphyBleConfig; | import cn.net.aicare.modulelibrary.module.sphygmomanometer.SphyBleConfig; | ||||
import android.widget.ListView; | import android.widget.ListView; | ||||
import android.widget.Toast; | import android.widget.Toast; | ||||
import androidx.annotation.NonNull; | |||||
import androidx.annotation.Nullable; | |||||
import androidx.appcompat.app.AppCompatActivity; | |||||
import com.pingwang.bluetoothlib.bean.BleValueBean; | import com.pingwang.bluetoothlib.bean.BleValueBean; | ||||
import com.pingwang.bluetoothlib.listener.CallbackDisIm; | import com.pingwang.bluetoothlib.listener.CallbackDisIm; | ||||
import com.pingwang.bluetoothlib.listener.OnCallbackBle; | import com.pingwang.bluetoothlib.listener.OnCallbackBle; | ||||
import com.pingwang.bluetoothlib.server.ELinkBleServer; | import com.pingwang.bluetoothlib.server.ELinkBleServer; | ||||
import com.pingwang.bluetoothlib.utils.BleLog; | import com.pingwang.bluetoothlib.utils.BleLog; | ||||
import com.pingwang.bluetoothlib.utils.BleStrUtils; | import com.pingwang.bluetoothlib.utils.BleStrUtils; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.dialog.LoadingIosDialogFragment; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.dialog.LoadingIosDialogFragment; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import androidx.annotation.NonNull; | |||||
import androidx.annotation.Nullable; | |||||
import androidx.appcompat.app.AppCompatActivity; | |||||
/** | /** | ||||
* xing<br> | * xing<br> |
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 aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.EightBodyFatAlgorithms; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.EightBodyFatBean; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import cn.net.aicare.modulelibrary.module.EightBodyfatscale.EightBodyFatBleDeviceData; | import cn.net.aicare.modulelibrary.module.EightBodyfatscale.EightBodyFatBleDeviceData; | ||||
import cn.net.aicare.modulelibrary.module.EightBodyfatscale.EightBodyFatUtil; | import cn.net.aicare.modulelibrary.module.EightBodyfatscale.EightBodyFatUtil; | ||||
} | } | ||||
}); | }); | ||||
stlb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { | stlb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { | ||||
@Override | @Override | ||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { | public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { | ||||
if (isChecked) { | if (isChecked) { | ||||
@Override | @Override | ||||
public void onState(int type, int typeState, int result) { | public void onState(int type, int typeState, int result) { | ||||
switch (type) { | switch (type) { | ||||
// case EightBodyFatUtil.WEIGHING: | |||||
// case EightBodyfatUtil.WEIGHING: | |||||
// switch (typeState) { | // switch (typeState) { | ||||
// case EightBodyFatUtil.WEIGHT_REAL_TIME_WEIGH: | |||||
// case EightBodyfatUtil.WEIGHT_REAL_TIME_WEIGH: | |||||
// loglist.add(0, "实时体重"); | // loglist.add(0, "实时体重"); | ||||
// break; | // break; | ||||
// case EightBodyFatUtil.WEIGHT_STABILIZATION_WEIGHT: | |||||
// case EightBodyfatUtil.WEIGHT_STABILIZATION_WEIGHT: | |||||
// loglist.add(0, "稳定体重"); | // loglist.add(0, "稳定体重"); | ||||
// } | // } | ||||
// break; | // break; |
import android.widget.EditText; | import android.widget.EditText; | ||||
import android.widget.ListView; | import android.widget.ListView; | ||||
import androidx.annotation.NonNull; | |||||
import androidx.annotation.Nullable; | |||||
import com.pingwang.bluetoothlib.device.BleDevice; | import com.pingwang.bluetoothlib.device.BleDevice; | ||||
import com.pingwang.bluetoothlib.device.BleSendCmdUtil; | import com.pingwang.bluetoothlib.device.BleSendCmdUtil; | ||||
import com.pingwang.bluetoothlib.device.SendBleBean; | import com.pingwang.bluetoothlib.device.SendBleBean; | ||||
import com.pingwang.bluetoothlib.utils.BleDensityUtil; | import com.pingwang.bluetoothlib.utils.BleDensityUtil; | ||||
import com.pingwang.bluetoothlib.utils.BleLog; | import com.pingwang.bluetoothlib.utils.BleLog; | ||||
import com.pingwang.bluetoothlib.utils.BleStrUtils; | import com.pingwang.bluetoothlib.utils.BleStrUtils; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import androidx.annotation.NonNull; | |||||
import androidx.annotation.Nullable; | |||||
import cn.net.aicare.modulelibrary.module.height.HeightDeviceData; | import cn.net.aicare.modulelibrary.module.height.HeightDeviceData; | ||||
/** | /** | ||||
* xing<br> | * xing<br> | ||||
* 2019/4/25<br> | * 2019/4/25<br> | ||||
* 身高仪 | |||||
*y身高仪 | |||||
*/ | */ | ||||
public class HeightCmdActivity extends BleBaseActivity implements OnCallbackDis, | public class HeightCmdActivity extends BleBaseActivity implements OnCallbackDis, | ||||
HeightDeviceData.onNotifyData, OnBleVersionListener, OnMcuParameterListener, OnBleCompanyListener, View.OnClickListener { | |||||
HeightDeviceData.onNotifyData, OnBleVersionListener , OnMcuParameterListener, OnBleCompanyListener, View.OnClickListener { | |||||
private static String TAG = HeightCmdActivity.class.getName(); | private static String TAG = HeightCmdActivity.class.getName(); | ||||
private final int REFRESH_DATA = 3; | private final int REFRESH_DATA = 3; |
import android.widget.ListView; | import android.widget.ListView; | ||||
import android.widget.TextView; | import android.widget.TextView; | ||||
import androidx.annotation.NonNull; | |||||
import androidx.annotation.Nullable; | |||||
import com.pingwang.bluetoothlib.bean.BleValueBean; | import com.pingwang.bluetoothlib.bean.BleValueBean; | ||||
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 aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import java.lang.ref.WeakReference; | import java.lang.ref.WeakReference; | ||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import androidx.annotation.NonNull; | |||||
import androidx.annotation.Nullable; | |||||
import cn.net.aicare.modulelibrary.module.HeightWeightScale.HeightBodyFatBleData; | import cn.net.aicare.modulelibrary.module.HeightWeightScale.HeightBodyFatBleData; | ||||
import cn.net.aicare.modulelibrary.module.HeightWeightScale.HeightBodyFatBleUntils; | import cn.net.aicare.modulelibrary.module.HeightWeightScale.HeightBodyFatBleUntils; | ||||
/** | /** | ||||
* 身高体重秤 | |||||
* 身高体脂秤 | |||||
*/ | */ | ||||
public class HeightWeightScaleActivity extends BleBaseActivity implements OnCallbackBle, HeightBodyFatBleData.OnHeightBodyFatDataCallback, View.OnClickListener { | public class HeightWeightScaleActivity extends BleBaseActivity implements OnCallbackBle, HeightBodyFatBleData.OnHeightBodyFatDataCallback, View.OnClickListener { | ||||
private String mAddress = ""; | private String mAddress = ""; |
import android.view.View; | import android.view.View; | ||||
import android.widget.TextView; | import android.widget.TextView; | ||||
import com.pingwang.bluetoothlib.AILinkBleManager; | |||||
import com.pingwang.bluetoothlib.AILinkSDK; | import com.pingwang.bluetoothlib.AILinkSDK; | ||||
import com.pingwang.bluetoothlib.config.BleConfig; | |||||
import com.pingwang.bluetoothlib.utils.BleLog; | import com.pingwang.bluetoothlib.utils.BleLog; | ||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.config.BleDeviceConfig; | import aicare.net.cn.sdk.ailinksdkdemoandroid.config.BleDeviceConfig; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.find.FindDeviceNewActivity; | import aicare.net.cn.sdk.ailinksdkdemoandroid.find.FindDeviceNewActivity; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.broadcast_height.BroadcastHeightActivity; | import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.broadcast_height.BroadcastHeightActivity; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.broadcast_nutrition.BroadNutritionActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.SP; | import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.SP; | ||||
mList.add(findViewById(R.id.btn_baby)); | mList.add(findViewById(R.id.btn_baby)); | ||||
mList.add(findViewById(R.id.btn_height)); | mList.add(findViewById(R.id.btn_height)); | ||||
mList.add(findViewById(R.id.btn_ble)); | mList.add(findViewById(R.id.btn_ble)); | ||||
mList.add(findViewById(R.id.btn_lock)); | |||||
// mList.add(findViewById(R.id.btn_lock)); | |||||
mList.add(findViewById(R.id.btn_ble_test)); | mList.add(findViewById(R.id.btn_ble_test)); | ||||
mList.add(findViewById(R.id.btnConnectTest)); | mList.add(findViewById(R.id.btnConnectTest)); | ||||
mList.add(findViewById(R.id.btn_ad_weight)); | mList.add(findViewById(R.id.btn_ad_weight)); | ||||
mList.add(findViewById(R.id.btn_food_temp)); | mList.add(findViewById(R.id.btn_food_temp)); | ||||
mList.add(findViewById(R.id.btn_temp_humidity)); | mList.add(findViewById(R.id.btn_temp_humidity)); | ||||
mList.add(findViewById(R.id.btn_share_condom)); | mList.add(findViewById(R.id.btn_share_condom)); | ||||
mList.add(findViewById(R.id.btn_rope_skip)); | |||||
mList.add(findViewById(R.id.btn_broadcast_nutrition)); | |||||
mList.add(findViewById(R.id.btn_ble_nutrition)); | |||||
for (View view : mList) { | for (View view : mList) { | ||||
view.setOnClickListener(listener); | view.setOnClickListener(listener); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
// AILinkBleManager.getInstance().init(mContext, new AILinkBleManager.onInitListener() { | |||||
// @Override | |||||
// public void onInitSuccess() { | |||||
// L.i("初始化成功"); | |||||
// AILinkBleManager.getInstance().startScan(1000); | |||||
// AILinkBleManager.getInstance().setOnCallbackBle(new OnCallbackBle() { | |||||
// @Override | |||||
// public void onScanning(BleValueBean data) { | |||||
// L.i("当前搜索到的设备:"+data.getName()+" mac="+data.getMac()); | |||||
// AILinkBleManager.getInstance().stopScan(); | |||||
// AILinkBleManager.getInstance().connectDevice(data); | |||||
// } | |||||
// | |||||
// @Override | |||||
// public void onServicesDiscovered(String mac) { | |||||
// L.i("连接成功:"+mac); | |||||
// } | |||||
// }); | |||||
// | |||||
// } | |||||
// | |||||
// @Override | |||||
// public void onInitFailure() { | |||||
// L.i("初始化失败"); | |||||
// } | |||||
// }); | |||||
} | } | ||||
@Override | @Override | ||||
protected void initData() { | protected void initData() { | ||||
initPermissions(); | initPermissions(); | ||||
} | } | ||||
@Override | @Override | ||||
BleLog.init("", "", BuildConfig.DEBUG); | BleLog.init("", "", BuildConfig.DEBUG); | ||||
String version = getString(R.string.version) + ":" + BuildConfig.VERSION_NAME; | String version = getString(R.string.version) + ":" + BuildConfig.VERSION_NAME; | ||||
((TextView) findViewById(R.id.tv_app_version)).setText(version); | ((TextView) findViewById(R.id.tv_app_version)).setText(version); | ||||
AILinkSDK.getInstance().init(getApplication());//sdk | |||||
AILinkSDK.getInstance().init(getApplication(), new AILinkBleManager.onInitListener() { | |||||
@Override | |||||
public void onInitSuccess() { | |||||
} | |||||
@Override | |||||
public void onInitFailure() { | |||||
} | |||||
});//sdk | |||||
BleConfig.addVendorID(0xac05); | |||||
SP.init(this); | SP.init(this); | ||||
} | } | ||||
switch (v.getId()) { | switch (v.getId()) { | ||||
case R.id.btn_clear_shake_hands: | case R.id.btn_clear_shake_hands: | ||||
type= BleDeviceConfig.CLEAR_SHAKE_HANDS; | |||||
type=BleDeviceConfig.CLEAR_SHAKE_HANDS; | |||||
break; | break; | ||||
case R.id.btn_sphy: | case R.id.btn_sphy: | ||||
type = BleDeviceConfig.SHARE_SOCKET; | type = BleDeviceConfig.SHARE_SOCKET; | ||||
break; | break; | ||||
case R.id.btn_share_condom: | case R.id.btn_share_condom: | ||||
// 共享套套机 | |||||
// 共享插座 | |||||
type = BleDeviceConfig.SHARE_CONDOM; | type = BleDeviceConfig.SHARE_CONDOM; | ||||
break; | break; | ||||
case R.id.btn_find: | case R.id.btn_find: | ||||
case R.id.btn_temp_humidity: | case R.id.btn_temp_humidity: | ||||
type= BleDeviceConfig.TEMP_Humidity; | type= BleDeviceConfig.TEMP_Humidity; | ||||
break; | break; | ||||
case R.id.btn_rope_skip: | |||||
type=BleDeviceConfig.ROPE_SKIPPING; | |||||
break; | |||||
case R.id.btn_broadcast_nutrition: | |||||
// 广播营养秤 | |||||
Intent broadcastNutritionIntent = new Intent(MainActivity.this, BroadNutritionActivity.class); | |||||
startActivity(broadcastNutritionIntent); | |||||
return; | |||||
case R.id.btn_ble_nutrition: | |||||
// 蓝牙营养秤 | |||||
type = BleDeviceConfig.BLE_NUTRITION_SCALE; | |||||
break; | |||||
} | } | ||||
startActivity(type); | startActivity(type); | ||||
} | } | ||||
} | } | ||||
private void startActivity(int tyep) { | |||||
private void startActivity(int type) { | |||||
Intent intent = new Intent(this, ShowBleActivity.class); | Intent intent = new Intent(this, ShowBleActivity.class); | ||||
intent.putExtra("type", tyep); | |||||
intent.putExtra("type", type); | |||||
startActivity(intent); | startActivity(intent); | ||||
} | } | ||||
package aicare.net.cn.sdk.ailinksdkdemoandroid; | |||||
import android.os.Bundle; | |||||
import android.view.View; | |||||
import android.widget.ArrayAdapter; | |||||
import android.widget.ListView; | |||||
import com.google.gson.Gson; | |||||
import com.pingwang.bluetoothlib.device.BleDevice; | |||||
import com.pingwang.bluetoothlib.listener.OnCallbackBle; | |||||
import java.util.ArrayList; | |||||
import java.util.List; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import androidx.annotation.Nullable; | |||||
import cn.net.aicare.modulelibrary.module.RopeSkipping.OnRopeSkipCallBack; | |||||
import cn.net.aicare.modulelibrary.module.RopeSkipping.RopeSkipRecord; | |||||
import cn.net.aicare.modulelibrary.module.RopeSkipping.RopeSkippingBleData; | |||||
public class RopeSkippingActivity extends BleBaseActivity implements View.OnClickListener, OnCallbackBle, OnRopeSkipCallBack { | |||||
private List<String> logList; | |||||
private ArrayAdapter mArrayAdapter; | |||||
private ListView listviw; | |||||
private String mAddress; | |||||
@Override | |||||
public void onServiceSuccess() { | |||||
mBluetoothService.setOnCallback(this); | |||||
logList.add("绑定服务成功"); | |||||
if (mBluetoothService != null) { | |||||
mBluetoothService.setOnCallback(this); | |||||
BleDevice bleDevice = mBluetoothService.getBleDevice(mAddress); | |||||
if (bleDevice != null) { | |||||
RopeSkippingBleData.init(bleDevice); | |||||
RopeSkippingBleData.getInstance().setOnRopeSkipCallBack(this); | |||||
} | |||||
} | |||||
} | |||||
@Override | |||||
public void onServiceErr() { | |||||
if (mArrayAdapter != null && logList != null) { | |||||
logList.add("绑定服务失败"); | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
} | |||||
} | |||||
@Override | |||||
public void unbindServices() { | |||||
if (mArrayAdapter != null && logList != null) { | |||||
logList.add("解除绑定服务"); | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
} | |||||
} | |||||
@Override | |||||
protected void onCreate(@Nullable Bundle savedInstanceState) { | |||||
super.onCreate(savedInstanceState); | |||||
mAddress = getIntent().getStringExtra("mac"); | |||||
setContentView(R.layout.activity_rope_skipping); | |||||
listviw = findViewById(R.id.listview); | |||||
findViewById(R.id.btn_syn_time).setOnClickListener(this); | |||||
findViewById(R.id.btn_free_jump).setOnClickListener(this); | |||||
findViewById(R.id.btn_time_jump).setOnClickListener(this); | |||||
findViewById(R.id.btn_num_jump).setOnClickListener(this); | |||||
findViewById(R.id.btn_stop_free_jump).setOnClickListener(this); | |||||
findViewById(R.id.btn_stop_time_jump).setOnClickListener(this); | |||||
findViewById(R.id.btn_stop_num_jump).setOnClickListener(this); | |||||
findViewById(R.id.btn_get_history).setOnClickListener(this); | |||||
findViewById(R.id.btn_clear_log).setOnClickListener(this); | |||||
findViewById(R.id.btn_default_timer).setOnClickListener(this); | |||||
findViewById(R.id.btn_default_num).setOnClickListener(this); | |||||
findViewById(R.id.btn_bind).setOnClickListener(this); | |||||
logList = new ArrayList<>(); | |||||
mArrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, logList); | |||||
listviw.setAdapter(mArrayAdapter); | |||||
} | |||||
@Override | |||||
public void onClick(View v) { | |||||
if (v.getId() == R.id.btn_syn_time) { | |||||
logList.add("同步时间搓"); | |||||
if (RopeSkippingBleData.getInstance() != null) { | |||||
RopeSkippingBleData.getInstance().synTime(System.currentTimeMillis()); | |||||
} | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
} else if (v.getId() == R.id.btn_free_jump) { | |||||
logList.add("启动自由跳绳"); | |||||
if (RopeSkippingBleData.getInstance() != null) { | |||||
RopeSkippingBleData.getInstance().startOrStopMode(1, 1); | |||||
} | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
} else if (v.getId() == R.id.btn_time_jump) { | |||||
logList.add("启动倒计时跳绳"); | |||||
if (RopeSkippingBleData.getInstance() != null) { | |||||
RopeSkippingBleData.getInstance().startOrStopMode(2, 1); | |||||
} | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
} else if (v.getId() == R.id.btn_num_jump) { | |||||
logList.add("启动倒计数跳绳绳"); | |||||
if (RopeSkippingBleData.getInstance() != null) { | |||||
RopeSkippingBleData.getInstance().startOrStopMode(3, 1); | |||||
} | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
} else if (v.getId() == R.id.btn_clear_log) { | |||||
logList.clear(); | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
} else if (v.getId() == R.id.btn_stop_free_jump) { | |||||
logList.add("结束自由跳绳"); | |||||
if (RopeSkippingBleData.getInstance() != null) { | |||||
RopeSkippingBleData.getInstance().startOrStopMode(1, 0); | |||||
} | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
} else if (v.getId() == R.id.btn_stop_time_jump) { | |||||
logList.add("结束倒计时跳绳"); | |||||
if (RopeSkippingBleData.getInstance() != null) { | |||||
RopeSkippingBleData.getInstance().startOrStopMode(2, 0); | |||||
} | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
} else if (v.getId() == R.id.btn_stop_num_jump) { | |||||
logList.add("结束倒计数跳绳绳"); | |||||
if (RopeSkippingBleData.getInstance() != null) { | |||||
RopeSkippingBleData.getInstance().startOrStopMode(3, 0); | |||||
} | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
} else if (v.getId() == R.id.btn_default_num) { | |||||
logList.add("默认倒计数100"); | |||||
if (RopeSkippingBleData.getInstance() != null) { | |||||
RopeSkippingBleData.getInstance().setCountDownNum(50); | |||||
} | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
} else if (v.getId() == R.id.btn_default_timer) { | |||||
logList.add("默认倒计时60"); | |||||
if (RopeSkippingBleData.getInstance() != null) { | |||||
RopeSkippingBleData.getInstance().setTimerNum(120); | |||||
} | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
} else if (v.getId() == R.id.btn_get_history) { | |||||
logList.add("获取离线记录"); | |||||
if (RopeSkippingBleData.getInstance() != null) { | |||||
RopeSkippingBleData.getInstance().offlineHistory(1); | |||||
} | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
} else if (v.getId() == R.id.btn_bind) { | |||||
logList.add("请按确认按钮"); | |||||
if (RopeSkippingBleData.getInstance() != null) { | |||||
RopeSkippingBleData.getInstance().questBind(); | |||||
} | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
} | |||||
} | |||||
@Override | |||||
public void onFinish(RopeSkipRecord ropeSkipBean) { | |||||
logList.add("跳绳结束"); | |||||
logList.add(ropeSkipBean.toString() + " \n绊绳=" + new Gson().toJson(ropeSkipBean.getStopDetail())); | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
} | |||||
@Override | |||||
public void onBattery(int battery) { | |||||
} | |||||
@Override | |||||
public void onCurrentData(int status, int mode, int defaultValue, int currentJumpNum, int currentJumpTime, int batter) { | |||||
logList.add("实时数据 \n" + "状态: " + status + " ( 0:准备 1:进行中 2:完成) \n" + "模式: " | |||||
+ mode + " (1:自由 2:倒计时 3:倒计数) \n" | |||||
+ "默认值: " + defaultValue + " 电量 " + batter + "\n 当前个数: " + currentJumpNum + " 时间 " + currentJumpTime); | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
} | |||||
@Override | |||||
public void onResultTimerAndCountDownNum(int mode, int timer) { | |||||
if (mode == 2) { | |||||
logList.add("设置默认时间:" + timer); | |||||
} else if (mode == 3) { | |||||
logList.add("设置默认个数:" + timer); | |||||
} | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
} | |||||
@Override | |||||
public void onResultStatus(int mode, int result) { | |||||
logList.add("模式: " + mode + " (1:自由 2:倒计时 3:倒计数)" + "结果: " + result + "0:成功 1:失败 2:不支持"); | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
} | |||||
@Override | |||||
public void onBindResult(int result) { | |||||
logList.add("确认绑定结果: " + result + " 0 : 成功 1 :失败 2 不支持"); | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
} | |||||
@Override | |||||
public void onFinishOffHistory(List<RopeSkipRecord> list) { | |||||
if (list==null){ | |||||
logList.add("没有离线记录"); | |||||
}else { | |||||
logList.add("离线记录:"); | |||||
logList.add(new Gson().toJson(list)); | |||||
mArrayAdapter.notifyDataSetChanged(); | |||||
} | |||||
} | |||||
} |
import java.util.Map; | import java.util.Map; | ||||
import java.util.UUID; | import java.util.UUID; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.config.AppConfig; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.config.BleDeviceConfig; | import aicare.net.cn.sdk.ailinksdkdemoandroid.config.BleDeviceConfig; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.dialog.LoadingIosDialogFragment; | import aicare.net.cn.sdk.ailinksdkdemoandroid.dialog.LoadingIosDialogFragment; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.find.FindDeviceNewActivity; | import aicare.net.cn.sdk.ailinksdkdemoandroid.find.FindDeviceNewActivity; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.ble_nutrition.BleNutritionActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.blood_glucose.BloodGlucoseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.coffee_scale.CoffeeScaleActivity; | import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.coffee_scale.CoffeeScaleActivity; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.food_temp.FoodTempActivity; | import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.food_temp.FoodTempActivity; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.share_charger.ShareChargerActivity; | import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.share_charger.ShareChargerActivity; | ||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import androidx.appcompat.app.AppCompatActivity; | import androidx.appcompat.app.AppCompatActivity; | ||||
import androidx.core.app.ActivityCompat; | import androidx.core.app.ActivityCompat; | ||||
import cn.net.aicare.modulelibrary.module.RopeSkipping.RopeSkippingBleData; | |||||
import cn.net.aicare.modulelibrary.module.scooter.SkateboardBleConfig; | import cn.net.aicare.modulelibrary.module.scooter.SkateboardBleConfig; | ||||
} else if (mCid == 0) { | } else if (mCid == 0) { | ||||
//CID=0不需要握手 | //CID=0不需要握手 | ||||
BleConfig.setHandshakeStatus(mac, false); | BleConfig.setHandshakeStatus(mac, false); | ||||
} else if (mCid == BleDeviceConfig.ROPE_SKIPPING) { | |||||
//要加密要握手。别人家的东西 | |||||
if (mVid == 0x0027 && mPid == 0x0001) { | |||||
BleConfig.setHandshakeStatus(RopeSkippingBleData.LongXiang, mac, true); | |||||
} | |||||
} | } | ||||
if (mBluetoothService != null) { | if (mBluetoothService != null) { | ||||
mBluetoothService.stopScan(); | mBluetoothService.stopScan(); | ||||
bleDevice.setA7Encryption(false); | bleDevice.setA7Encryption(false); | ||||
mNoEncryptionMac = ""; | mNoEncryptionMac = ""; | ||||
} | } | ||||
dismissLoading(); | dismissLoading(); | ||||
Intent intent = new Intent(); | Intent intent = new Intent(); | ||||
case BleDeviceConfig.TEMP_Humidity: | case BleDeviceConfig.TEMP_Humidity: | ||||
intent.setClass(ShowBleActivity.this, TempHumidityActivity.class); | intent.setClass(ShowBleActivity.this, TempHumidityActivity.class); | ||||
break; | break; | ||||
case BleDeviceConfig.ROPE_SKIPPING: | |||||
intent.setClass(ShowBleActivity.this, RopeSkippingActivity.class); | |||||
break; | |||||
case BleDeviceConfig.BLE_NUTRITION_SCALE: | |||||
// 蓝牙营养秤 | |||||
intent.setClass(ShowBleActivity.this, BleNutritionActivity.class); | |||||
break; | |||||
// case BleDeviceConfig.BLD_WEIGHT: | // case BleDeviceConfig.BLD_WEIGHT: | ||||
// intent.setClass(ShowBleActivity.this, BLDWeightScaleBle.class); | // intent.setClass(ShowBleActivity.this, BLDWeightScaleBle.class); | ||||
// break; | // break; | ||||
case -4: | case -4: | ||||
intent.setClass(ShowBleActivity.this, TransmissionActivity.class); | intent.setClass(ShowBleActivity.this, TransmissionActivity.class); | ||||
break; | break; | ||||
case 65536: | |||||
case BleDeviceConfig.CLEAR_SHAKE_HANDS: | |||||
//验证不握手不加密的界面 | //验证不握手不加密的界面 | ||||
intent.setClass(ShowBleActivity.this, ClearShakeHandsActivity.class); | intent.setClass(ShowBleActivity.this, ClearShakeHandsActivity.class); | ||||
break; | break; |
import com.pingwang.bluetoothlib.device.BleDevice; | import com.pingwang.bluetoothlib.device.BleDevice; | ||||
import com.pingwang.bluetoothlib.listener.OnBleHandshakeListener; | import com.pingwang.bluetoothlib.listener.OnBleHandshakeListener; | ||||
import com.pingwang.bluetoothlib.listener.OnCallbackBle; | import com.pingwang.bluetoothlib.listener.OnCallbackBle; | ||||
import com.realsil.sdk.core.RtkConfigure; | |||||
import com.realsil.sdk.core.RtkCore; | |||||
import com.realsil.sdk.core.logger.ZLogger; | |||||
import com.realsil.sdk.dfu.DfuConstants; | |||||
import com.realsil.sdk.dfu.RtkDfu; | |||||
import java.util.ArrayList; | |||||
import java.util.List; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleAppBaseActivity; | import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleAppBaseActivity; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.dialog.DialogStringImageAdapter; | import aicare.net.cn.sdk.ailinksdkdemoandroid.dialog.DialogStringImageAdapter; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.dialog.ShowListDialogFragment; | import aicare.net.cn.sdk.ailinksdkdemoandroid.dialog.ShowListDialogFragment; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.L; | import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.L; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.MyBleStrUtils; | import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.MyBleStrUtils; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | ||||
import java.util.ArrayList; | |||||
import java.util.List; | |||||
import butterknife.BindView; | import butterknife.BindView; | ||||
import cn.net.aicare.modulelibrary.module.scooter.BleWeatherBean; | import cn.net.aicare.modulelibrary.module.scooter.BleWeatherBean; | ||||
import cn.net.aicare.modulelibrary.module.scooter.SkateboardBleConfig; | import cn.net.aicare.modulelibrary.module.scooter.SkateboardBleConfig; | ||||
/** | /** | ||||
* xing<br> | * xing<br> | ||||
* 2020/6/28<br> | * 2020/6/28<br> | ||||
* 滑板车 | |||||
* 滑板车界面 | |||||
*/ | */ | ||||
public class SkateboardDataActivity extends BleAppBaseActivity implements OnCallbackBle, View.OnClickListener, SkateboardDevice.onNotifyData, | public class SkateboardDataActivity extends BleAppBaseActivity implements OnCallbackBle, View.OnClickListener, SkateboardDevice.onNotifyData, | ||||
RtkOtaManager.OnRtkOtaInfoListener, ShowListDialogFragment.onDialogListener, OnBleHandshakeListener { | RtkOtaManager.OnRtkOtaInfoListener, ShowListDialogFragment.onDialogListener, OnBleHandshakeListener { | ||||
* rtk升级方式 | * rtk升级方式 | ||||
* 默认静默升级 | * 默认静默升级 | ||||
*/ | */ | ||||
private int mRtkOtaType = DfuConstants.OTA_MODE_SILENT_FUNCTION; | |||||
private int mRtkOtaType = RtkOtaManager.OTA_MODE_SILENT_FUNCTION; | |||||
/** | /** | ||||
* ota作用域 | * ota作用域 | ||||
*/ | */ | ||||
//OTA类型 | //OTA类型 | ||||
case R.id.btn_ota_type: | case R.id.btn_ota_type: | ||||
List<DialogStringImageAdapter.DialogStringImageBean> list = new ArrayList<>(); | List<DialogStringImageAdapter.DialogStringImageBean> list = new ArrayList<>(); | ||||
list.add(new DialogStringImageAdapter.DialogStringImageBean("静默升级", DfuConstants.OTA_MODE_SILENT_FUNCTION)); | |||||
list.add(new DialogStringImageAdapter.DialogStringImageBean("普通升级", DfuConstants.OTA_MODE_NORMAL_FUNCTION)); | |||||
list.add(new DialogStringImageAdapter.DialogStringImageBean("静默升级", RtkOtaManager.OTA_MODE_SILENT_FUNCTION)); | |||||
list.add(new DialogStringImageAdapter.DialogStringImageBean("普通升级", RtkOtaManager.OTA_MODE_NORMAL_FUNCTION)); | |||||
ShowListDialogFragment.newInstance().setTitle("").setCancel("", 0).setCancelBlank(true).setBackground(true).setBottom(false) | ShowListDialogFragment.newInstance().setTitle("").setCancel("", 0).setCancelBlank(true).setBackground(true).setBottom(false) | ||||
.setList(list).setOnDialogListener(new ShowListDialogFragment.onDialogListener() { | .setList(list).setOnDialogListener(new ShowListDialogFragment.onDialogListener() { | ||||
@Override | @Override | ||||
mListviewData.setAdapter(listAdapter); | mListviewData.setAdapter(listAdapter); | ||||
FileUtils.init(); | FileUtils.init(); | ||||
mDialogList = new ArrayList<>(); | mDialogList = new ArrayList<>(); | ||||
RtkConfigure configure = new RtkConfigure.Builder().debugEnabled(BuildConfig.DEBUG).printLog(true).logTag("OTA").build(); | |||||
RtkCore.initialize(this, configure); | |||||
RtkDfu.initialize(this, BuildConfig.DEBUG); | |||||
ZLogger.initialize("AILink", BuildConfig.DEBUG); | |||||
// RtkConfigure configure = new RtkConfigure.Builder().debugEnabled(BuildConfig.DEBUG).printLog(true).logTag("OTA").build(); | |||||
// RtkCore.initialize(this, configure); | |||||
// RtkDfu.initialize(this, BuildConfig.DEBUG); | |||||
// ZLogger.initialize("AILink", BuildConfig.DEBUG); | |||||
} | } | ||||
@Override | @Override |
import com.pingwang.bluetoothlib.listener.OnScanFilterListener; | import com.pingwang.bluetoothlib.listener.OnScanFilterListener; | ||||
import com.pingwang.bluetoothlib.utils.BleLog; | import com.pingwang.bluetoothlib.utils.BleLog; | ||||
import com.pingwang.bluetoothlib.utils.BleStrUtils; | import com.pingwang.bluetoothlib.utils.BleStrUtils; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import butterknife.BindView; | import butterknife.BindView; | ||||
import butterknife.ButterKnife; | import butterknife.ButterKnife; | ||||
import cn.net.aicare.modulelibrary.module.SmartMask.SmartMaskBleConfig; | import cn.net.aicare.modulelibrary.module.SmartMask.SmartMaskBleConfig; | ||||
@Override | @Override | ||||
public void onSetStatus(int type,int status) { | public void onSetStatus(int type,int status) { | ||||
String data = ""; | String data = ""; | ||||
if (type== SmartMaskBleConfig.GET_TEST_MODE){ | |||||
if (type==SmartMaskBleConfig.GET_TEST_MODE){ | |||||
data="进入测试模式:"; | data="进入测试模式:"; | ||||
}else if (type== SmartMaskBleConfig.GET_POWER){ | |||||
}else if (type==SmartMaskBleConfig.GET_POWER){ | |||||
data="关机:"; | data="关机:"; | ||||
} | } | ||||
switch (status) { | switch (status) { |
import com.pingwang.bluetoothlib.utils.BleDensityUtil; | import com.pingwang.bluetoothlib.utils.BleDensityUtil; | ||||
import com.pingwang.bluetoothlib.utils.BleLog; | import com.pingwang.bluetoothlib.utils.BleLog; | ||||
import com.pingwang.bluetoothlib.utils.BleStrUtils; | import com.pingwang.bluetoothlib.utils.BleStrUtils; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import cn.net.aicare.modulelibrary.module.sphygmomanometer.SphyBleConfig; | import cn.net.aicare.modulelibrary.module.sphygmomanometer.SphyBleConfig; |
import android.widget.EditText; | import android.widget.EditText; | ||||
import android.widget.ListView; | import android.widget.ListView; | ||||
import androidx.annotation.NonNull; | |||||
import androidx.annotation.Nullable; | |||||
import com.pingwang.bluetoothlib.device.BleDevice; | import com.pingwang.bluetoothlib.device.BleDevice; | ||||
import com.pingwang.bluetoothlib.device.BleSendCmdUtil; | import com.pingwang.bluetoothlib.device.BleSendCmdUtil; | ||||
import com.pingwang.bluetoothlib.device.SendBleBean; | import com.pingwang.bluetoothlib.device.SendBleBean; | ||||
import com.pingwang.bluetoothlib.utils.BleDensityUtil; | import com.pingwang.bluetoothlib.utils.BleDensityUtil; | ||||
import com.pingwang.bluetoothlib.utils.BleLog; | import com.pingwang.bluetoothlib.utils.BleLog; | ||||
import com.pingwang.bluetoothlib.utils.BleStrUtils; | import com.pingwang.bluetoothlib.utils.BleStrUtils; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import androidx.annotation.NonNull; | |||||
import androidx.annotation.Nullable; | |||||
import cn.net.aicare.modulelibrary.module.thermometer.TempDeviceData; | import cn.net.aicare.modulelibrary.module.thermometer.TempDeviceData; | ||||
import android.widget.ListView; | import android.widget.ListView; | ||||
import android.widget.Toast; | import android.widget.Toast; | ||||
import androidx.annotation.NonNull; | |||||
import androidx.annotation.Nullable; | |||||
import com.pingwang.bluetoothlib.device.BleDevice; | import com.pingwang.bluetoothlib.device.BleDevice; | ||||
import com.pingwang.bluetoothlib.device.BleSendCmdUtil; | import com.pingwang.bluetoothlib.device.BleSendCmdUtil; | ||||
import com.pingwang.bluetoothlib.device.SendBleBean; | import com.pingwang.bluetoothlib.device.SendBleBean; | ||||
import com.pingwang.bluetoothlib.utils.BleDensityUtil; | import com.pingwang.bluetoothlib.utils.BleDensityUtil; | ||||
import com.pingwang.bluetoothlib.utils.BleLog; | import com.pingwang.bluetoothlib.utils.BleLog; | ||||
import com.pingwang.bluetoothlib.utils.BleStrUtils; | import com.pingwang.bluetoothlib.utils.BleStrUtils; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import androidx.annotation.NonNull; | |||||
import androidx.annotation.Nullable; | |||||
import cn.net.aicare.modulelibrary.module.foreheadgun.TempGunDeviceData; | import cn.net.aicare.modulelibrary.module.foreheadgun.TempGunDeviceData; | ||||
/** | /** | ||||
* xing<br> | * xing<br> | ||||
* 2019/4/25<br> | * 2019/4/25<br> | ||||
* 额温枪 | * 额温枪 | ||||
*/ | */ | ||||
public class TempGunCmdActivity extends BleBaseActivity implements OnCallbackDis, OnBleVersionListener, TempGunDeviceData.onNotifyData , OnBleCompanyListener, OnMcuParameterListener, View.OnClickListener { | |||||
public class TempGunCmdActivity extends BleBaseActivity implements OnCallbackDis, | |||||
OnBleVersionListener, TempGunDeviceData.onNotifyData , OnBleCompanyListener, OnMcuParameterListener, View.OnClickListener { | |||||
private static String TAG = TempGunCmdActivity.class.getName(); | private static String TAG = TempGunCmdActivity.class.getName(); | ||||
private final int REFRESH_DATA = 3; | private final int REFRESH_DATA = 3; |
import android.widget.ListView; | import android.widget.ListView; | ||||
import android.widget.TextView; | import android.widget.TextView; | ||||
import androidx.annotation.NonNull; | |||||
import androidx.annotation.Nullable; | |||||
import com.pingwang.bluetoothlib.bean.BleValueBean; | import com.pingwang.bluetoothlib.bean.BleValueBean; | ||||
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 aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import java.lang.ref.WeakReference; | import java.lang.ref.WeakReference; | ||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.Collections; | import java.util.Collections; | ||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import androidx.annotation.NonNull; | |||||
import androidx.annotation.Nullable; | |||||
import cn.net.aicare.modulelibrary.module.TempHumidity.TempHumidityBleUtils; | import cn.net.aicare.modulelibrary.module.TempHumidity.TempHumidityBleUtils; | ||||
/** | /** |
import android.widget.EditText; | import android.widget.EditText; | ||||
import android.widget.ListView; | import android.widget.ListView; | ||||
import androidx.annotation.NonNull; | |||||
import androidx.annotation.Nullable; | |||||
import com.pingwang.bluetoothlib.config.BleConfig; | import com.pingwang.bluetoothlib.config.BleConfig; | ||||
import com.pingwang.bluetoothlib.device.BleDevice; | import com.pingwang.bluetoothlib.device.BleDevice; | ||||
import com.pingwang.bluetoothlib.device.SendDataBean; | import com.pingwang.bluetoothlib.device.SendDataBean; | ||||
import com.pingwang.bluetoothlib.listener.OnCallbackDis; | import com.pingwang.bluetoothlib.listener.OnCallbackDis; | ||||
import com.pingwang.bluetoothlib.utils.BleLog; | import com.pingwang.bluetoothlib.utils.BleLog; | ||||
import com.pingwang.bluetoothlib.utils.BleStrUtils; | import com.pingwang.bluetoothlib.utils.BleStrUtils; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.Locale; | import java.util.Locale; | ||||
import java.util.UUID; | import java.util.UUID; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import androidx.annotation.NonNull; | |||||
import androidx.annotation.Nullable; | |||||
/** | /** | ||||
* xing<br> | * xing<br> |
import com.pingwang.bluetoothlib.listener.OnCallbackBle; | import com.pingwang.bluetoothlib.listener.OnCallbackBle; | ||||
import com.pingwang.bluetoothlib.utils.BleLog; | import com.pingwang.bluetoothlib.utils.BleLog; | ||||
import com.pingwang.bluetoothlib.utils.BleStrUtils; | import com.pingwang.bluetoothlib.utils.BleStrUtils; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.dialog.WifiDialog; | |||||
import java.lang.ref.WeakReference; | import java.lang.ref.WeakReference; | ||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.HashMap; | import java.util.HashMap; | ||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.dialog.WifiDialog; | |||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import cn.net.aicare.modulelibrary.module.ToothBrush.ToothBrushBleCmd; | import cn.net.aicare.modulelibrary.module.ToothBrush.ToothBrushBleCmd; | ||||
import cn.net.aicare.modulelibrary.module.ToothBrush.ToothBrushWiFiBleUtilsData; | import cn.net.aicare.modulelibrary.module.ToothBrush.ToothBrushWiFiBleUtilsData; |
import android.widget.EditText; | import android.widget.EditText; | ||||
import android.widget.ListView; | import android.widget.ListView; | ||||
import androidx.annotation.NonNull; | |||||
import androidx.annotation.Nullable; | |||||
import com.pingwang.bluetoothlib.device.BleDevice; | import com.pingwang.bluetoothlib.device.BleDevice; | ||||
import com.pingwang.bluetoothlib.device.BleSendCmdUtil; | import com.pingwang.bluetoothlib.device.BleSendCmdUtil; | ||||
import com.pingwang.bluetoothlib.device.SendBleBean; | import com.pingwang.bluetoothlib.device.SendBleBean; | ||||
import com.pingwang.bluetoothlib.listener.OnMcuParameterListener; | import com.pingwang.bluetoothlib.listener.OnMcuParameterListener; | ||||
import com.pingwang.bluetoothlib.utils.BleLog; | import com.pingwang.bluetoothlib.utils.BleLog; | ||||
import com.pingwang.bluetoothlib.utils.BleStrUtils; | import com.pingwang.bluetoothlib.utils.BleStrUtils; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import androidx.annotation.NonNull; | |||||
import androidx.annotation.Nullable; | |||||
import cn.net.aicare.modulelibrary.module.tpms.TpmsDeviceData; | import cn.net.aicare.modulelibrary.module.tpms.TpmsDeviceData; | ||||
/** | /** | ||||
* xing<br> | * xing<br> | ||||
* 2019/9/2<br> | * 2019/9/2<br> | ||||
* tpms连接版 | * tpms连接版 | ||||
*/ | */ | ||||
public class TpmsConnectCmdActivity extends BleBaseActivity implements OnCallbackDis, | public class TpmsConnectCmdActivity extends BleBaseActivity implements OnCallbackDis, | ||||
TpmsDeviceData.onNotifyData, TpmsDeviceData.onTpmsSetting, TpmsDeviceData.onTpmsInfo, OnBleVersionListener, OnMcuParameterListener, OnBleCompanyListener, View.OnClickListener { | |||||
TpmsDeviceData.onNotifyData, TpmsDeviceData.onTpmsSetting, TpmsDeviceData.onTpmsInfo, OnBleVersionListener, | |||||
OnMcuParameterListener, OnBleCompanyListener, View.OnClickListener { | |||||
private static String TAG = TpmsConnectCmdActivity.class.getName(); | private static String TAG = TpmsConnectCmdActivity.class.getName(); | ||||
private final int REFRESH_DATA = 3; | private final int REFRESH_DATA = 3; |
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 com.pingwang.bluetoothlib.utils.BleStrUtils; | import com.pingwang.bluetoothlib.utils.BleStrUtils; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import java.lang.ref.WeakReference; | import java.lang.ref.WeakReference; | ||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import cn.net.aicare.modulelibrary.module.Transmission.TransmissionDeviceData; | import cn.net.aicare.modulelibrary.module.Transmission.TransmissionDeviceData; | ||||
int id = v.getId(); | int id = v.getId(); | ||||
if (id == R.id.send) { | if (id == R.id.send) { | ||||
if (!et.getText().toString().isEmpty() && !et_cid.getText().toString().isEmpty()) { | if (!et.getText().toString().isEmpty() && !et_cid.getText().toString().isEmpty()) { | ||||
String hex=et.getText().toString().toUpperCase().trim(); | |||||
String hex = et.getText().toString().toUpperCase().trim(); | |||||
byte[] hexStr = BleStrUtils.stringToByte(hex); | byte[] hexStr = BleStrUtils.stringToByte(hex); | ||||
String cid = et_cid.getText().toString().toUpperCase().trim(); | String cid = et_cid.getText().toString().toUpperCase().trim(); | ||||
int hexStrCid = Integer.parseInt(cid, 16); | int hexStrCid = Integer.parseInt(cid, 16); | ||||
} else if (id == R.id.bt_clear_log) { | } else if (id == R.id.bt_clear_log) { | ||||
mlogList.clear(); | mlogList.clear(); | ||||
mMHandler.sendEmptyMessage(ToRefreUi); | mMHandler.sendEmptyMessage(ToRefreUi); | ||||
}else if (id==R.id.bt_cid){ | |||||
} else if (id == R.id.bt_cid) { | |||||
if (mTransmissionDeviceData != null) { | if (mTransmissionDeviceData != null) { | ||||
mTransmissionDeviceData.getCid(); | mTransmissionDeviceData.getCid(); | ||||
} | } | ||||
@Override | @Override | ||||
public void showdata(String data, int type) { | public void showdata(String data, int type) { | ||||
mlogList.add(0, "收 payload数据"+ TimeUtils.getTime()+data); | |||||
mlogList.add(0, "收 payload数据" + TimeUtils.getTime() +"cid=" + type + "\n" + data); | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | mMHandler.sendEmptyMessage(ToRefreUi); | ||||
} | } | ||||
@Override | @Override | ||||
public void onCid(int cid, int vid, int pid) { | public void onCid(int cid, int vid, int pid) { | ||||
mlogList.add(0, "收"+TimeUtils.getTime() + "cid:" + cid + "||vid:" + vid + "||pid:" + pid); | |||||
mlogList.add(0, "收" + TimeUtils.getTime() + "cid:" + cid + "||vid:" + vid + "||pid:" + pid); | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | mMHandler.sendEmptyMessage(ToRefreUi); | ||||
} | } | ||||
@Override | @Override | ||||
public void otherdata(String data) { | public void otherdata(String data) { | ||||
mlogList.add(0, "收 透传数据"+TimeUtils.getTime()+data); | |||||
mlogList.add(0, "收 透传数据" + TimeUtils.getTime() + data); | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | mMHandler.sendEmptyMessage(ToRefreUi); | ||||
} | } | ||||
@Override | @Override | ||||
public void sendData(String data) { | public void sendData(String data) { | ||||
mlogList.add(0, "发 "+TimeUtils.getTime()+data); | |||||
mlogList.add(0, "发 " + TimeUtils.getTime() + data); | |||||
mMHandler.sendEmptyMessage(ToRefreUi); | mMHandler.sendEmptyMessage(ToRefreUi); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
} | } | ||||
@Override | |||||
protected void onDestroy() { | |||||
super.onDestroy(); | |||||
if (mBluetoothService!=null) { | |||||
mBluetoothService.disconnectAll(); | |||||
} | |||||
} | |||||
} | } |
import android.widget.ListView; | import android.widget.ListView; | ||||
import android.widget.RadioButton; | import android.widget.RadioButton; | ||||
import androidx.annotation.Nullable; | |||||
import com.pingwang.bluetoothlib.bean.BleValueBean; | import com.pingwang.bluetoothlib.bean.BleValueBean; | ||||
import com.pingwang.bluetoothlib.config.CmdConfig; | import com.pingwang.bluetoothlib.config.CmdConfig; | ||||
import com.pingwang.bluetoothlib.device.BleDevice; | import com.pingwang.bluetoothlib.device.BleDevice; | ||||
import com.pingwang.bluetoothlib.device.SendBleBean; | import com.pingwang.bluetoothlib.device.SendBleBean; | ||||
import com.pingwang.bluetoothlib.listener.OnCallbackBle; | import com.pingwang.bluetoothlib.listener.OnCallbackBle; | ||||
import com.pingwang.bluetoothlib.utils.BleStrUtils; | import com.pingwang.bluetoothlib.utils.BleStrUtils; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.config.BleDeviceConfig; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.dialog.AddUserDialog; | |||||
import java.lang.ref.WeakReference; | import java.lang.ref.WeakReference; | ||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.config.BleDeviceConfig; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.dialog.AddUserDialog; | |||||
import androidx.annotation.Nullable; | |||||
import cn.net.aicare.modulelibrary.module.BodyFatScale.AppHistoryRecordBean; | import cn.net.aicare.modulelibrary.module.BodyFatScale.AppHistoryRecordBean; | ||||
import cn.net.aicare.modulelibrary.module.BodyFatScale.BodyFatBleUtilsData; | import cn.net.aicare.modulelibrary.module.BodyFatScale.BodyFatBleUtilsData; | ||||
import cn.net.aicare.modulelibrary.module.BodyFatScale.BodyFatDataUtil; | import cn.net.aicare.modulelibrary.module.BodyFatScale.BodyFatDataUtil; | ||||
} | } | ||||
private void initView(){ | private void initView(){ |
import com.pingwang.bluetoothlib.listener.OnCallbackBle; | import com.pingwang.bluetoothlib.listener.OnCallbackBle; | ||||
import com.pingwang.bluetoothlib.utils.BleLog; | import com.pingwang.bluetoothlib.utils.BleLog; | ||||
import com.pingwang.bluetoothlib.utils.BleStrUtils; | import com.pingwang.bluetoothlib.utils.BleStrUtils; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.config.BleDeviceConfig; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.dialog.WifiDialog; | |||||
import java.lang.ref.WeakReference; | import java.lang.ref.WeakReference; | ||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.HashMap; | import java.util.HashMap; | ||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.config.BleDeviceConfig; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.dialog.WifiDialog; | |||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import cn.net.aicare.modulelibrary.module.BodyFatScale.AppHistoryRecordBean; | import cn.net.aicare.modulelibrary.module.BodyFatScale.AppHistoryRecordBean; | ||||
import cn.net.aicare.modulelibrary.module.BodyFatScale.BodyFatBleUtilsData; | import cn.net.aicare.modulelibrary.module.BodyFatScale.BodyFatBleUtilsData; | ||||
private MHandler mMHandler; | private MHandler mMHandler; | ||||
private EditText mEditText; | private EditText mEditText; | ||||
private RadioButton kg, jing, stlb, lb; | private RadioButton kg, jing, stlb, lb; | ||||
private byte[] testIp = new byte[]{0x74, | |||||
0x65, 0x73, 0x74, 0x2e, | |||||
0x61, 0x69, 0x6c, 0x69, | |||||
0x6e, 0x6b, 0x2e, 0x72, | |||||
0x65, 0x76, 0x69, 0x63, | |||||
0x65, 0x2e, 0x61, 0x69, | |||||
0x63, 0x61, 0x72, 0x65, | |||||
0x2e, 0x6e, 0x65, 0x74, | |||||
0x2e, 0x63, 0x6e}; | |||||
private byte[] productIp = new byte[]{ | |||||
0x61, 0x69, 0x6c, 0x69, 0x6e, 0x6b, 0x2e, | |||||
0x69, 0x6f, 0x74, 0x2e, 0x61, 0x69, 0x63, | |||||
0x61, 0x72, 0x65, 0x2e, 0x6e, 0x65, 0x74, | |||||
0x2e, 0x63, 0x6e}; | |||||
private byte[] IpUrl = new byte[]{ | |||||
0x2f, 0x64, 0x65, 0x76, 0x69, | |||||
0x76, 0x63, 0x64, 0x2f, 0x73, | |||||
0x65, 0x72, 0x76, 0x64, 0x72, | |||||
0x52, 0x65, 0x64, 0x69, 0x72, | |||||
0x65, 0x63, 0x74, 0x2f}; | |||||
private EditText et_ip, et_url, et_port; | |||||
private byte[] testIp = new byte[]{0x74, 0x65, 0x73, 0x74, 0x2e, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x6b, 0x2e, 0x72, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x61, 0x69, 0x63, 0x61, 0x72, 0x65, 0x2e, | |||||
0x6e, 0x65, 0x74, 0x2e, 0x63, 0x6e}; | |||||
private byte[] productIp = new byte[]{0x61, 0x69, 0x6c, 0x69, 0x6e, 0x6b, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x61, 0x69, 0x63, 0x61, 0x72, 0x65, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x63, 0x6e}; | |||||
private byte[] IpUrl = new byte[]{0x2f, 0x64, 0x65, 0x76, 0x69, 0x76, 0x63, 0x64, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x64, 0x72, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x2f}; | |||||
private boolean isTest = false; | private boolean isTest = false; | ||||
@Override | @Override | ||||
findViewById(R.id.setedmac).setOnClickListener(this); | findViewById(R.id.setedmac).setOnClickListener(this); | ||||
findViewById(R.id.ota).setOnClickListener(this); | findViewById(R.id.ota).setOnClickListener(this); | ||||
findViewById(R.id.surroundings).setOnClickListener(this); | findViewById(R.id.surroundings).setOnClickListener(this); | ||||
findViewById(R.id.check_ip).setOnClickListener(this); | |||||
findViewById(R.id.check_port).setOnClickListener(this); | |||||
findViewById(R.id.check_url).setOnClickListener(this); | |||||
et_ip = findViewById(R.id.et_ip); | |||||
et_port = findViewById(R.id.et_port); | |||||
et_url = findViewById(R.id.et_url); | |||||
mEditText = findViewById(R.id.select_wifi_et); | mEditText = findViewById(R.id.select_wifi_et); | ||||
kg = findViewById(R.id.kg); | kg = findViewById(R.id.kg); | ||||
jing = findViewById(R.id.jin); | jing = findViewById(R.id.jin); | ||||
} | } | ||||
}); | }); | ||||
} | } | ||||
@Override | @Override | ||||
public void onSetIpStatus(int status) { | public void onSetIpStatus(int status) { | ||||
// if (status == 0) { | |||||
// if (isTest) { | |||||
// mList.add(0, "设置环境IP为生产环境成功"); | |||||
// mList.add(0, "设置环境路径为生产环境"); | |||||
// } else { | |||||
// mList.add(0, "设置环境IP为测试环境成功"); | |||||
// mList.add(0, "设置环境路径为测试环境"); | |||||
// } | |||||
// setIpUrl(IpUrl); | |||||
// } else { | |||||
// mList.add(0, "设置环境IP失败"); | |||||
// } | |||||
// listAdapter.notifyDataSetChanged(); | |||||
if (status == 0) { | if (status == 0) { | ||||
if (isTest) { | |||||
mList.add(0, "设置环境IP为生产环境成功"); | |||||
mList.add(0, "设置环境路径为生产环境"); | |||||
} else { | |||||
mList.add(0, "设置环境IP为测试环境成功"); | |||||
mList.add(0, "设置环境路径为测试环境"); | |||||
} | |||||
setIpUrl(IpUrl); | |||||
mList.add(0, "设置环境IP成功"); | |||||
int port = Integer.parseInt(et_port.getText().toString()); | |||||
mList.add(0, "设置环境端口为:" + port); | |||||
setPort(port); | |||||
} else { | } else { | ||||
mList.add(0, "设置环境IP失败"); | mList.add(0, "设置环境IP失败"); | ||||
} | } | ||||
@Override | @Override | ||||
public void onSetPortStatus(int status) { | public void onSetPortStatus(int status) { | ||||
if (status == 0) { | |||||
mList.add(0, "设置环境端口成功"); | |||||
String ipUrlStr = et_url.getText().toString(); | |||||
mList.add(0, "设置环境url为:" + ipUrlStr); | |||||
setIpUrl(convertToASCII(ipUrlStr)); | |||||
} else { | |||||
mList.add(0, "设置环境端口失败"); | |||||
} | |||||
listAdapter.notifyDataSetChanged(); | |||||
} | } | ||||
@Override | @Override | ||||
public void onSetIpUrlStatus(int status) { | public void onSetIpUrlStatus(int status) { | ||||
// if (status == 0) { | |||||
// if (isTest) { | |||||
// mList.add(0, "设置环境路径为生产环境成功"); | |||||
// isTest = false; | |||||
// | |||||
// } else { | |||||
// mList.add(0, "设置环境路径为测试环境成功"); | |||||
// isTest = true; | |||||
// | |||||
// } | |||||
// } else { | |||||
// mList.add(0, "设置环境路径失败"); | |||||
// } | |||||
// listAdapter.notifyDataSetChanged(); | |||||
if (status == 0) { | if (status == 0) { | ||||
if (isTest) { | |||||
mList.add(0, "设置环境路径为生产环境成功"); | |||||
isTest = false; | |||||
} else { | |||||
mList.add(0, "设置环境路径为测试环境成功"); | |||||
isTest = true; | |||||
} | |||||
mList.add(0, "设置环境url成功"); | |||||
} else { | } else { | ||||
mList.add(0, "设置环境路径失败"); | |||||
mList.add(0, "设置环境url失败"); | |||||
} | } | ||||
listAdapter.notifyDataSetChanged(); | listAdapter.notifyDataSetChanged(); | ||||
} | } | ||||
@Override | @Override | ||||
public void onIpData(String ip) { | public void onIpData(String ip) { | ||||
mList.add(0, "环境ip:" + ip); | |||||
listAdapter.notifyDataSetChanged(); | |||||
} | } | ||||
@Override | @Override | ||||
public void onPortData(int port) { | public void onPortData(int port) { | ||||
mList.add(0, "环境端口:" + port); | |||||
listAdapter.notifyDataSetChanged(); | |||||
} | } | ||||
@Override | @Override | ||||
public void onUrlData(String url) { | public void onUrlData(String url) { | ||||
mList.add(0, "环境url:" + url); | |||||
listAdapter.notifyDataSetChanged(); | |||||
} | } | ||||
@Override | @Override | ||||
@Override | @Override | ||||
public void tvSucceedListener(View v, String data) { | public void tvSucceedListener(View v, String data) { | ||||
bodyFatBleUtilsData.sendData(BodyFatDataUtil.getInstance().setWifiMac(wifimacMap.get(selectWifi))); | bodyFatBleUtilsData.sendData(BodyFatDataUtil.getInstance().setWifiMac(wifimacMap.get(selectWifi))); | ||||
if (data.equals("") || data.length() > 8) { | |||||
if (data.equals("") || data.length() >= 8) { | |||||
setPaw(data); | setPaw(data); | ||||
} else { | } else { | ||||
Toast.makeText(WeightScaleWifiBleActivity.this, "密码格式不对", Toast.LENGTH_SHORT).show(); | Toast.makeText(WeightScaleWifiBleActivity.this, "密码格式不对", Toast.LENGTH_SHORT).show(); | ||||
showFileChooser(); | showFileChooser(); | ||||
break; | break; | ||||
case R.id.surroundings: | case R.id.surroundings: | ||||
if (isTest) { | |||||
setIp(productIp); | |||||
mList.add(0, "设置环境IP为生产环境"); | |||||
} else { | |||||
setIp(testIp); | |||||
mList.add(0, "设置环境IP为测试环境"); | |||||
} | |||||
// if (isTest) { | |||||
// setIp(productIp); | |||||
// mList.add(0, "设置环境IP为生产环境"); | |||||
// | |||||
// } else { | |||||
// setIp(testIp); | |||||
// mList.add(0, "设置环境IP为测试环境"); | |||||
// | |||||
// | |||||
// } | |||||
String ipStr = et_ip.getText().toString(); | |||||
setIp(convertToASCII(ipStr)); | |||||
mList.add(0, "设置环境IP为:" + ipStr); | |||||
listAdapter.notifyDataSetChanged(); | listAdapter.notifyDataSetChanged(); | ||||
break; | break; | ||||
case R.id.check_ip: | |||||
mList.add(0, "查看环境ip"); | |||||
listAdapter.notifyDataSetChanged(); | |||||
bodyFatBleUtilsData.sendData(BodyFatDataUtil.getInstance().checkIp()); | |||||
break; | |||||
case R.id.check_port: | |||||
mList.add(0, "查看环境端口"); | |||||
listAdapter.notifyDataSetChanged(); | |||||
bodyFatBleUtilsData.sendData(BodyFatDataUtil.getInstance().checkPort()); | |||||
break; | |||||
case R.id.check_url: | |||||
mList.add(0, "查看环境url"); | |||||
listAdapter.notifyDataSetChanged(); | |||||
bodyFatBleUtilsData.sendData(BodyFatDataUtil.getInstance().checkUrl()); | |||||
break; | |||||
} | } | ||||
} | } | ||||
private byte[] convertToASCII(String string) { | |||||
char[] ch = string.toCharArray(); | |||||
byte[] tmp = new byte[ch.length]; | |||||
for (int i = 0; i < ch.length; i++) { | |||||
tmp[i] = (byte) Integer.valueOf(ch[i]).intValue(); | |||||
} | |||||
return tmp; | |||||
} | |||||
private void setIp(byte[] ips) { | private void setIp(byte[] ips) { | ||||
if (ips.length <= 14) | if (ips.length <= 14) | ||||
} | } | ||||
private void setPort(int port) { | |||||
bodyFatBleUtilsData.sendData(BodyFatDataUtil.getInstance().environmentPort(port)); | |||||
} | |||||
private void setIpUrl(byte[] setIpUrl) { | private void setIpUrl(byte[] setIpUrl) { | ||||
if (setIpUrl.length <= 14) | if (setIpUrl.length <= 14) | ||||
bodyFatBleUtilsData.sendData(BodyFatDataUtil.getInstance().environmentUrl(0, setIpUrl)); | bodyFatBleUtilsData.sendData(BodyFatDataUtil.getInstance().environmentUrl(0, setIpUrl)); | ||||
listAdapter.notifyDataSetChanged(); | listAdapter.notifyDataSetChanged(); | ||||
} | } | ||||
private int mOldProgress = -1; | |||||
@Override | @Override | ||||
public void onOtaProgress(float progress, int currentCount, int maxCount) { | public void onOtaProgress(float progress, int currentCount, int maxCount) { | ||||
mList.add(0, "otaProgress:"+progress); | |||||
listAdapter.notifyDataSetChanged(); | |||||
if (mOldProgress != progress) { | |||||
mOldProgress = (int) progress; | |||||
mList.add(0, "otaProgress:" + progress); | |||||
listAdapter.notifyDataSetChanged(); | |||||
} | |||||
} | } | ||||
}); | }); | ||||
} else { | } else { | ||||
} | } | ||||
} | } | ||||
private static final int FILE_SELECT_CODE = 0x1002; | private static final int FILE_SELECT_CODE = 0x1002; | ||||
private void showFileChooser() { | private void showFileChooser() { | ||||
Intent intent = new Intent(Intent.ACTION_GET_CONTENT); | Intent intent = new Intent(Intent.ACTION_GET_CONTENT); | ||||
intent.setType("*/*"); | intent.setType("*/*"); |
package aicare.net.cn.sdk.ailinksdkdemoandroid; | package aicare.net.cn.sdk.ailinksdkdemoandroid; | ||||
import android.annotation.SuppressLint; | |||||
import android.app.AlertDialog; | import android.app.AlertDialog; | ||||
import android.content.DialogInterface; | import android.content.DialogInterface; | ||||
import android.content.Intent; | import android.content.Intent; | ||||
import android.widget.ListView; | import android.widget.ListView; | ||||
import android.widget.RadioButton; | import android.widget.RadioButton; | ||||
import androidx.annotation.Nullable; | |||||
import androidx.appcompat.app.AppCompatActivity; | |||||
import androidx.core.app.ActivityCompat; | |||||
import androidx.core.content.ContextCompat; | |||||
import org.json.JSONArray; | import org.json.JSONArray; | ||||
import org.json.JSONException; | import org.json.JSONException; | ||||
import org.json.JSONObject; | import org.json.JSONObject; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.Locale; | import java.util.Locale; | ||||
import androidx.annotation.Nullable; | |||||
import androidx.appcompat.app.AppCompatActivity; | |||||
import androidx.core.app.ActivityCompat; | |||||
import androidx.core.content.ContextCompat; | |||||
import cn.net.aicare.modulelibrary.module.wifi.WifiConfig; | import cn.net.aicare.modulelibrary.module.wifi.WifiConfig; | ||||
import cn.net.aicare.modulelibrary.module.wifi.WifiUtils; | import cn.net.aicare.modulelibrary.module.wifi.WifiUtils; | ||||
private RadioButton kg, jing, stlb, lb; | private RadioButton kg, jing, stlb, lb; | ||||
private String mDeviceName; | private String mDeviceName; | ||||
@SuppressLint("SetTextI18n") | |||||
@Override | @Override | ||||
protected void onCreate(@Nullable Bundle savedInstanceState) { | protected void onCreate(@Nullable Bundle savedInstanceState) { | ||||
super.onCreate(savedInstanceState); | super.onCreate(savedInstanceState); |
import android.view.View; | import android.view.View; | ||||
import android.widget.TextView; | import android.widget.TextView; | ||||
import java.lang.ref.WeakReference; | import java.lang.ref.WeakReference; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.dialog.HintDataDialogFragment; | import aicare.net.cn.sdk.ailinksdkdemoandroid.dialog.HintDataDialogFragment; |
*/ | */ | ||||
protected void startScanBle(long timeOut){ | protected void startScanBle(long timeOut){ | ||||
if (mBluetoothService!=null){ | if (mBluetoothService!=null){ | ||||
mBluetoothService.scanLeDevice(timeOut, BleConfig.UUID_SERVER_AILINK); | |||||
mBluetoothService.scanLeDevice(timeOut,BleConfig.UUID_SERVER_AILINK); | |||||
} | } | ||||
} | } | ||||
*/ | */ | ||||
public final static int SPORTS_WATCH_BLE = 0x1D; | public final static int SPORTS_WATCH_BLE = 0x1D; | ||||
/** | |||||
* 蓝牙营养秤 | |||||
*/ | |||||
public final static int BLE_NUTRITION_SCALE = 0x0034; | |||||
/** | /** | ||||
* 广播秤 | * 广播秤 | ||||
* 电滑板车 | * 电滑板车 | ||||
*/ | */ | ||||
public final static int SMART_SCOOTER =0x0025; | public final static int SMART_SCOOTER =0x0025; | ||||
public final static int SMART_SCOOTER_CM02 =0x0033; | |||||
/** | /** | ||||
* 共享充电器 | * 共享充电器 | ||||
*/ | */ | ||||
public final static int CLEAR_SHAKE_HANDS = -6; | public final static int CLEAR_SHAKE_HANDS = -6; | ||||
/** | |||||
* 跳绳 | |||||
*/ | |||||
public final static int ROPE_SKIPPING = 0x002f; | |||||
/** | |||||
* 广播营养秤 | |||||
*/ | |||||
public final static int BROADCAST_NUTRITION = 0x10003; | |||||
} | } |
import android.widget.SeekBar; | import android.widget.SeekBar; | ||||
import android.widget.TextView; | import android.widget.TextView; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import androidx.fragment.app.DialogFragment; | import androidx.fragment.app.DialogFragment; | ||||
import androidx.fragment.app.FragmentManager; | import androidx.fragment.app.FragmentManager; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import cn.net.aicare.modulelibrary.module.BodyFatScale.BodyFatDataUtil; | import cn.net.aicare.modulelibrary.module.BodyFatScale.BodyFatDataUtil; | ||||
import cn.net.aicare.modulelibrary.module.BodyFatScale.User; | import cn.net.aicare.modulelibrary.module.BodyFatScale.User; | ||||
import android.view.ViewGroup; | import android.view.ViewGroup; | ||||
import android.widget.TextView; | import android.widget.TextView; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||
import androidx.recyclerview.widget.RecyclerView; | import androidx.recyclerview.widget.RecyclerView; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.L; | import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.L; | ||||
import androidx.annotation.ColorInt; | import androidx.annotation.ColorInt; | ||||
import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; |
import android.view.ViewGroup; | import android.view.ViewGroup; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | ||||
import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import androidx.fragment.app.DialogFragment; | import androidx.fragment.app.DialogFragment; |
import android.view.WindowManager; | import android.view.WindowManager; | ||||
import android.widget.TextView; | import android.widget.TextView; | ||||
import java.util.ArrayList; | |||||
import java.util.List; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.L; | import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.L; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.view.MyItemDecoration; | import aicare.net.cn.sdk.ailinksdkdemoandroid.view.MyItemDecoration; | ||||
import java.util.ArrayList; | |||||
import java.util.List; | |||||
import androidx.annotation.ColorInt; | import androidx.annotation.ColorInt; | ||||
import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; |
import android.widget.EditText; | import android.widget.EditText; | ||||
import android.widget.TextView; | import android.widget.TextView; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import androidx.fragment.app.DialogFragment; | import androidx.fragment.app.DialogFragment; | ||||
import androidx.fragment.app.FragmentManager; | import androidx.fragment.app.FragmentManager; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
public class WifiDialog extends DialogFragment implements View.OnClickListener { | public class WifiDialog extends DialogFragment implements View.OnClickListener { | ||||
/** | /** |
import android.widget.Toast; | import android.widget.Toast; | ||||
import com.pingwang.bluetoothlib.device.BleDevice; | import com.pingwang.bluetoothlib.device.BleDevice; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.HashMap; | import java.util.HashMap; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.Map; | import java.util.Map; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import cn.net.aicare.modulelibrary.module.findDevice.FindConnectDeviceInfoBean; | import cn.net.aicare.modulelibrary.module.findDevice.FindConnectDeviceInfoBean; | ||||
import cn.net.aicare.modulelibrary.module.findDevice.FindDeviceData; | import cn.net.aicare.modulelibrary.module.findDevice.FindDeviceData; |
import android.view.ViewGroup; | import android.view.ViewGroup; | ||||
import android.widget.Button; | import android.widget.Button; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||
import androidx.recyclerview.widget.RecyclerView; | import androidx.recyclerview.widget.RecyclerView; | ||||
import com.pingwang.bluetoothlib.listener.OnScanFilterListener; | import com.pingwang.bluetoothlib.listener.OnScanFilterListener; | ||||
import com.pingwang.bluetoothlib.utils.BleLog; | import com.pingwang.bluetoothlib.utils.BleLog; | ||||
import com.pingwang.bluetoothlib.utils.BleStrUtils; | import com.pingwang.bluetoothlib.utils.BleStrUtils; | ||||
import java.util.ArrayList; | |||||
import java.util.List; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.BuildConfig; | import aicare.net.cn.sdk.ailinksdkdemoandroid.BuildConfig; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleAppBaseActivity; | import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleAppBaseActivity; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.SP; | import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.SP; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.view.MyItemDecoration; | import aicare.net.cn.sdk.ailinksdkdemoandroid.view.MyItemDecoration; | ||||
import java.util.ArrayList; | |||||
import java.util.List; | |||||
import androidx.recyclerview.widget.GridLayoutManager; | import androidx.recyclerview.widget.GridLayoutManager; | ||||
import androidx.recyclerview.widget.LinearLayoutManager; | import androidx.recyclerview.widget.LinearLayoutManager; | ||||
import androidx.recyclerview.widget.RecyclerView; | import androidx.recyclerview.widget.RecyclerView; |
package aicare.net.cn.sdk.ailinksdkdemoandroid.modules.ble_nutrition; | |||||
import android.os.Bundle; | |||||
import android.view.View; | |||||
import android.widget.ArrayAdapter; | |||||
import android.widget.Button; | |||||
import android.widget.ListView; | |||||
import android.widget.RadioButton; | |||||
import androidx.annotation.Nullable; | |||||
import com.pingwang.bluetoothlib.bean.SupportUnitBean; | |||||
import com.pingwang.bluetoothlib.device.BleDevice; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import java.math.BigDecimal; | |||||
import java.text.SimpleDateFormat; | |||||
import java.util.ArrayList; | |||||
import java.util.List; | |||||
import java.util.Locale; | |||||
import cn.net.aicare.modulelibrary.module.BleNutrition.BleNutritionData; | |||||
public class BleNutritionActivity extends BleBaseActivity implements View.OnClickListener, BleNutritionData.BleNutritionCallback { | |||||
private static final String TAG = "Tag1"; | |||||
private Button btn_clear; | |||||
private ListView list_view; | |||||
private Button btn_set_unit; | |||||
private Button btn_set_zero; | |||||
private List<RadioButton> rb_list; | |||||
private List<String> mList; | |||||
private ArrayAdapter mListAdapter; | |||||
private String mMac; | |||||
private BleDevice mBleDevice; | |||||
private BleNutritionData mBleNutritionData; | |||||
@Override | |||||
protected void onCreate(@Nullable Bundle savedInstanceState) { | |||||
super.onCreate(savedInstanceState); | |||||
setContentView(R.layout.activity_ble_nutrition); | |||||
btn_clear = findViewById(R.id.btn_clear); | |||||
list_view = findViewById(R.id.list_view); | |||||
btn_set_unit = findViewById(R.id.btn_set_unit); | |||||
btn_set_zero = findViewById(R.id.btn_set_zero); | |||||
btn_clear.setOnClickListener(this); | |||||
btn_set_unit.setOnClickListener(this); | |||||
btn_set_zero.setOnClickListener(this); | |||||
rb_list = new ArrayList<>(); | |||||
rb_list.add(findViewById(R.id.rb_g)); | |||||
rb_list.add(findViewById(R.id.rb_ml)); | |||||
rb_list.add(findViewById(R.id.rb_lb_oz)); | |||||
rb_list.add(findViewById(R.id.rb_oz)); | |||||
rb_list.add(findViewById(R.id.rb_kg)); | |||||
rb_list.add(findViewById(R.id.rb_jin)); | |||||
rb_list.add(findViewById(R.id.rb_milk_ml)); | |||||
rb_list.add(findViewById(R.id.rb_water_ml)); | |||||
rb_list.add(findViewById(R.id.rb_milk_fl_oz)); | |||||
rb_list.add(findViewById(R.id.rb_water_fl_oz)); | |||||
rb_list.add(findViewById(R.id.rb_lb)); | |||||
// 单位只能单选 | |||||
for (RadioButton radioButton : rb_list) { | |||||
radioButton.setOnClickListener(v -> { | |||||
for (RadioButton rb : rb_list) { | |||||
rb.setChecked(rb == v); | |||||
} | |||||
}); | |||||
} | |||||
// 获取Mac | |||||
mMac = getIntent().getStringExtra("mac"); | |||||
// 初始化列表 | |||||
mList = new ArrayList<>(); | |||||
mListAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mList); | |||||
list_view.setAdapter(mListAdapter); | |||||
} | |||||
@Override | |||||
public void onClick(View v) { | |||||
int id = v.getId(); | |||||
if (id == R.id.btn_clear) { | |||||
// 清空文本框 | |||||
clearText(); | |||||
} else if (id == R.id.btn_set_unit) { | |||||
// 设置单位 | |||||
setUnit(); | |||||
} else if (id == R.id.btn_set_zero) { | |||||
// 去皮指令 | |||||
setZero(); | |||||
} | |||||
} | |||||
@Override | |||||
protected void onDestroy() { | |||||
if (mBluetoothService != null) { | |||||
mBluetoothService.disconnectAll(); | |||||
} | |||||
super.onDestroy(); | |||||
} | |||||
@Override | |||||
public void onServiceSuccess() { | |||||
mBleDevice = mBluetoothService.getBleDevice(mMac); | |||||
if (mBleDevice != null) { | |||||
mBleNutritionData = new BleNutritionData(mBleDevice); | |||||
mBleNutritionData.setBleNutritionCallback(this); | |||||
addText("连接成功:" + mMac); | |||||
} | |||||
} | |||||
@Override | |||||
public void onServiceErr() { | |||||
} | |||||
@Override | |||||
public void unbindServices() { | |||||
} | |||||
@Override | |||||
public void mcuBmVersion(String version) { | |||||
addText("MCU上发BM版本:" + version); | |||||
} | |||||
@Override | |||||
public void mcuSupportUnit(List<SupportUnitBean> list) { | |||||
String str = ""; | |||||
for (SupportUnitBean supportUnitBean : list) { | |||||
str += supportUnitBean.toString() + ";"; | |||||
if (supportUnitBean.getType() != null && supportUnitBean.getType().equals("8")) { | |||||
// 遍历所有单位,有这个支持单位就显示 | |||||
for (int i = 0; i < rb_list.size(); i++) { | |||||
boolean hasUnit = false; | |||||
for (Integer integer : supportUnitBean.getSupportUnit()) { | |||||
if (integer != null && integer == i) { | |||||
hasUnit = true; | |||||
break; | |||||
} | |||||
} | |||||
rb_list.get(i).setEnabled(hasUnit); | |||||
} | |||||
// 再次遍历,如果选中了不支持的单位,就重新选择 | |||||
boolean unitDisable = false; | |||||
for (int i = 0; i < rb_list.size(); i++) { | |||||
if (!rb_list.get(i).isEnabled() && rb_list.get(i).isChecked()) { | |||||
unitDisable = true; | |||||
rb_list.get(i).setChecked(false); | |||||
} | |||||
if (rb_list.get(i).isEnabled() && unitDisable) { | |||||
unitDisable = false; | |||||
rb_list.get(i).setChecked(true); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
addText("MCU上发支持单位列表:\n" + str); | |||||
} | |||||
@Override | |||||
public void mcuWeight(int no, int weight, int unit, int decimal, int symbol, int type) { | |||||
float w = weight; | |||||
// 正负 | |||||
if (symbol == 1) { | |||||
w *= -1; | |||||
} | |||||
// 小数点 | |||||
w = (float) (w / Math.pow(10, decimal)); | |||||
// 保留小数位 | |||||
String weightStr = getPreFloatStr(w, decimal); | |||||
String str = "MCU上发重量:" + weightStr + getUnitStr(unit) + "\n流水号:" + no + ",原始重量:" + weight + ",单位:" + unit + ",小数点:" + decimal + ",符号:" + symbol + ",重量类型:" + type; | |||||
addText(str); | |||||
} | |||||
@Override | |||||
public void mcuUnitResult(int status) { | |||||
String statusStr = ""; | |||||
switch (status) { | |||||
case 0: | |||||
statusStr = "成功"; | |||||
break; | |||||
case 1: | |||||
statusStr = "失败"; | |||||
break; | |||||
case 2: | |||||
statusStr = "不支持"; | |||||
break; | |||||
} | |||||
String str = "MCU上发设置单位结果:" + statusStr; | |||||
addText(str); | |||||
} | |||||
@Override | |||||
public void mcuErr(int weightErr, int batteryErr) { | |||||
String weightErrStr = ""; | |||||
switch (weightErr) { | |||||
case 0: | |||||
weightErrStr = "正常"; | |||||
break; | |||||
case 1: | |||||
weightErrStr = "超重"; | |||||
break; | |||||
} | |||||
String batteryErrStr = ""; | |||||
switch (batteryErr) { | |||||
case 0: | |||||
batteryErrStr = "正常"; | |||||
break; | |||||
case 1: | |||||
batteryErrStr = "低电"; | |||||
break; | |||||
} | |||||
String str = "MCU上发异常报警:\n重量状态:" + weightErrStr + "\n电池状态:" + batteryErrStr; | |||||
addText(str); | |||||
} | |||||
private SimpleDateFormat sdf; | |||||
// 添加一条文本 | |||||
private void addText(String text) { | |||||
if (sdf == null) { | |||||
sdf = new SimpleDateFormat("HH:mm:ss", Locale.US); | |||||
} | |||||
mList.add(sdf.format(System.currentTimeMillis()) + ":\n" + text); | |||||
mListAdapter.notifyDataSetChanged(); | |||||
list_view.smoothScrollToPosition(mList.size() - 1); | |||||
} | |||||
// 清空文本 | |||||
private void clearText() { | |||||
mList.clear(); | |||||
mListAdapter.notifyDataSetChanged(); | |||||
} | |||||
// 保留小数位 | |||||
private String getPreFloatStr(float f, int decimal) { | |||||
BigDecimal bigDecimal = new BigDecimal(f); | |||||
return bigDecimal.setScale(decimal, BigDecimal.ROUND_HALF_UP).toString(); | |||||
} | |||||
/** | |||||
* APP 发送归零指令 | |||||
*/ | |||||
private void setZero() { | |||||
if (mBleNutritionData != null) { | |||||
mBleNutritionData.setZero(); | |||||
addText("APP下发去皮指令"); | |||||
} | |||||
} | |||||
/** | |||||
* APP 下发单位 | |||||
*/ | |||||
private void setUnit() { | |||||
if (mBleNutritionData != null) { | |||||
int unit = -1; | |||||
for (int i = 0; i < rb_list.size(); i++) { | |||||
if (rb_list.get(i).isChecked()) { | |||||
unit = i; | |||||
break; | |||||
} | |||||
} | |||||
if (unit == -1) { | |||||
addText("APP下发单位:失败:未选择单位"); | |||||
return; | |||||
} | |||||
mBleNutritionData.setUnit(unit); | |||||
addText("APP下发单位:" + unit + ":" + getUnitStr(unit)); | |||||
} | |||||
} | |||||
/** | |||||
* 获取单位字符串 | |||||
* | |||||
* @param unit 0 | |||||
* @return g | |||||
*/ | |||||
private String getUnitStr(int unit) { | |||||
String unitStr = ""; | |||||
switch (unit) { | |||||
case 0x00: | |||||
unitStr = "g"; | |||||
break; | |||||
case 0x01: | |||||
unitStr = "ml"; | |||||
break; | |||||
case 0x02: | |||||
unitStr = "lb:oz"; | |||||
break; | |||||
case 0x03: | |||||
unitStr = "oz"; | |||||
break; | |||||
case 0x04: | |||||
unitStr = "kg"; | |||||
break; | |||||
case 0x05: | |||||
unitStr = "斤"; | |||||
break; | |||||
case 0x06: | |||||
unitStr = "牛奶ml"; | |||||
break; | |||||
case 0x07: | |||||
unitStr = "水ml"; | |||||
break; | |||||
case 0x08: | |||||
unitStr = "牛奶floz"; | |||||
break; | |||||
case 0x09: | |||||
unitStr = "水floz"; | |||||
break; | |||||
case 0x0A: | |||||
unitStr = "lb"; | |||||
break; | |||||
} | |||||
return unitStr; | |||||
} | |||||
} |
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 aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import cn.net.aicare.modulelibrary.module.BloodGlucose.BloodGlucoseBleDeviceData; | import cn.net.aicare.modulelibrary.module.BloodGlucose.BloodGlucoseBleDeviceData; | ||||
import cn.net.aicare.modulelibrary.module.BloodGlucose.BloodGlucoseUtil; | import cn.net.aicare.modulelibrary.module.BloodGlucose.BloodGlucoseUtil; | ||||
/** | |||||
* 血糖仪 | |||||
*/ | |||||
public class BloodGlucoseActivity extends BleBaseActivity implements OnCallbackBle, BloodGlucoseBleDeviceData.BloodGlucoseCallback { | public class BloodGlucoseActivity extends BleBaseActivity implements OnCallbackBle, BloodGlucoseBleDeviceData.BloodGlucoseCallback { | ||||
private Button support_unit, quest_status, showdata, test; | private Button support_unit, quest_status, showdata, test; |
import com.pingwang.bluetoothlib.device.BleDevice; | import com.pingwang.bluetoothlib.device.BleDevice; | ||||
import com.pingwang.bluetoothlib.listener.OnBleCompanyListener; | import com.pingwang.bluetoothlib.listener.OnBleCompanyListener; | ||||
import com.pingwang.bluetoothlib.listener.OnCallbackBle; | import com.pingwang.bluetoothlib.listener.OnCallbackBle; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import cn.net.aicare.modulelibrary.module.BloodGlucose.BloodGlucoseBleDeviceData; | import cn.net.aicare.modulelibrary.module.BloodGlucose.BloodGlucoseBleDeviceData; | ||||
import cn.net.aicare.modulelibrary.module.BloodGlucose.BloodGlucoseUtil; | import cn.net.aicare.modulelibrary.module.BloodGlucose.BloodGlucoseUtil; |
import com.pingwang.bluetoothlib.listener.OnScanFilterListener; | import com.pingwang.bluetoothlib.listener.OnScanFilterListener; | ||||
import com.pingwang.bluetoothlib.utils.BleStrUtils; | import com.pingwang.bluetoothlib.utils.BleStrUtils; | ||||
import com.pinwang.ailinkble.AiLinkPwdUtil; | import com.pinwang.ailinkble.AiLinkPwdUtil; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import java.math.BigDecimal; | import java.math.BigDecimal; | ||||
import java.text.SimpleDateFormat; | import java.text.SimpleDateFormat; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.Locale; | import java.util.Locale; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import androidx.core.app.ActivityCompat; | import androidx.core.app.ActivityCompat; | ||||
import cn.net.aicare.modulelibrary.module.BroadcastScale.BroadcastScaleBleConfig; | import cn.net.aicare.modulelibrary.module.BroadcastScale.BroadcastScaleBleConfig; | ||||
/** | |||||
* 广播身高仪 | |||||
*/ | |||||
public class BroadcastHeightActivity extends BleBaseActivity implements OnCallbackDis, OnScanFilterListener { | public class BroadcastHeightActivity extends BleBaseActivity implements OnCallbackDis, OnScanFilterListener { | ||||
private Context mContext; | private Context mContext; |
package aicare.net.cn.sdk.ailinksdkdemoandroid.modules.broadcast_nutrition; | |||||
import android.os.Bundle; | |||||
import android.util.Log; | |||||
import android.view.View; | |||||
import android.widget.ArrayAdapter; | |||||
import android.widget.Button; | |||||
import android.widget.ListView; | |||||
import androidx.annotation.Nullable; | |||||
import com.pingwang.bluetoothlib.bean.BleValueBean; | |||||
import com.pingwang.bluetoothlib.config.BleConfig; | |||||
import com.pingwang.bluetoothlib.listener.OnScanFilterListener; | |||||
import com.pingwang.bluetoothlib.utils.BleLog; | |||||
import com.pingwang.bluetoothlib.utils.BleStrUtils; | |||||
import com.pinwang.ailinkble.AiLinkPwdUtil; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import java.math.BigDecimal; | |||||
import java.text.SimpleDateFormat; | |||||
import java.util.ArrayList; | |||||
import java.util.List; | |||||
import java.util.Locale; | |||||
public class BroadNutritionActivity extends BleBaseActivity implements View.OnClickListener, OnScanFilterListener { | |||||
private ListView list_view; | |||||
private Button btn_start; | |||||
private Button btn_stop; | |||||
private Button btn_clear; | |||||
private List<String> mList; | |||||
private ArrayAdapter mListAdapter; | |||||
@Override | |||||
protected void onCreate(@Nullable Bundle savedInstanceState) { | |||||
super.onCreate(savedInstanceState); | |||||
setContentView(R.layout.activity_broadcast_nutrition); | |||||
list_view = findViewById(R.id.list_view); | |||||
btn_start = findViewById(R.id.btn_start); | |||||
btn_stop = findViewById(R.id.btn_stop); | |||||
btn_clear = findViewById(R.id.btn_clear); | |||||
btn_start.setOnClickListener(this); | |||||
btn_stop.setOnClickListener(this); | |||||
btn_clear.setOnClickListener(this); | |||||
mList = new ArrayList<>(); | |||||
mListAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mList); | |||||
list_view.setAdapter(mListAdapter); | |||||
} | |||||
@Override | |||||
public void onClick(View v) { | |||||
int id = v.getId(); | |||||
if (id == R.id.btn_start) { | |||||
mBluetoothService.scanLeDevice(0, BleConfig.UUID_SERVER_BROADCAST_AILINK); | |||||
} else if (id == R.id.btn_stop) { | |||||
mBluetoothService.stopScan(); | |||||
} else if (id == R.id.btn_clear) { | |||||
clearText(); | |||||
} | |||||
} | |||||
@Override | |||||
protected void onDestroy() { | |||||
if (mBluetoothService != null) { | |||||
mBluetoothService.stopScan(); | |||||
} | |||||
super.onDestroy(); | |||||
} | |||||
@Override | |||||
public void onServiceSuccess() { | |||||
mBluetoothService.setOnScanFilterListener(this); | |||||
} | |||||
@Override | |||||
public void onServiceErr() { | |||||
} | |||||
@Override | |||||
public void unbindServices() { | |||||
} | |||||
@Override | |||||
public boolean onFilter(BleValueBean bleValueBean) { | |||||
if (bleValueBean.getCid() == 4) { | |||||
return true; | |||||
} | |||||
return false; | |||||
} | |||||
private String mMac; | |||||
@Override | |||||
public void onScanRecord(BleValueBean bleValueBean) { | |||||
byte[] manufacturerData = bleValueBean.getManufacturerData(); | |||||
mMac = bleValueBean.getMac(); | |||||
onNotifyData(manufacturerData, bleValueBean.getCid(), bleValueBean.getVid(), bleValueBean.getPid()); | |||||
} | |||||
private SimpleDateFormat mSdf; | |||||
// 添加一条文本 | |||||
private void addText(String text) { | |||||
if (mSdf == null) { | |||||
mSdf = new SimpleDateFormat("HH:mm:ss", Locale.US); | |||||
} | |||||
mList.add(mSdf.format(System.currentTimeMillis()) + ":\n" + text); | |||||
mListAdapter.notifyDataSetChanged(); | |||||
list_view.smoothScrollToPosition(mList.size() - 1); | |||||
} | |||||
// 清空文本 | |||||
private void clearText() { | |||||
mList.clear(); | |||||
mListAdapter.notifyDataSetChanged(); | |||||
} | |||||
private long mOldNumberId; | |||||
/** | |||||
* @param manufacturerData 自定义厂商数据0xFF后面的数据 | |||||
* @param cid cid 设备类型 | |||||
* @param vid vid | |||||
* @param pid pid | |||||
*/ | |||||
public void onNotifyData(byte[] manufacturerData, int cid, int vid, int pid) { | |||||
if (manufacturerData == null) { | |||||
BleLog.i("Tag1", "接收到的数据:null"); | |||||
return; | |||||
} | |||||
// if (manufacturerData.length >= 20) { | |||||
byte sum = manufacturerData[9]; | |||||
byte[] data = new byte[10]; | |||||
System.arraycopy(manufacturerData, 10, data, 0, data.length); | |||||
byte newSum = cmdSum(data); | |||||
if (newSum == sum) { | |||||
int numberId = data[0] & 0xff;//数据ID | |||||
// if (mOldNumberId == numberId) { | |||||
// //数据相同,已处理过了.不再处理 | |||||
// return; | |||||
// } | |||||
mOldNumberId = numberId; | |||||
byte[] bytes; | |||||
if (cid != 0 || vid != 0 || pid != 0) { | |||||
bytes = AiLinkPwdUtil.decryptBroadcast(cid, vid, pid, data); | |||||
} else { | |||||
bytes = data; | |||||
} | |||||
Log.i("Tag1", "接收到的数据:" + BleStrUtils.byte2HexStr(bytes)); | |||||
notifyData(bytes); | |||||
} else { | |||||
Log.i("Tag1", "校验和错误"); | |||||
} | |||||
// } | |||||
} | |||||
/** | |||||
* 校验累加,从1开始加 | |||||
*/ | |||||
private byte cmdSum(byte[] data) { | |||||
byte sum = 0; | |||||
for (byte datum : data) { | |||||
sum += datum; | |||||
} | |||||
return sum; | |||||
} | |||||
/** | |||||
* 解析数据 | |||||
* | |||||
* @param hex payloads | |||||
*/ | |||||
private void notifyData(byte[] hex) { | |||||
if (hex.length >= 10) { | |||||
int no = hex[0] & 0xff; | |||||
int type = hex[1] & 0xff; | |||||
int weight = ((hex[2] & 0xff) << 16) + ((hex[3] & 0xff) << 8) + (hex[4] & 0xff); | |||||
int unit = (hex[5] & 0xff) & 0x0f; | |||||
int decimal = ((hex[5] & 0xff) & 0x70) >> 4; | |||||
int symbol = (hex[5] & 0xff) >> 7; | |||||
int battery = hex[6] & 0xff; | |||||
int err = hex[7] & 0xff; | |||||
float weightValue = weight; | |||||
if (symbol == 1) { | |||||
weightValue *= -1; | |||||
} | |||||
weightValue /= Math.pow(10, decimal); | |||||
String weightStr = getPreFloatStr(weightValue, decimal); | |||||
switch (unit) { | |||||
default: | |||||
case 0: | |||||
weightStr += "g"; | |||||
break; | |||||
case 1: | |||||
weightStr += "ml"; | |||||
break; | |||||
} | |||||
addText("Mac:" + mMac + "\n流水号:" + no + "\n测量标识符:" + type + "\n原始重量:" + weight + ",单位:" + unit + ",小数点:" + decimal + ",正负:" + symbol + "\n重量:" + weightStr + "\n电量:" + battery + "\n异常标志位:" + err); | |||||
} | |||||
} | |||||
/** | |||||
* 四舍五入 | |||||
* | |||||
* @param f 小数 | |||||
* @return float | |||||
*/ | |||||
protected String getPreFloatStr(float f, int decimal) { | |||||
BigDecimal dc = new BigDecimal(f); | |||||
return dc.setScale(decimal, BigDecimal.ROUND_HALF_UP).toString(); | |||||
} | |||||
} |
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 aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import java.text.SimpleDateFormat; | 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 java.util.Locale; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import cn.net.aicare.modulelibrary.module.CoffeeScale.CoffeeScaleData; | import cn.net.aicare.modulelibrary.module.CoffeeScale.CoffeeScaleData; | ||||
/** | |||||
* 咖啡秤 | |||||
*/ | |||||
public class CoffeeScaleActivity extends BleBaseActivity implements View.OnClickListener, CoffeeScaleData.CoffeeScaleCallback { | public class CoffeeScaleActivity extends BleBaseActivity implements View.OnClickListener, CoffeeScaleData.CoffeeScaleCallback { | ||||
private static final String TAG = "Tag1"; | private static final String TAG = "Tag1"; |
import android.widget.Spinner; | import android.widget.Spinner; | ||||
import com.pingwang.bluetoothlib.device.BleDevice; | import com.pingwang.bluetoothlib.device.BleDevice; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import java.text.SimpleDateFormat; | 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 java.util.Locale; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import cn.net.aicare.modulelibrary.module.FoodTemp.FoodTempData; | import cn.net.aicare.modulelibrary.module.FoodTemp.FoodTempData; | ||||
import android.widget.TextView; | import android.widget.TextView; | ||||
import com.pingwang.bluetoothlib.device.BleDevice; | import com.pingwang.bluetoothlib.device.BleDevice; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import java.text.SimpleDateFormat; | 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 java.util.Locale; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import cn.net.aicare.modulelibrary.module.ShareCharger.ShareChargerData; | import cn.net.aicare.modulelibrary.module.ShareCharger.ShareChargerData; | ||||
/** | |||||
* 共享充电器 | |||||
*/ | |||||
public class ShareChargerActivity extends BleBaseActivity implements View.OnClickListener, ShareChargerData.ShareChargerCallback { | public class ShareChargerActivity extends BleBaseActivity implements View.OnClickListener, ShareChargerData.ShareChargerCallback { | ||||
private Button btn_set; | private Button btn_set; |
import android.widget.TextView; | import android.widget.TextView; | ||||
import com.pingwang.bluetoothlib.device.BleDevice; | import com.pingwang.bluetoothlib.device.BleDevice; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import java.text.SimpleDateFormat; | 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 java.util.Locale; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import cn.net.aicare.modulelibrary.module.ShareCondom.ShareCondomData; | import cn.net.aicare.modulelibrary.module.ShareCondom.ShareCondomData; | ||||
/** | |||||
* 共享套套机 | |||||
*/ | |||||
public class ShareCondomActivity extends BleBaseActivity implements View.OnClickListener, ShareCondomData.ShareCondomCallback { | public class ShareCondomActivity extends BleBaseActivity implements View.OnClickListener, ShareCondomData.ShareCondomCallback { | ||||
private static final int MSG_TIMING = 100; | private static final int MSG_TIMING = 100; |
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 com.pingwang.bluetoothlib.listener.OnScanFilterListener; | import com.pingwang.bluetoothlib.listener.OnScanFilterListener; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import java.text.SimpleDateFormat; | import java.text.SimpleDateFormat; | ||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.Locale; | import java.util.Locale; | ||||
import java.util.Map; | import java.util.Map; | ||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.R; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.base.BleBaseActivity; | |||||
import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import cn.net.aicare.modulelibrary.module.ShareSocket.ShareSocketData; | import cn.net.aicare.modulelibrary.module.ShareSocket.ShareSocketData; | ||||
/** | |||||
* 共享插座 | |||||
*/ | |||||
public class ShareSocketActivity extends BleBaseActivity implements View.OnClickListener, ShareSocketData.ShareSocketCallback, OnCallbackBle, OnScanFilterListener { | public class ShareSocketActivity extends BleBaseActivity implements View.OnClickListener, ShareSocketData.ShareSocketCallback, OnCallbackBle, OnScanFilterListener { | ||||
private static final int MSG_TEST_START_SCAN = 100; | private static final int MSG_TEST_START_SCAN = 100; |
package aicare.net.cn.sdk.ailinksdkdemoandroid.utils; | |||||
import com.holtek.libHTBodyfat.HTBodyBasicInfo; | |||||
import com.holtek.libHTBodyfat.HTBodyResultAllBody; | |||||
import aicare.net.cn.sdk.ailinksdkdemoandroid.EightBodyfatAdc; | |||||
import java.util.Locale; | |||||
public class EightBodyFatAlgorithms { | |||||
public EightBodyFatAlgorithms() { | |||||
} | |||||
private static class AlgorithmsHolder { | |||||
private static EightBodyFatAlgorithms algorithmsUnit = new EightBodyFatAlgorithms(); | |||||
} | |||||
public static EightBodyFatAlgorithms getInstance() { | |||||
return AlgorithmsHolder.algorithmsUnit; | |||||
} | |||||
public EightBodyFatBean getAlgorithmsData(int algorithms, int sex, int height, float weight_kg, int age, EightBodyfatAdc eightBodyfatAdc) { | |||||
EightBodyFatBean eightBodyFatBean = new EightBodyFatBean(); | |||||
switch (algorithms) { | |||||
//和泰算法 | |||||
case 1: | |||||
default: | |||||
HTBodyBasicInfo basicInfo = new HTBodyBasicInfo(sex, height, weight_kg, age); | |||||
basicInfo.htZAllBodyImpedance = eightBodyfatAdc.getAdcRightBody(); | |||||
basicInfo.htZLeftLegImpedance = eightBodyfatAdc.getAdcLeftFoot(); | |||||
basicInfo.htZRightLegImpedance = eightBodyfatAdc.getAdcRightFoot(); | |||||
basicInfo.htZLeftArmImpedance = eightBodyfatAdc.getAdcLeftHand(); | |||||
basicInfo.htZRightArmImpedance = eightBodyfatAdc.getAdcRightHand(); | |||||
basicInfo.htTwoLegsImpedance = eightBodyfatAdc.getAdcFoot(); | |||||
basicInfo.htTwoArmsImpedance = eightBodyfatAdc.getAdcHand(); | |||||
HTBodyResultAllBody resultTwoLegs = new HTBodyResultAllBody(); | |||||
int errorType = resultTwoLegs.getBodyfatWithBasicInfo(basicInfo); | |||||
if (errorType == HTBodyBasicInfo.ErrorNone) { | |||||
eightBodyFatBean.setBmi(Adecimal(resultTwoLegs.htBMI)); | |||||
eightBodyFatBean.setBmr((float) resultTwoLegs.htBMR); | |||||
eightBodyFatBean.setUvi((float) resultTwoLegs.htVFAL); | |||||
eightBodyFatBean.setBm(String.valueOf((float) resultTwoLegs.htBoneKg)); | |||||
eightBodyFatBean.setBfr(Adecimal(resultTwoLegs.htBodyfatPercentage)); | |||||
eightBodyFatBean.setVwc(Adecimal(resultTwoLegs.htWaterPercentage)); | |||||
eightBodyFatBean.setRom(Adecimal(resultTwoLegs.htMusclePercentage)); | |||||
eightBodyFatBean.setBodyAge(resultTwoLegs.htBodyAge); | |||||
eightBodyFatBean.setPp(Adecimal(resultTwoLegs.htProteinPercentage)); | |||||
eightBodyFatBean.setSfr(Adecimal(resultTwoLegs.htBodyfatSubcut)); | |||||
eightBodyFatBean.setFatMassBody(String.valueOf(resultTwoLegs.htBodyfatKgTrunk)); | |||||
eightBodyFatBean.setFatMassLeftTop(String.valueOf(resultTwoLegs.htBodyfatKgLeftArm)); | |||||
eightBodyFatBean.setFatMassLeftBottom(String.valueOf(resultTwoLegs.htBodyfatKgLeftLeg)); | |||||
eightBodyFatBean.setFatMassRightTop(String.valueOf(resultTwoLegs.htBodyfatKgRightArm)); | |||||
eightBodyFatBean.setFatMassRightBottom(String.valueOf(resultTwoLegs.htBodyfatKgRightLeg)); | |||||
// eightBodyFatBean.setFatMass(resultTwoLegs.htBodyfatKg); | |||||
eightBodyFatBean.setMuscleMassBody(String.valueOf(resultTwoLegs.htMuscleKgTrunk)); | |||||
eightBodyFatBean.setMuscleMassLeftTop(String.valueOf(resultTwoLegs.htMuscleKgLeftArm)); | |||||
eightBodyFatBean.setMuscleMassLeftBottom(String.valueOf(resultTwoLegs.htMuscleKgLeftLeg)); | |||||
eightBodyFatBean.setMuscleMassRightTop(String.valueOf(resultTwoLegs.htMuscleKgRightArm)); | |||||
eightBodyFatBean.setMuscleMassRightBottom(String.valueOf(resultTwoLegs.htMuscleKgRightLeg)); | |||||
// eightBodyFatBean.setMusleMass(resultTwoLegs.htMuscleKg); | |||||
// eightBodyFatBean.setStandardWeight(resultTwoLegs.htIdealWeightKg); | |||||
// eightBodyFatBean.setWeightWithoutFat(resultTwoLegs.htBodyfatFreeMass); | |||||
// eightBodyFatBean.setWeightControl((weight_kg - resultTwoLegs.htIdealWeightKg)); | |||||
// eightBodyFatBean.setFatLevel(HealthyStatusUtil.ObesitylevelsStatus(weight_kg, (float) resultTwoLegs.htIdealWeightKg)); | |||||
// double muscle = (resultTwoLegs.htMuscleKgLeftArm + resultTwoLegs.htMuscleKgLeftLeg + resultTwoLegs.htMuscleKgRightArm + resultTwoLegs.htMuscleKgRightLeg); | |||||
// eightBodyFatBean.setMusleMassLimbs(Adecimal(muscle / (height * height) * 10000)); | |||||
eightBodyFatBean.setAdcFoot((resultTwoLegs.htZLeftLeg + resultTwoLegs.htZRightLeg)); | |||||
eightBodyFatBean.setAdcHand((resultTwoLegs.htZLeftArm + resultTwoLegs.htZRightArm)); | |||||
eightBodyFatBean.setAdcLeftHand(resultTwoLegs.htZLeftArm); | |||||
eightBodyFatBean.setAdcRightHand(resultTwoLegs.htZRightArm); | |||||
eightBodyFatBean.setAdcLeftFoot(resultTwoLegs.htZLeftLeg); | |||||
eightBodyFatBean.setAdcRightFoot(resultTwoLegs.htZRightLeg); | |||||
eightBodyFatBean.setAdcLeftBody(resultTwoLegs.htZAllBody); | |||||
eightBodyFatBean.setAdcRightBody(resultTwoLegs.htZAllBody); | |||||
eightBodyFatBean.setAdcRightHandLeftFoot((resultTwoLegs.htZRightArm + resultTwoLegs.htZLeftLeg)); | |||||
eightBodyFatBean.setAdcLeftHandRightFoot((resultTwoLegs.htZLeftArm + resultTwoLegs.htZRightLeg)); | |||||
eightBodyFatBean.setAdcBody(resultTwoLegs.htZAllBody); | |||||
} | |||||
} | |||||
return eightBodyFatBean; | |||||
} | |||||
private float Adecimal(double data) { | |||||
return Float.parseFloat(String.format(Locale.US, "%.1f", data)); | |||||
} | |||||
} |
package aicare.net.cn.sdk.ailinksdkdemoandroid.utils; | |||||
public class EightBodyFatBean { | |||||
private String weight; //体重, | |||||
private float bmi; //体质指数, | |||||
private float bfr; //体脂率, | |||||
private float sfr; //皮下脂肪率, | |||||
private float uvi; //内脏脂肪率, | |||||
private float rom; //肌肉率, | |||||
private float bmr; //基础代谢率, | |||||
private String bm; //骨骼质量, | |||||
private float vwc; //水含量, | |||||
private int bodyAge; //身体年龄, | |||||
private float pp; //蛋白率, | |||||
private double adcFoot; //双脚阻抗, | |||||
private double adcHand;//双手阻抗 | |||||
private double adcLeftHand; //左手阻抗 | |||||
private double adcRightHand; //右手阻抗 | |||||
private double adcLeftFoot; //左脚阻抗 | |||||
private double adcRightFoot; //右脚阻抗 | |||||
private double adcLeftBody; | |||||
private double adcRightBody; | |||||
private double adcRightHandLeftFoot; | |||||
private double adcLeftHandRightFoot; | |||||
private double adcBody; | |||||
private int arithmetic; | |||||
private int heartRate; | |||||
private String fatMassRightTop; //体脂-右上 | |||||
private String fatMassRightBottom; //体脂-右下 | |||||
private String fatMassLeftTop; //体脂-左上 | |||||
private String fatMassLeftBottom; //体脂-左下 | |||||
private String fatMassBody; //体脂-躯干 | |||||
private String muscleMassRightTop; //肌肉-右上 | |||||
private String muscleMassRightBottom; //肌肉-右下 | |||||
private String muscleMassLeftTop; //肌肉-左上 | |||||
private String muscleMassLeftBottom; //肌肉-左下 | |||||
private String muscleMassBody; //肌肉-躯干 | |||||
private String testAdc; | |||||
public String getTestAdc() { | |||||
return testAdc; | |||||
} | |||||
public void setTestAdc(String testAdc) { | |||||
this.testAdc = testAdc; | |||||
} | |||||
public String getWeight() { | |||||
return weight; | |||||
} | |||||
public void setWeight(String weight) { | |||||
this.weight = weight; | |||||
} | |||||
public float getBmi() { | |||||
return bmi; | |||||
} | |||||
public void setBmi(float bmi) { | |||||
this.bmi = bmi; | |||||
} | |||||
public float getBfr() { | |||||
return bfr; | |||||
} | |||||
public void setBfr(float bfr) { | |||||
this.bfr = bfr; | |||||
} | |||||
public float getSfr() { | |||||
return sfr; | |||||
} | |||||
public void setSfr(float sfr) { | |||||
this.sfr = sfr; | |||||
} | |||||
public float getUvi() { | |||||
return uvi; | |||||
} | |||||
public void setUvi(float uvi) { | |||||
this.uvi = uvi; | |||||
} | |||||
public float getRom() { | |||||
return rom; | |||||
} | |||||
public void setRom(float rom) { | |||||
this.rom = rom; | |||||
} | |||||
public float getBmr() { | |||||
return bmr; | |||||
} | |||||
public void setBmr(float bmr) { | |||||
this.bmr = bmr; | |||||
} | |||||
public String getBm() { | |||||
return bm; | |||||
} | |||||
public void setBm(String bm) { | |||||
this.bm = bm; | |||||
} | |||||
public float getVwc() { | |||||
return vwc; | |||||
} | |||||
public void setVwc(float vwc) { | |||||
this.vwc = vwc; | |||||
} | |||||
public int getBodyAge() { | |||||
return bodyAge; | |||||
} | |||||
public void setBodyAge(int bodyAge) { | |||||
this.bodyAge = bodyAge; | |||||
} | |||||
public float getPp() { | |||||
return pp; | |||||
} | |||||
public void setPp(float pp) { | |||||
this.pp = pp; | |||||
} | |||||
public double getAdcFoot() { | |||||
return adcFoot; | |||||
} | |||||
public void setAdcFoot(double adcFoot) { | |||||
this.adcFoot = adcFoot; | |||||
} | |||||
public double getAdcHand() { | |||||
return adcHand; | |||||
} | |||||
public void setAdcHand(double adcHand) { | |||||
this.adcHand = adcHand; | |||||
} | |||||
public double getAdcLeftHand() { | |||||
return adcLeftHand; | |||||
} | |||||
public void setAdcLeftHand(double adcLeftHand) { | |||||
this.adcLeftHand = adcLeftHand; | |||||
} | |||||
public double getAdcRightHand() { | |||||
return adcRightHand; | |||||
} | |||||
public void setAdcRightHand(double adcRightHand) { | |||||
this.adcRightHand = adcRightHand; | |||||
} | |||||
public double getAdcLeftFoot() { | |||||
return adcLeftFoot; | |||||
} | |||||
public void setAdcLeftFoot(double adcLeftFoot) { | |||||
this.adcLeftFoot = adcLeftFoot; | |||||
} | |||||
public double getAdcRightFoot() { | |||||
return adcRightFoot; | |||||
} | |||||
public void setAdcRightFoot(double adcRightFoot) { | |||||
this.adcRightFoot = adcRightFoot; | |||||
} | |||||
public double getAdcLeftBody() { | |||||
return adcLeftBody; | |||||
} | |||||
public void setAdcLeftBody(double adcLeftBody) { | |||||
this.adcLeftBody = adcLeftBody; | |||||
} | |||||
public double getAdcRightBody() { | |||||
return adcRightBody; | |||||
} | |||||
public void setAdcRightBody(double adcRightBody) { | |||||
this.adcRightBody = adcRightBody; | |||||
} | |||||
public double getAdcRightHandLeftFoot() { | |||||
return adcRightHandLeftFoot; | |||||
} | |||||
public void setAdcRightHandLeftFoot(double adcRightHandLeftFoot) { | |||||
this.adcRightHandLeftFoot = adcRightHandLeftFoot; | |||||
} | |||||
public double getAdcLeftHandRightFoot() { | |||||
return adcLeftHandRightFoot; | |||||
} | |||||
public void setAdcLeftHandRightFoot(double adcLeftHandRightFoot) { | |||||
this.adcLeftHandRightFoot = adcLeftHandRightFoot; | |||||
} | |||||
public double getAdcBody() { | |||||
return adcBody; | |||||
} | |||||
public void setAdcBody(double adcBody) { | |||||
this.adcBody = adcBody; | |||||
} | |||||
public String getFatMassRightTop() { | |||||
return fatMassRightTop; | |||||
} | |||||
public void setFatMassRightTop(String fatMassRightTop) { | |||||
this.fatMassRightTop = fatMassRightTop; | |||||
} | |||||
public String getFatMassRightBottom() { | |||||
return fatMassRightBottom; | |||||
} | |||||
public void setFatMassRightBottom(String fatMassRightBottom) { | |||||
this.fatMassRightBottom = fatMassRightBottom; | |||||
} | |||||
public String getFatMassLeftTop() { | |||||
return fatMassLeftTop; | |||||
} | |||||
public void setFatMassLeftTop(String fatMassLeftTop) { | |||||
this.fatMassLeftTop = fatMassLeftTop; | |||||
} | |||||
public String getFatMassLeftBottom() { | |||||
return fatMassLeftBottom; | |||||
} | |||||
public void setFatMassLeftBottom(String fatMassLeftBottom) { | |||||
this.fatMassLeftBottom = fatMassLeftBottom; | |||||
} | |||||
public String getFatMassBody() { | |||||
return fatMassBody; | |||||
} | |||||
public void setFatMassBody(String fatMassBody) { | |||||
this.fatMassBody = fatMassBody; | |||||
} | |||||
public String getMuscleMassRightTop() { | |||||
return muscleMassRightTop; | |||||
} | |||||
public void setMuscleMassRightTop(String muscleMassRightTop) { | |||||
this.muscleMassRightTop = muscleMassRightTop; | |||||
} | |||||
public String getMuscleMassRightBottom() { | |||||
return muscleMassRightBottom; | |||||
} | |||||
public void setMuscleMassRightBottom(String muscleMassRightBottom) { | |||||
this.muscleMassRightBottom = muscleMassRightBottom; | |||||
} | |||||
public String getMuscleMassLeftTop() { | |||||
return muscleMassLeftTop; | |||||
} | |||||
public void setMuscleMassLeftTop(String muscleMassLeftTop) { | |||||
this.muscleMassLeftTop = muscleMassLeftTop; | |||||
} | |||||
public String getMuscleMassLeftBottom() { | |||||
return muscleMassLeftBottom; | |||||
} | |||||
public void setMuscleMassLeftBottom(String muscleMassLeftBottom) { | |||||
this.muscleMassLeftBottom = muscleMassLeftBottom; | |||||
} | |||||
public String getMuscleMassBody() { | |||||
return muscleMassBody; | |||||
} | |||||
public void setMuscleMassBody(String muscleMassBody) { | |||||
this.muscleMassBody = muscleMassBody; | |||||
} | |||||
public int getArithmetic() { | |||||
return arithmetic; | |||||
} | |||||
public void setArithmetic(int arithmetic) { | |||||
this.arithmetic = arithmetic; | |||||
} | |||||
public void setHeartRate(int heartRate) { | |||||
this.heartRate = heartRate; | |||||
} | |||||
public int getHeartRate() { | |||||
return heartRate; | |||||
} | |||||
@Override | |||||
public String toString() { | |||||
return "EightBodyFatBean{" + "weight='" + weight + '\'' + ", bmi=" + bmi + ", bfr=" + bfr + ", sfr=" + sfr + ", uvi=" + uvi + ", rom=" + rom + ", bmr=" + bmr + ", bm='" + bm + '\'' + ", " + | |||||
"vwc=" + vwc + ", bodyAge=" + bodyAge + ", pp=" + pp + ", adcFoot=" + adcFoot + ", adcHand=" + adcHand + ", adcLeftHand=" + adcLeftHand + ", adcRightHand=" + adcRightHand + ", " + | |||||
"adcLeftFoot=" + adcLeftFoot + ", adcRightFoot=" + adcRightFoot + ", adcLeftBody=" + adcLeftBody + ", adcRightBody=" + adcRightBody + ", adcRightHandLeftFoot=" + adcRightHandLeftFoot + ", adcLeftHandRightFoot=" + adcLeftHandRightFoot + ", adcBody=" + adcBody + ", arithmetic=" + arithmetic + ", heartRate=" + heartRate + ", fatMassRightTop='" + fatMassRightTop + '\'' + ", fatMassRightBottom='" + fatMassRightBottom + '\'' + ", fatMassLeftTop='" + fatMassLeftTop + '\'' + ", fatMassLeftBottom='" + fatMassLeftBottom + '\'' + ", fatMassBody='" + fatMassBody + '\'' + ", muscleMassRightTop='" + muscleMassRightTop + '\'' + ", muscleMassRightBottom='" + muscleMassRightBottom + '\'' + ", muscleMassLeftTop='" + muscleMassLeftTop + '\'' + ", muscleMassLeftBottom='" + muscleMassLeftBottom + '\'' + ", muscleMassBody='" + muscleMassBody + '\'' + ", testAdc='" + testAdc + '\'' + '}'; | |||||
} | |||||
} |
} | } | ||||
/** | |||||
* int到byte[] 由高位到低位 | |||||
* @param i 需要转换为byte数组的整行值。 | |||||
* @return byte数组 | |||||
*/ | |||||
public static byte[] intToByteArray(int i) { | |||||
byte[] result = new byte[4]; | |||||
result[0] = (byte)((i >> 24) & 0xFF); | |||||
result[1] = (byte)((i >> 16) & 0xFF); | |||||
result[2] = (byte)((i >> 8) & 0xFF); | |||||
result[3] = (byte)(i & 0xFF); | |||||
return result; | |||||
} | |||||
/** | |||||
* 时间戳(秒)转byte数组 由高位到低位 | |||||
* @param time 时间戳,精确到秒 | |||||
* @return byte[5]数组 | |||||
*/ | |||||
public static byte[] getTimestampByte(long time) { | |||||
byte[] result = new byte[5]; | |||||
result[4] = (byte)((time >> 32) & 0xFF); | |||||
result[3] = (byte)((time >> 24) & 0xFF); | |||||
result[2] = (byte)((time >> 16) & 0xFF); | |||||
result[1] = (byte)((time >> 8) & 0xFF); | |||||
result[0] = (byte)(time & 0xFF); | |||||
return result; | |||||
} | |||||
/** | |||||
* byte[]转long | |||||
* @param bytes 需要转换的数组 | |||||
* @param isBig 是否为大端序 | |||||
* @return 数值 | |||||
*/ | |||||
public static long byteArrayToLong(byte[] bytes,boolean isBig) { | |||||
long value=0; | |||||
int length = bytes.length; | |||||
if (isBig){ | |||||
for(int i = length; i >0; i--) { | |||||
int shift= ((length-1)-(length-i)) * 8; | |||||
value +=(bytes[(i-1)] & 0xFF) << shift; | |||||
} | |||||
}else { | |||||
for(int i = 0; i <length; i++) { | |||||
int shift= ((length-1)-i) * 8; | |||||
value +=(bytes[i] & 0xFF) << shift; | |||||
} | |||||
} | |||||
return value; | |||||
} | |||||
/** | |||||
* (16进制) | |||||
* BLE蓝牙返回的byte[] | |||||
* byte[]转字符串 | |||||
*/ | |||||
public static String getMac(byte[] b,boolean isBig) { | |||||
if (b == null) | |||||
return ""; | |||||
StringBuilder hs = new StringBuilder(); | |||||
String stmp; | |||||
if (isBig){ | |||||
for (byte aB : b) { | |||||
int a = aB & 0XFF; | |||||
stmp = getHexString(a); | |||||
if (stmp.length() == 1) | |||||
hs.append("0").append(stmp); | |||||
else | |||||
hs.append(stmp); | |||||
hs.append(":"); | |||||
} | |||||
}else { | |||||
for (int i = b.length - 1; i >= 0; i--) { | |||||
byte aB=b[i]; | |||||
int a = aB & 0XFF; | |||||
stmp = getHexString(a); | |||||
if (stmp.length() == 1) | |||||
hs.append("0").append(stmp); | |||||
else | |||||
hs.append(stmp); | |||||
hs.append(":"); | |||||
} | |||||
} | |||||
hs.deleteCharAt(hs.length()-1); | |||||
return hs.toString(); | |||||
} | |||||
/** | |||||
* mac地址转byte | |||||
* @param mac | |||||
* @return | |||||
*/ | |||||
public static byte[] getDeviceMacByte(String mac) { | |||||
byte[] macByte = new byte[6]; | |||||
if (mac.contains(":")) { | |||||
String[] macArr = mac.split(":"); | |||||
for (int i = 0; i < macArr.length; i++) { | |||||
macByte[macArr.length - i - 1] = (byte) Integer.parseInt(macArr[i], 16); | |||||
} | |||||
} | |||||
return macByte; | |||||
} | |||||
} | } |
android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||||
android:layout_height="wrap_content" | android:layout_height="wrap_content" | ||||
android:text="暂停" /> | android:text="暂停" /> | ||||
<Button | |||||
android:id="@+id/btnDis" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="断开" /> | |||||
<Button | |||||
android:id="@+id/btnConnect" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="连接" /> | |||||
</LinearLayout> | </LinearLayout> | ||||
android:text="1,60,1,1000" /> | android:text="1,60,1,1000" /> | ||||
</LinearLayout> | </LinearLayout> | ||||
<LinearLayout | |||||
android:layout_width="match_parent" | |||||
android:orientation="horizontal" | |||||
android:padding="5dp" | |||||
android:layout_height="wrap_content"> | |||||
<EditText | |||||
android:id="@+id/et_set_device" | |||||
android:layout_width="0dp" | |||||
android:layout_weight="1" | |||||
android:digits="0123456789abcdefABCDEF, " | |||||
android:layout_height="wrap_content" /> | |||||
<Button | |||||
android:id="@+id/btn_set_device" | |||||
android:text="设置设备信息" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" /> | |||||
<Button | |||||
android:id="@+id/btn_get_device" | |||||
android:text="读取设备信息" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" /> | |||||
</LinearLayout> | |||||
</LinearLayout> | </LinearLayout> | ||||
</ScrollView> | </ScrollView> |
<?xml version="1.0" encoding="utf-8"?> | |||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="match_parent" | |||||
android:orientation="vertical"> | |||||
<ScrollView | |||||
android:layout_width="match_parent" | |||||
android:layout_height="0dp" | |||||
android:layout_weight="1"> | |||||
<LinearLayout | |||||
android:layout_width="match_parent" | |||||
android:layout_height="wrap_content" | |||||
android:orientation="vertical"> | |||||
<LinearLayout | |||||
android:layout_width="match_parent" | |||||
android:layout_height="wrap_content" | |||||
android:layout_margin="5dp" | |||||
android:orientation="horizontal"> | |||||
<Button | |||||
android:id="@+id/btn_clear" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="清空" /> | |||||
</LinearLayout> | |||||
<View | |||||
android:layout_width="match_parent" | |||||
android:layout_height="1dp" | |||||
android:background="?android:attr/listDivider" /> | |||||
<LinearLayout | |||||
android:layout_width="match_parent" | |||||
android:layout_height="wrap_content" | |||||
android:layout_margin="5dp" | |||||
android:orientation="horizontal"> | |||||
<Button | |||||
android:id="@+id/btn_set_zero" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="去皮指令" /> | |||||
<Button | |||||
android:id="@+id/btn_set_unit" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="设置单位" /> | |||||
</LinearLayout> | |||||
<LinearLayout | |||||
android:layout_width="match_parent" | |||||
android:layout_height="wrap_content" | |||||
android:layout_marginStart="5dp" | |||||
android:orientation="horizontal"> | |||||
<RadioButton | |||||
android:id="@+id/rb_g" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:checked="true" | |||||
android:text="g" /> | |||||
<RadioButton | |||||
android:id="@+id/rb_ml" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="ml" /> | |||||
<RadioButton | |||||
android:id="@+id/rb_lb_oz" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="lb:oz" /> | |||||
<RadioButton | |||||
android:id="@+id/rb_oz" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="oz" /> | |||||
<RadioButton | |||||
android:id="@+id/rb_kg" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="kg" /> | |||||
<RadioButton | |||||
android:id="@+id/rb_jin" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="斤" /> | |||||
</LinearLayout> | |||||
<LinearLayout | |||||
android:layout_width="match_parent" | |||||
android:layout_height="wrap_content" | |||||
android:layout_marginStart="5dp" | |||||
android:orientation="horizontal"> | |||||
<RadioButton | |||||
android:id="@+id/rb_milk_ml" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="牛奶ml" /> | |||||
<RadioButton | |||||
android:id="@+id/rb_water_ml" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="水ml" /> | |||||
<RadioButton | |||||
android:id="@+id/rb_milk_fl_oz" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="牛奶floz" /> | |||||
<RadioButton | |||||
android:id="@+id/rb_water_fl_oz" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="水floz" /> | |||||
<RadioButton | |||||
android:id="@+id/rb_lb" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="lb" /> | |||||
</LinearLayout> | |||||
</LinearLayout> | |||||
</ScrollView> | |||||
<View | |||||
android:layout_width="match_parent" | |||||
android:layout_height="1dp" | |||||
android:background="?android:attr/listDivider" /> | |||||
<ListView | |||||
android:id="@+id/list_view" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="0dp" | |||||
android:layout_weight="1" /> | |||||
</LinearLayout> |
<?xml version="1.0" encoding="utf-8"?> | |||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="match_parent" | |||||
android:orientation="vertical"> | |||||
<LinearLayout | |||||
android:layout_width="match_parent" | |||||
android:orientation="horizontal" | |||||
android:layout_height="wrap_content"> | |||||
<Button | |||||
android:id="@+id/btn_start" | |||||
android:text="开始扫描" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" /> | |||||
<Button | |||||
android:id="@+id/btn_stop" | |||||
android:text="停止扫描" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" /> | |||||
<Button | |||||
android:id="@+id/btn_clear" | |||||
android:text="清空文本" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" /> | |||||
</LinearLayout> | |||||
<View | |||||
android:background="#CCCCCC" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="1px" /> | |||||
<ListView | |||||
android:id="@+id/list_view" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="match_parent" /> | |||||
</LinearLayout> |
android:text="靠近报警阀值:" | android:text="靠近报警阀值:" | ||||
/> | /> | ||||
<com.pinwang.ailinkblesdk.view.SeekBarMin | |||||
<aicare.net.cn.sdk.ailinksdkdemoandroid.view.SeekBarMin | |||||
android:id="@+id/seekBar1" | android:id="@+id/seekBar1" | ||||
style="@style/Widget.AppCompat.SeekBar" | style="@style/Widget.AppCompat.SeekBar" | ||||
android:layout_width="0dp" | android:layout_width="0dp" | ||||
android:text="接收的阀值次数:" | android:text="接收的阀值次数:" | ||||
/> | /> | ||||
<com.pinwang.ailinkblesdk.view.SeekBarMin | |||||
<aicare.net.cn.sdk.ailinksdkdemoandroid.view.SeekBarMin | |||||
android:id="@+id/seekBar2" | android:id="@+id/seekBar2" | ||||
style="@style/Widget.AppCompat.SeekBar" | style="@style/Widget.AppCompat.SeekBar" | ||||
android:layout_width="0dp" | android:layout_width="0dp" | ||||
android:text="脱离报警时间:" | android:text="脱离报警时间:" | ||||
/> | /> | ||||
<com.pinwang.ailinkblesdk.view.SeekBarMin | |||||
<aicare.net.cn.sdk.ailinksdkdemoandroid.view.SeekBarMin | |||||
android:id="@+id/seekBar3" | android:id="@+id/seekBar3" | ||||
style="@style/Widget.AppCompat.SeekBar" | style="@style/Widget.AppCompat.SeekBar" | ||||
android:layout_width="0dp" | android:layout_width="0dp" | ||||
android:text="脱离报警次数:" | android:text="脱离报警次数:" | ||||
/> | /> | ||||
<com.pinwang.ailinkblesdk.view.SeekBarMin | |||||
<aicare.net.cn.sdk.ailinksdkdemoandroid.view.SeekBarMin | |||||
android:id="@+id/seekBar4" | android:id="@+id/seekBar4" | ||||
style="@style/Widget.AppCompat.SeekBar" | style="@style/Widget.AppCompat.SeekBar" | ||||
android:layout_width="0dp" | android:layout_width="0dp" | ||||
android:text="Gsensor灵敏度:" | android:text="Gsensor灵敏度:" | ||||
/> | /> | ||||
<com.pinwang.ailinkblesdk.view.SeekBarMin | |||||
<aicare.net.cn.sdk.ailinksdkdemoandroid.view.SeekBarMin | |||||
android:id="@+id/seekBar5" | android:id="@+id/seekBar5" | ||||
style="@style/Widget.AppCompat.SeekBar" | style="@style/Widget.AppCompat.SeekBar" | ||||
android:layout_width="0dp" | android:layout_width="0dp" | ||||
android:text="Gsensor不动的脱机时间:" | android:text="Gsensor不动的脱机时间:" | ||||
/> | /> | ||||
<com.pinwang.ailinkblesdk.view.SeekBarMin | |||||
<aicare.net.cn.sdk.ailinksdkdemoandroid.view.SeekBarMin | |||||
android:id="@+id/seekBar6" | android:id="@+id/seekBar6" | ||||
style="@style/Widget.AppCompat.SeekBar" | style="@style/Widget.AppCompat.SeekBar" | ||||
android:layout_width="0dp" | android:layout_width="0dp" | ||||
android:text="马达震动时间:" | android:text="马达震动时间:" | ||||
/> | /> | ||||
<com.pinwang.ailinkblesdk.view.SeekBarMin | |||||
<aicare.net.cn.sdk.ailinksdkdemoandroid.view.SeekBarMin | |||||
android:id="@+id/seekBar7" | android:id="@+id/seekBar7" | ||||
style="@style/Widget.AppCompat.SeekBar" | style="@style/Widget.AppCompat.SeekBar" | ||||
android:layout_width="0dp" | android:layout_width="0dp" |
android:id="@+id/btn_lock" | android:id="@+id/btn_lock" | ||||
android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||||
android:layout_height="wrap_content" | android:layout_height="wrap_content" | ||||
android:visibility="gone" | |||||
android:text="电子锁" /> | android:text="电子锁" /> | ||||
android:layout_height="wrap_content" | android:layout_height="wrap_content" | ||||
android:text="共享套套机" /> | android:text="共享套套机" /> | ||||
<Button | |||||
android:id="@+id/btn_rope_skip" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="跳绳" /> | |||||
</LinearLayout> | |||||
<LinearLayout | |||||
android:layout_width="match_parent" | |||||
android:layout_height="wrap_content"> | |||||
<Button | |||||
android:id="@+id/btn_broadcast_nutrition" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="广播营养秤" /> | |||||
<Button | |||||
android:id="@+id/btn_ble_nutrition" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="蓝牙营养秤" /> | |||||
</LinearLayout> | </LinearLayout> | ||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="match_parent" | |||||
android:focusable="true" | |||||
android:focusableInTouchMode="true" | |||||
android:orientation="vertical"> | |||||
<LinearLayout | |||||
android:layout_width="match_parent" | |||||
android:layout_height="wrap_content" | |||||
> | |||||
<Button | |||||
android:id="@+id/btn_syn_time" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="同步时间搓" /> | |||||
<Button | |||||
android:id="@+id/btn_free_jump" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="启动自由跳" /> | |||||
<Button | |||||
android:id="@+id/btn_time_jump" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="启动倒时跳" /> | |||||
<Button | |||||
android:id="@+id/btn_num_jump" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="启动倒数跳" /> | |||||
</LinearLayout> | |||||
<LinearLayout | |||||
android:layout_width="match_parent" | |||||
android:layout_height="wrap_content" | |||||
> | |||||
<Button | |||||
android:id="@+id/btn_stop_free_jump" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="停止自由跳" /> | |||||
<Button | |||||
android:id="@+id/btn_stop_time_jump" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="停止倒时跳" /> | |||||
<Button | |||||
android:id="@+id/btn_stop_num_jump" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="停止倒数跳" /> | |||||
<Button | |||||
android:id="@+id/btn_default_num" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="默认100个" /> | |||||
</LinearLayout> | |||||
<LinearLayout | |||||
android:layout_width="match_parent" | |||||
android:layout_height="wrap_content" | |||||
> | |||||
<Button | |||||
android:id="@+id/btn_default_timer" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="默认60秒" /> | |||||
<Button | |||||
android:id="@+id/btn_get_history" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="获取历史记录" /> | |||||
<Button | |||||
android:id="@+id/btn_clear_log" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="清空日志" /> | |||||
<Button | |||||
android:id="@+id/btn_bind" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="确认绑定" /> | |||||
</LinearLayout> | |||||
<ListView | |||||
android:id="@+id/listview" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="0dp" | |||||
android:layout_weight="2.5" | |||||
android:padding="10dp" | |||||
android:stackFromBottom="true" | |||||
android:transcriptMode="alwaysScroll"> | |||||
</ListView> | |||||
</LinearLayout> |
android:layout_height="wrap_content" | android:layout_height="wrap_content" | ||||
android:layout_weight="1" | android:layout_weight="1" | ||||
android:padding="5dp" | android:padding="5dp" | ||||
android:text="AiLink" /> | |||||
/> | |||||
<TextView | <TextView | ||||
android:layout_width="wrap_content" | android:layout_width="wrap_content" |
android:text="握手:false" | android:text="握手:false" | ||||
/> | /> | ||||
<Button | |||||
android:id="@+id/btn_start_ota" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="开始OTA" | |||||
/> | |||||
</LinearLayout> | </LinearLayout> | ||||
android:text="OTA:580" | android:text="OTA:580" | ||||
/> | /> | ||||
</LinearLayout> | |||||
<LinearLayout | |||||
android:layout_width="match_parent" | |||||
android:layout_height="wrap_content" | |||||
android:layout_marginTop="5dp" | |||||
> | |||||
<Button | |||||
android:id="@+id/btn_ota_bk" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="OTA:BK" | |||||
/> | |||||
</LinearLayout> | </LinearLayout> | ||||
</LinearLayout> | </LinearLayout> |
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||
<RelativeLayout | |||||
xmlns:android="http://schemas.android.com/apk/res/android" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="match_parent" | |||||
android:orientation="vertical"> | |||||
<Button | |||||
android:id="@+id/wifistatus" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="查看wifi状态" /> | |||||
<Button | |||||
android:id="@+id/scan_wifi" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_marginStart="12dp" | |||||
android:layout_toEndOf="@+id/wifistatus" | |||||
android:text="搜索wifi热点" /> | |||||
<Button | |||||
android:id="@+id/sn" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_below="@+id/scan_wifi" | |||||
android:layout_marginTop="8dp" | |||||
android:text="查看设备did号" /> | |||||
<EditText | |||||
android:id="@+id/select_wifi_et" | |||||
android:layout_width="90dp" | |||||
android:layout_height="wrap_content" | |||||
android:layout_marginStart="22dp" | |||||
android:layout_toEndOf="@+id/scan_wifi" | |||||
android:hint="选择wifi序号" | |||||
android:inputType="number" | |||||
android:textSize="14dp" /> | |||||
<Button | |||||
android:id="@+id/connect_wifi" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_below="@+id/select_wifi_et" | |||||
android:layout_marginStart="13dp" | |||||
android:layout_marginTop="11dp" | |||||
android:layout_toEndOf="@+id/disconnect" | |||||
android:text="发起连接" /> | |||||
<Button | |||||
android:id="@+id/disconnect" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_below="@+id/scan_wifi" | |||||
android:layout_marginStart="9dp" | |||||
android:layout_marginTop="5dp" | |||||
android:layout_toEndOf="@+id/sn" | |||||
android:text="断开连接" /> | |||||
<Button | |||||
android:id="@+id/setedmac" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_below="@+id/sn" | |||||
android:layout_marginStart="9dp" | |||||
android:layout_marginTop="5dp" | |||||
android:text="获取希望设置的MAC" /> | |||||
<Button | |||||
android:id="@+id/setedpaw" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_below="@+id/sn" | |||||
android:layout_toEndOf="@id/setedmac" | |||||
android:layout_marginStart="9dp" | |||||
android:layout_marginTop="5dp" | |||||
android:text="获取希望设置的密码" /> | |||||
<Button | |||||
android:id="@+id/setedname" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_below="@+id/setedmac" | |||||
android:layout_marginStart="9dp" | |||||
android:layout_marginTop="5dp" | |||||
android:text="获取当前连接wifi名称" /> | |||||
<Button | |||||
android:id="@+id/ota" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_below="@+id/setedmac" | |||||
android:layout_toEndOf="@+id/setedname" | |||||
android:layout_marginStart="9dp" | |||||
android:layout_marginTop="5dp" | |||||
android:text="ota" /> | |||||
<Button | |||||
android:id="@+id/surroundings" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_below="@+id/setedmac" | |||||
android:layout_toEndOf="@+id/ota" | |||||
android:layout_marginStart="9dp" | |||||
android:layout_marginTop="5dp" | |||||
android:text="切换环境" /> | |||||
<RadioGroup | |||||
android:id="@+id/unit" | |||||
android:layout_below="@+id/setedname" | |||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="match_parent" | |||||
android:orientation="vertical"> | |||||
<ScrollView | |||||
android:layout_width="match_parent" | android:layout_width="match_parent" | ||||
android:orientation="horizontal" | |||||
android:layout_height="wrap_content"> | |||||
<RadioButton | |||||
android:id="@+id/kg" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_weight="1" | |||||
android:text="kg"/> | |||||
<RadioButton | |||||
android:id="@+id/jin" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_weight="1" | |||||
android:text="斤"/> | |||||
<RadioButton | |||||
android:id="@+id/st_lb" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_weight="1" | |||||
android:text="st:lb"/> | |||||
<RadioButton | |||||
android:id="@+id/lb" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_weight="1" | |||||
android:text="lb"/> | |||||
</RadioGroup> | |||||
android:layout_height="0dp" | |||||
android:layout_weight="1.6"> | |||||
<RelativeLayout | |||||
android:layout_width="match_parent" | |||||
android:layout_height="match_parent" | |||||
android:orientation="vertical"> | |||||
<Button | |||||
android:id="@+id/wifistatus" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="查看wifi状态" /> | |||||
<Button | |||||
android:id="@+id/scan_wifi" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_marginStart="12dp" | |||||
android:layout_toEndOf="@+id/wifistatus" | |||||
android:text="搜索wifi热点" /> | |||||
<Button | |||||
android:id="@+id/sn" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_below="@+id/scan_wifi" | |||||
android:layout_marginTop="8dp" | |||||
android:text="查看设备did号" /> | |||||
<EditText | |||||
android:id="@+id/select_wifi_et" | |||||
android:layout_width="90dp" | |||||
android:layout_height="wrap_content" | |||||
android:layout_marginStart="22dp" | |||||
android:layout_toEndOf="@+id/scan_wifi" | |||||
android:hint="选择wifi序号" | |||||
android:inputType="number" | |||||
android:textSize="14dp" /> | |||||
<Button | |||||
android:id="@+id/connect_wifi" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_below="@+id/select_wifi_et" | |||||
android:layout_marginStart="13dp" | |||||
android:layout_marginTop="11dp" | |||||
android:layout_toEndOf="@+id/disconnect" | |||||
android:text="发起连接" /> | |||||
<Button | |||||
android:id="@+id/disconnect" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_below="@+id/scan_wifi" | |||||
android:layout_marginStart="9dp" | |||||
android:layout_marginTop="5dp" | |||||
android:layout_toEndOf="@+id/sn" | |||||
android:text="断开连接" /> | |||||
<Button | |||||
android:id="@+id/setedmac" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_below="@+id/sn" | |||||
android:layout_marginStart="9dp" | |||||
android:layout_marginTop="5dp" | |||||
android:text="获取希望设置的MAC" /> | |||||
<Button | |||||
android:id="@+id/setedpaw" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_below="@+id/sn" | |||||
android:layout_marginStart="9dp" | |||||
android:layout_marginTop="5dp" | |||||
android:layout_toEndOf="@id/setedmac" | |||||
android:text="获取希望设置的密码" /> | |||||
<Button | |||||
android:id="@+id/setedname" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_below="@+id/setedmac" | |||||
android:layout_marginStart="9dp" | |||||
android:layout_marginTop="5dp" | |||||
android:text="获取当前连接wifi名称" /> | |||||
<Button | |||||
android:id="@+id/ota" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_below="@+id/setedmac" | |||||
android:layout_marginStart="9dp" | |||||
android:layout_marginTop="5dp" | |||||
android:layout_toEndOf="@+id/setedname" | |||||
android:text="ota" /> | |||||
<EditText | |||||
android:id="@+id/et_ip" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="wrap_content" | |||||
android:layout_below="@id/setedname" | |||||
android:layout_marginStart="10dp" | |||||
android:layout_marginEnd="10dp" | |||||
android:inputType="text" | |||||
android:maxLines="1" | |||||
android:text="47.113.114.70" /> | |||||
<EditText | |||||
android:id="@+id/et_port" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="wrap_content" | |||||
android:layout_below="@id/et_ip" | |||||
android:layout_marginStart="10dp" | |||||
android:layout_marginEnd="10dp" | |||||
android:inputType="number" | |||||
android:maxLines="1" | |||||
android:text="8092" /> | |||||
<EditText | |||||
android:id="@+id/et_url" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="wrap_content" | |||||
android:layout_below="@id/et_port" | |||||
android:layout_marginStart="10dp" | |||||
android:layout_marginEnd="10dp" | |||||
android:inputType="text" | |||||
android:maxLines="1" | |||||
android:text="/index/" /> | |||||
<Button | |||||
android:id="@+id/surroundings" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_below="@+id/et_url" | |||||
android:layout_marginStart="9dp" | |||||
android:layout_marginTop="5dp" | |||||
android:text="切换环境" /> | |||||
<Button | |||||
android:id="@+id/check_ip" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_below="@id/et_url" | |||||
android:layout_marginStart="9dp" | |||||
android:layout_marginTop="5dp" | |||||
android:layout_toEndOf="@id/surroundings" | |||||
android:text="查看ip" /> | |||||
<Button | |||||
android:id="@+id/check_port" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_below="@id/et_url" | |||||
android:layout_marginStart="9dp" | |||||
android:layout_marginTop="5dp" | |||||
android:layout_toEndOf="@id/check_ip" | |||||
android:text="查看端口" /> | |||||
<Button | |||||
android:id="@+id/check_url" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_below="@id/et_url" | |||||
android:layout_marginStart="9dp" | |||||
android:layout_marginTop="5dp" | |||||
android:layout_toEndOf="@id/check_port" | |||||
android:text="查看url" /> | |||||
<RadioGroup | |||||
android:id="@+id/unit" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="wrap_content" | |||||
android:layout_below="@+id/check_ip" | |||||
android:orientation="horizontal"> | |||||
<RadioButton | |||||
android:id="@+id/kg" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_weight="1" | |||||
android:text="kg" /> | |||||
<RadioButton | |||||
android:id="@+id/jin" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_weight="1" | |||||
android:text="斤" /> | |||||
<RadioButton | |||||
android:id="@+id/st_lb" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_weight="1" | |||||
android:text="st:lb" /> | |||||
<RadioButton | |||||
android:id="@+id/lb" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_weight="1" | |||||
android:text="lb" /> | |||||
</RadioGroup> | |||||
</RelativeLayout> | |||||
</ScrollView> | |||||
<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="0dp" | |||||
android:layout_below="@id/unit" | |||||
android:layout_marginTop="20dp" | |||||
android:layout_weight="1"> | |||||
</ListView> | </ListView> | ||||
</RelativeLayout> | |||||
</LinearLayout> |