| @@ -7,8 +7,8 @@ android { | |||
| applicationId "aicare.net.cn.sdk.ailinksdkdemoandroid" | |||
| minSdkVersion 19 | |||
| targetSdkVersion 29 | |||
| versionCode 3 | |||
| versionName "1.5.2" | |||
| versionCode 4 | |||
| versionName "1.5.4" | |||
| testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" | |||
| } | |||
| buildTypes { | |||
| @@ -31,8 +31,9 @@ dependencies { | |||
| implementation 'androidx.appcompat:appcompat:1.1.0' | |||
| implementation 'androidx.constraintlayout:constraintlayout:1.1.3' | |||
| testImplementation 'junit:junit:4.12' | |||
| implementation 'com.github.elinkthings:AILinkSDKRepositoryAndroid:1.6.9' | |||
| implementation 'com.github.elinkthings:AILinkSDKParsingLibraryAndroid:1.5.3' | |||
| implementation 'com.github.elinkthings:AILinkSDKRepositoryAndroid:1.7.4' | |||
| implementation 'com.github.elinkthings:AILinkSDKOtaLibraryAndroid:1.0.0' | |||
| implementation 'com.github.elinkthings:AILinkSDKParsingLibraryAndroid:1.5.4' | |||
| implementation 'androidx.recyclerview:recyclerview:1.1.0' | |||
| implementation 'com.jakewharton:butterknife:10.2.0' | |||
| annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.0' | |||
| @@ -52,8 +52,8 @@ | |||
| <activity android:name=".ConnectBleTestActivity" /> | |||
| <activity android:name=".ADWeightScaleCmdActivity" /> | |||
| <activity android:name=".ADWeightScaleUserActivity" /> | |||
| <activity android:name=".WeightScaleWifiBle" /> | |||
| <activity android:name=".WeightScaleBle"/> | |||
| <activity android:name=".WeightScaleWifiBleActivity" /> | |||
| <activity android:name=".WeightScaleBleActivity"/> | |||
| <activity android:name=".WifiConfigActivity"/> | |||
| <activity android:name=".EightBodyfatActivity"/> | |||
| <activity android:name=".TestOtaActivity"/> | |||
| @@ -27,7 +27,6 @@ import java.util.ArrayList; | |||
| import java.util.List; | |||
| import java.util.UUID; | |||
| import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||
| import androidx.annotation.Nullable; | |||
| import cn.net.aicare.modulelibrary.module.BroadcastScale.BroadcastScaleBleConfig; | |||
| import cn.net.aicare.modulelibrary.module.BroadcastScale.BroadcastScaleDeviceData; | |||
| @@ -239,17 +238,17 @@ public class BroadcastScaleActivity extends BleBaseActivity implements OnCallbac | |||
| //-----------------通知------------------- | |||
| private String mOldData=""; | |||
| @Override | |||
| public void onData(byte[] hex, int type) { | |||
| public void onData(byte[] dataOriginal,byte[] hex, int type) { | |||
| String data = ""; | |||
| if (hex != null) | |||
| data = BleStrUtils.byte2HexStr(hex); | |||
| if (type == 100) { | |||
| mList.add(TimeUtils.getTime() + "send->" + data); | |||
| } else { | |||
| mList.add(TimeUtils.getTime() + "notify->" + data); | |||
| if (mOldData.equals(data)){ | |||
| return; | |||
| } | |||
| mOldData=data; | |||
| mList.add(TimeUtils.getTime() + "数据ID" + type+" ,||解密数据:"+data+" ,||原始数据:"+ BleStrUtils.byte2HexStr(dataOriginal)); | |||
| mHandler.sendEmptyMessage(REFRESH_DATA); | |||
| } | |||
| @@ -290,8 +289,6 @@ public class BroadcastScaleActivity extends BleBaseActivity implements OnCallbac | |||
| break; | |||
| } | |||
| String statusStr = "状态="; | |||
| switch (status) { | |||
| case BroadcastScaleBleConfig.GET_WEIGHT_TESTING: | |||
| @@ -301,7 +298,7 @@ public class BroadcastScaleActivity extends BleBaseActivity implements OnCallbac | |||
| statusStr += "测阻抗中"; | |||
| break; | |||
| case BroadcastScaleBleConfig.GET_IMPEDANCE_SUCCESS: | |||
| statusStr += "测阻抗成功"; | |||
| statusStr+= "测阻抗成功"; | |||
| break; | |||
| case BroadcastScaleBleConfig.GET_IMPEDANCE_FAIL: | |||
| statusStr += "测阻抗失败"; | |||
| @@ -309,11 +306,12 @@ public class BroadcastScaleActivity extends BleBaseActivity implements OnCallbac | |||
| case BroadcastScaleBleConfig.GET_TEST_FINISH: | |||
| statusStr += "测量完成"; | |||
| break; | |||
| default: | |||
| statusStr+=Integer.toHexString(status); | |||
| break; | |||
| } | |||
| String weightStr = BleDensityUtil.getInstance().holdDecimals(weight, 1); | |||
| String weightStr = BleDensityUtil.getInstance().holdDecimals(weight, weightDecimal); | |||
| if (weightNegative == 1) { | |||
| weightStr = "-" + weightStr; | |||
| } | |||
| @@ -325,21 +323,28 @@ public class BroadcastScaleActivity extends BleBaseActivity implements OnCallbac | |||
| showData += "\n实时体重=" + weightStr + ";小数位=" + weightDecimal + ";单位=" + weightUnit + ";" + weightUnitStr; | |||
| } | |||
| showData += "\n阻抗=" + adc; | |||
| if (tempNegative == 1) { | |||
| showData += "\n温度=" + (-temp / 10F) + tempUnitStr; | |||
| if (temp == 65535) { | |||
| //不支持温度 | |||
| showData += "\n温度=暂不支持"; | |||
| } else { | |||
| showData += "\n温度=" + (temp / 10F) + tempUnitStr; | |||
| if (tempNegative == 1) { | |||
| showData += "\n温度=" + (-temp / 10F) + tempUnitStr; | |||
| } else { | |||
| showData += "\n温度=" + (temp / 10F) + tempUnitStr; | |||
| } | |||
| if (mTemp != temp) { | |||
| mTemp = temp; | |||
| tv_broadcast_temp.setText((mTemp / 10F) + tempUnitStr); | |||
| } | |||
| } | |||
| showData += "\n算法ID=" + algorithmId; | |||
| if (mWeightUnit != weightUnit) { | |||
| mWeightUnit = weightUnit; | |||
| showWeightUnit(mWeightUnit); | |||
| } | |||
| if (mTemp != temp) { | |||
| mTemp = temp; | |||
| tv_broadcast_temp.setText((mTemp / 10F) + tempUnitStr); | |||
| } | |||
| mList.add(showData); | |||
| mHandler.sendEmptyMessage(REFRESH_DATA); | |||
| @@ -348,8 +353,9 @@ public class BroadcastScaleActivity extends BleBaseActivity implements OnCallbac | |||
| @Override | |||
| public void OnDID(int cid, int vid, int pid) { | |||
| String didStr = "cid:" + cid + "||vid:" + vid + "||pid:" + pid; | |||
| mList.add(TimeUtils.getTime() + "ID:" + didStr); | |||
| mHandler.sendEmptyMessage(REFRESH_DATA); | |||
| // if (tv_broadcast_did!=null){ | |||
| // tv_broadcast_did.setText(didStr); | |||
| // } | |||
| } | |||
| @@ -367,11 +373,12 @@ public class BroadcastScaleActivity extends BleBaseActivity implements OnCallbac | |||
| @Override | |||
| public void onScanRecord(BleValueBean bleValueBean) { | |||
| if (TextUtils.isEmpty(mAddress)&&bleValueBean.isBroadcastModule()) { | |||
| if (TextUtils.isEmpty(mAddress) && bleValueBean.isBroadcastModule()) { | |||
| mAddress = bleValueBean.getMac(); | |||
| if (tv_broadcast_mac != null) { | |||
| tv_broadcast_mac.setText(mAddress); | |||
| } | |||
| } | |||
| //地址相同,并且是广播秤 | |||
| if (mAddress.equalsIgnoreCase(bleValueBean.getMac()) && bleValueBean.isBroadcastModule()) { | |||
| @@ -292,13 +292,13 @@ public class ShowBleActivity extends AppCompatActivity implements OnCallbackBle, | |||
| intent.setClass(ShowBleActivity.this, aicare.net.cn.sdk.ailinksdkdemoandroid.HeightCmdActivity.class); | |||
| break; | |||
| case BleDeviceConfig.WEIGHT_BODY_FAT_SCALE: | |||
| intent.setClass(ShowBleActivity.this, aicare.net.cn.sdk.ailinksdkdemoandroid.WeightScaleBle.class); | |||
| intent.setClass(ShowBleActivity.this, WeightScaleBleActivity.class); | |||
| break; | |||
| case BleDeviceConfig.WEIGHT_BODY_FAT_SCALE_AD: | |||
| intent.setClass(ShowBleActivity.this, aicare.net.cn.sdk.ailinksdkdemoandroid.ADWeightScaleCmdActivity.class); | |||
| break; | |||
| case BleDeviceConfig.WEIGHT_BODY_FAT_SCALE_WIFI_BLE: | |||
| intent.setClass(ShowBleActivity.this, aicare.net.cn.sdk.ailinksdkdemoandroid.WeightScaleWifiBle.class); | |||
| intent.setClass(ShowBleActivity.this, WeightScaleWifiBleActivity.class); | |||
| break; | |||
| case BleDeviceConfig.TOOTHBRUSH_WIFI_BLE: | |||
| intent.setClass(ShowBleActivity.this, aicare.net.cn.sdk.ailinksdkdemoandroid.ToothBrushWifiBleActivity.class); | |||
| @@ -20,13 +20,13 @@ import com.pingwang.bluetoothlib.listener.OnBleDeviceDataListener; | |||
| import com.pingwang.bluetoothlib.listener.OnCallbackDis; | |||
| import com.pingwang.bluetoothlib.utils.BleLog; | |||
| import com.pingwang.bluetoothlib.utils.BleStrUtils; | |||
| import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||
| import java.util.ArrayList; | |||
| import java.util.List; | |||
| import java.util.Locale; | |||
| import java.util.UUID; | |||
| import aicare.net.cn.sdk.ailinksdkdemoandroid.utils.TimeUtils; | |||
| import androidx.annotation.NonNull; | |||
| import androidx.annotation.Nullable; | |||
| @@ -172,7 +172,7 @@ public class TestCmdActivity extends BleBaseActivity implements OnCallbackDis, O | |||
| UUID UUID_NOTIFY = UUID.fromString(notify); | |||
| if (bleDevice != null && sendUuidServer != null) { | |||
| // bleDevice.setNotify(notifyOpen); | |||
| bleDevice.setOpenNotify(UUID_NOTIFY,sendUuidServer); | |||
| bleDevice.setNotify(sendUuidServer,UUID_NOTIFY); | |||
| } | |||
| } | |||
| @@ -20,10 +20,11 @@ import android.widget.ListView; | |||
| import android.widget.TextView; | |||
| import android.widget.Toast; | |||
| import com.elinkthings.bleotalibrary.dialog.DialogOtaManager; | |||
| import com.elinkthings.bleotalibrary.listener.OnBleOTAListener; | |||
| import com.pingwang.bluetoothlib.BleBaseActivity; | |||
| import com.pingwang.bluetoothlib.device.BleDevice; | |||
| import com.pingwang.bluetoothlib.listener.OnBleDeviceDataListener; | |||
| import com.pingwang.bluetoothlib.listener.OnBleOTAListener; | |||
| import com.pingwang.bluetoothlib.listener.OnCallbackBle; | |||
| import com.pingwang.bluetoothlib.utils.BleLog; | |||
| @@ -163,8 +164,8 @@ public class TestOtaActivity extends BleBaseActivity implements OnCallbackBle, | |||
| String byFileName = FileUtils.getByFileName()+mOTAFileName; | |||
| mList.add(TimeUtils.getTime() + "OTA已开始,请耐心等待"); | |||
| mHandler.sendEmptyMessage(REFRESH_DATA); | |||
| mBleDevice.setOnDialogOTAListener(this); | |||
| mBleDevice.startDialogOta(byFileName); | |||
| DialogOtaManager build = DialogOtaManager.newBuilder().setOnBleOTAListener(this).setFilePath(byFileName).build(mBleDevice); | |||
| build.startOta(); | |||
| break; | |||
| @@ -256,9 +257,7 @@ public class TestOtaActivity extends BleBaseActivity implements OnCallbackBle, | |||
| if (mBluetoothService != null) { | |||
| mBleDevice = mBluetoothService.getBleDevice(mAddress); | |||
| mBluetoothService.setOnCallback(this); | |||
| if (mBleDevice != null) { | |||
| mBleDevice.setOnDialogOTAListener(this); | |||
| } | |||
| } | |||
| } | |||
| @@ -347,8 +346,9 @@ public class TestOtaActivity extends BleBaseActivity implements OnCallbackBle, | |||
| private int progressOld; | |||
| @Override | |||
| public void onOtaProgress(float progress) { | |||
| public void onOtaProgress(float progress, int currentCount, int maxCount) { | |||
| int progressInt = (int) progress; | |||
| if (progressOld != progressInt) { | |||
| progressOld = progressInt; | |||
| @@ -1,5 +1,6 @@ | |||
| package aicare.net.cn.sdk.ailinksdkdemoandroid; | |||
| import android.content.pm.ActivityInfo; | |||
| import android.os.Bundle; | |||
| import android.os.Handler; | |||
| import android.os.Message; | |||
| @@ -41,6 +42,7 @@ public class ToothBrushWifiBleActivity extends BleBaseActivity implements View.O | |||
| @Override | |||
| protected void onCreate(@Nullable Bundle savedInstanceState) { | |||
| super.onCreate(savedInstanceState); | |||
| setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//禁止横屏 | |||
| setContentView(R.layout.activity_tooth_brush_wifi_ble); | |||
| findViewById(R.id.wifistatus).setOnClickListener(this); | |||
| findViewById(R.id.sn).setOnClickListener(this); | |||
| @@ -52,6 +54,7 @@ public class ToothBrushWifiBleActivity extends BleBaseActivity implements View.O | |||
| findViewById(R.id.default_try_out).setOnClickListener(this); | |||
| findViewById(R.id.default_time_mode).setOnClickListener(this); | |||
| findViewById(R.id.default_mode).setOnClickListener(this); | |||
| // findViewById(R.id.ota).setOnClickListener(this); | |||
| mEditText = findViewById(R.id.select_wifi_et); | |||
| select_gears_et = findViewById(R.id.select_gears_et); | |||
| @@ -250,7 +253,7 @@ public class ToothBrushWifiBleActivity extends BleBaseActivity implements View.O | |||
| mToothBrushWiFiBleUtilsData.queryBleStatus(); | |||
| break; | |||
| case R.id.sn: | |||
| mToothBrushWiFiBleUtilsData.getDeviceId(); | |||
| mToothBrushWiFiBleUtilsData.getDevicedid(); | |||
| break; | |||
| case R.id.scan_wifi: | |||
| mToothBrushWiFiBleUtilsData.scanWifi(); | |||
| @@ -270,7 +273,7 @@ public class ToothBrushWifiBleActivity extends BleBaseActivity implements View.O | |||
| if (data.equals("") || data.length() > 8) { | |||
| dataPaw = data.trim(); | |||
| mToothBrushWiFiBleUtilsData.setWifiMac(wifimacMap.get(selectWifi)); | |||
| mToothBrushWiFiBleUtilsData.setWifimac(wifimacMap.get(selectWifi)); | |||
| } else { | |||
| Toast.makeText(ToothBrushWifiBleActivity.this, "密码格式不对", Toast.LENGTH_SHORT).show(); | |||
| } | |||
| @@ -333,7 +336,7 @@ public class ToothBrushWifiBleActivity extends BleBaseActivity implements View.O | |||
| } | |||
| if (gears != null) { | |||
| try { | |||
| mToothBrushWiFiBleUtilsData.setTryOut(Integer.parseInt(gears[1]), Integer.parseInt(gears[2]),0,0); | |||
| mToothBrushWiFiBleUtilsData.setTryOut(Integer.parseInt(gears[1]), Integer.parseInt(gears[2]), 0, 0); | |||
| } catch (NumberFormatException e) { | |||
| e.printStackTrace(); | |||
| Toast.makeText(this, "请输入时长,档位,档位级别(数字加符号)", Toast.LENGTH_SHORT).show(); | |||
| @@ -345,9 +348,15 @@ public class ToothBrushWifiBleActivity extends BleBaseActivity implements View.O | |||
| break; | |||
| case R.id.default_time_mode: | |||
| mToothBrushWiFiBleUtilsData.getDefaultGearAndDuration(); | |||
| mToothBrushWiFiBleUtilsData.getdefaultGearAndDuration(); | |||
| break; | |||
| } | |||
| // case R.id.ota: | |||
| // | |||
| // mToothBrushWiFiBleUtilsData.setOta(); | |||
| // | |||
| // break; | |||
| } | |||
| } | |||
| @@ -440,6 +449,28 @@ public class ToothBrushWifiBleActivity extends BleBaseActivity implements View.O | |||
| mMHandler.sendEmptyMessage(ToRefreUi); | |||
| } | |||
| @Override | |||
| public void onOTA(int status) { | |||
| String s = " "; | |||
| switch (status) { | |||
| case 0x00: | |||
| s = "wifiOTA 成功"; | |||
| break; | |||
| case 0x01: | |||
| s = "wifiOTA 失败"; | |||
| break; | |||
| case 0x02: | |||
| s = "不支持 wifiOTA"; | |||
| break; | |||
| case 0x03: | |||
| s = "模块主动开始 wifiOTA(MCU 收到该指 令后不能断电,需要等待 OTA 成功或者失败)"; | |||
| break; | |||
| } | |||
| mList.add(0, s); | |||
| mMHandler.sendEmptyMessage(ToRefreUi); | |||
| } | |||
| @Override | |||
| public void onShowData(String data) { | |||
| @@ -1,6 +1,7 @@ | |||
| package aicare.net.cn.sdk.ailinksdkdemoandroid; | |||
| import android.content.pm.ActivityInfo; | |||
| import android.os.Bundle; | |||
| import android.os.Handler; | |||
| import android.os.Message; | |||
| @@ -19,12 +20,12 @@ import com.pingwang.bluetoothlib.device.BleDevice; | |||
| import com.pingwang.bluetoothlib.device.SendBleBean; | |||
| import com.pingwang.bluetoothlib.listener.OnCallbackBle; | |||
| import com.pingwang.bluetoothlib.utils.BleStrUtils; | |||
| import aicare.net.cn.sdk.ailinksdkdemoandroid.config.BleDeviceConfig; | |||
| import java.lang.ref.WeakReference; | |||
| import java.util.ArrayList; | |||
| import java.util.List; | |||
| import aicare.net.cn.sdk.ailinksdkdemoandroid.config.BleDeviceConfig; | |||
| import androidx.annotation.Nullable; | |||
| import cn.net.aicare.modulelibrary.module.BodyFatScale.AppHistoryRecordBean; | |||
| import cn.net.aicare.modulelibrary.module.BodyFatScale.BodyFatBleUtilsData; | |||
| @@ -33,8 +34,8 @@ import cn.net.aicare.modulelibrary.module.BodyFatScale.BodyFatRecord; | |||
| import cn.net.aicare.modulelibrary.module.BodyFatScale.McuHistoryRecordBean; | |||
| import cn.net.aicare.modulelibrary.module.BodyFatScale.User; | |||
| public class WeightScaleBle extends BleBaseActivity implements View.OnClickListener, OnCallbackBle, BodyFatBleUtilsData.BleBodyFatCallback { | |||
| private String TAG = WeightScaleBle.class.getName(); | |||
| public class WeightScaleBleActivity extends BleBaseActivity implements View.OnClickListener, OnCallbackBle, BodyFatBleUtilsData.BleBodyFatCallback { | |||
| private String TAG = WeightScaleBleActivity.class.getName(); | |||
| private String mAddress; | |||
| private List<String> mlogList; | |||
| private List<String> mUserlogList; | |||
| @@ -53,6 +54,7 @@ public class WeightScaleBle extends BleBaseActivity implements View.OnClickListe | |||
| @Override | |||
| protected void onCreate(@Nullable Bundle savedInstanceState) { | |||
| super.onCreate(savedInstanceState); | |||
| setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//禁止横屏 | |||
| setContentView(R.layout.activity_weight_scale_ble); | |||
| initView(); | |||
| setUnitinit(); | |||
| @@ -314,7 +316,7 @@ public class WeightScaleBle extends BleBaseActivity implements View.OnClickListe | |||
| @Override | |||
| public void onError(int code) { | |||
| mlogList.add(0, "历史记录Mcu:" + code); | |||
| mlogList.add(0, "错误码:" + code); | |||
| mMHandler.sendEmptyMessage(ToRefreUi); | |||
| } | |||
| @@ -430,6 +432,21 @@ public class WeightScaleBle extends BleBaseActivity implements View.OnClickListe | |||
| mMHandler.sendEmptyMessage(ToRefreUi); | |||
| } | |||
| @Override | |||
| public void onOtaCallback(int status) { | |||
| } | |||
| @Override | |||
| public void onSetIpStatus(int status) { | |||
| } | |||
| @Override | |||
| public void onSetIpUrlStatus(int status) { | |||
| } | |||
| @Override | |||
| public void onClick(View v) { | |||
| @@ -1,6 +1,9 @@ | |||
| package aicare.net.cn.sdk.ailinksdkdemoandroid; | |||
| import android.content.Intent; | |||
| import android.content.pm.ActivityInfo; | |||
| import android.net.Uri; | |||
| import android.os.Bundle; | |||
| import android.os.Handler; | |||
| import android.os.Message; | |||
| @@ -12,6 +15,7 @@ import android.widget.ListView; | |||
| import android.widget.RadioButton; | |||
| import android.widget.Toast; | |||
| import com.elinkthings.bleotalibrary.listener.OnBleOTAListener; | |||
| import com.pingwang.bluetoothlib.BleBaseActivity; | |||
| import com.pingwang.bluetoothlib.bean.BleValueBean; | |||
| import com.pingwang.bluetoothlib.config.CmdConfig; | |||
| @@ -19,7 +23,6 @@ import com.pingwang.bluetoothlib.device.BleDevice; | |||
| import com.pingwang.bluetoothlib.listener.OnCallbackBle; | |||
| import com.pingwang.bluetoothlib.utils.BleLog; | |||
| import com.pingwang.bluetoothlib.utils.BleStrUtils; | |||
| import aicare.net.cn.sdk.ailinksdkdemoandroid.config.BleDeviceConfig; | |||
| import java.lang.ref.WeakReference; | |||
| import java.util.ArrayList; | |||
| @@ -27,6 +30,7 @@ import java.util.Arrays; | |||
| import java.util.HashMap; | |||
| import java.util.List; | |||
| import aicare.net.cn.sdk.ailinksdkdemoandroid.config.BleDeviceConfig; | |||
| import androidx.annotation.Nullable; | |||
| import cn.net.aicare.modulelibrary.module.BodyFatScale.AppHistoryRecordBean; | |||
| import cn.net.aicare.modulelibrary.module.BodyFatScale.BodyFatBleUtilsData; | |||
| @@ -34,8 +38,8 @@ import cn.net.aicare.modulelibrary.module.BodyFatScale.BodyFatDataUtil; | |||
| import cn.net.aicare.modulelibrary.module.BodyFatScale.BodyFatRecord; | |||
| import cn.net.aicare.modulelibrary.module.BodyFatScale.McuHistoryRecordBean; | |||
| public class WeightScaleWifiBle extends BleBaseActivity implements View.OnClickListener, OnCallbackBle, BodyFatBleUtilsData.BleBodyFatCallback, BodyFatBleUtilsData.BleBodyFatWiFiCallback { | |||
| private String TAG = WeightScaleWifiBle.class.getName(); | |||
| public class WeightScaleWifiBleActivity extends BleBaseActivity implements View.OnClickListener, OnCallbackBle, BodyFatBleUtilsData.BleBodyFatCallback, BodyFatBleUtilsData.BleBodyFatWiFiCallback { | |||
| private String TAG = WeightScaleWifiBleActivity.class.getName(); | |||
| private String mAddress; | |||
| private List<String> mList; | |||
| private ArrayAdapter listAdapter; | |||
| @@ -44,10 +48,34 @@ public class WeightScaleWifiBle extends BleBaseActivity implements View.OnClickL | |||
| private MHandler mMHandler; | |||
| private EditText mEditText; | |||
| 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 boolean isTest = false; | |||
| @Override | |||
| protected void onCreate(@Nullable Bundle savedInstanceState) { | |||
| super.onCreate(savedInstanceState); | |||
| setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//禁止横屏 | |||
| setContentView(R.layout.activity_weight_scale_wifi_ble); | |||
| findViewById(R.id.wifistatus).setOnClickListener(this); | |||
| findViewById(R.id.sn).setOnClickListener(this); | |||
| @@ -57,6 +85,8 @@ public class WeightScaleWifiBle extends BleBaseActivity implements View.OnClickL | |||
| findViewById(R.id.setedname).setOnClickListener(this); | |||
| findViewById(R.id.setedpaw).setOnClickListener(this); | |||
| findViewById(R.id.setedmac).setOnClickListener(this); | |||
| // findViewById(R.id.ota).setOnClickListener(this); | |||
| // findViewById(R.id.surroundings).setOnClickListener(this); | |||
| mEditText = findViewById(R.id.select_wifi_et); | |||
| kg = findViewById(R.id.kg); | |||
| jing = findViewById(R.id.jin); | |||
| @@ -219,6 +249,26 @@ public class WeightScaleWifiBle extends BleBaseActivity implements View.OnClickL | |||
| mMHandler.sendEmptyMessage(ToRefreUi); | |||
| } | |||
| @Override | |||
| public void onOtaCallback(int status) { | |||
| switch (status) { | |||
| case 0x00: | |||
| mList.add(0, "ota状态:" + status + " wifiOTA成功"); | |||
| break; | |||
| case 0x01: | |||
| mList.add(0, "ota状态:" + status + " wifiOTA失败"); | |||
| break; | |||
| case 0x02: | |||
| mList.add(0, "ota状态:" + status + " 不支持wifiOTA"); | |||
| break; | |||
| case 0x03: | |||
| mList.add(0, "ota状态:" + status + " 模块主动开始wifiOTA(MCU收到该指令后不能断电,需要等待OTA成功或者失败)"); | |||
| break; | |||
| } | |||
| mMHandler.sendEmptyMessage(ToRefreUi); | |||
| } | |||
| @Override | |||
| public void onAdc(int adc, int algorithmic) { | |||
| mList.add(0, "阻抗:" + adc + " 算法位:" + algorithmic); | |||
| @@ -278,12 +328,12 @@ public class WeightScaleWifiBle extends BleBaseActivity implements View.OnClickL | |||
| @Override | |||
| public void requestSynTime() { | |||
| mList.add(0,"同步时间"); | |||
| mList.add(0, "同步时间"); | |||
| bodyFatBleUtilsData.sendData(BodyFatDataUtil.getInstance().synTime()); | |||
| } | |||
| @Override | |||
| public void setTimeCallback(int type,int status) { | |||
| public void setTimeCallback(int type, int status) { | |||
| String msg = ""; | |||
| if (type == CmdConfig.SET_SYS_TIME) { | |||
| msg = "设置系统当前时间:"; | |||
| @@ -401,18 +451,16 @@ public class WeightScaleWifiBle extends BleBaseActivity implements View.OnClickL | |||
| private boolean issetMac = false; | |||
| /** | |||
| * | |||
| * @param type | |||
| * @param status {@link BodyFatDataUtil#STATUS_SUCCESS} | |||
| * | |||
| */ | |||
| @Override | |||
| public void OnSetWifiNameOrPwdOrConnectCallback(int type, int status) { | |||
| if (type == BodyFatDataUtil.SET_WIFI_MAC) { | |||
| mList.add(0, "获取到设置的mac地址状态 " + status); | |||
| if (status == BodyFatDataUtil.STATUS_SUCCESS){ | |||
| if (status == BodyFatDataUtil.STATUS_SUCCESS) { | |||
| issetMac = true; | |||
| }else { | |||
| } else { | |||
| } | |||
| @@ -450,6 +498,41 @@ public class WeightScaleWifiBle extends BleBaseActivity implements View.OnClickL | |||
| mMHandler.sendEmptyMessage(ToRefreUi); | |||
| } | |||
| @Override | |||
| 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(); | |||
| } | |||
| @Override | |||
| 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(); | |||
| } | |||
| @Override | |||
| public void onClick(View v) { | |||
| int id = v.getId(); | |||
| @@ -479,7 +562,7 @@ public class WeightScaleWifiBle extends BleBaseActivity implements View.OnClickL | |||
| if (data.equals("") || data.length() > 8) { | |||
| setPaw(data); | |||
| } else { | |||
| Toast.makeText(WeightScaleWifiBle.this, "密码格式不对", Toast.LENGTH_SHORT).show(); | |||
| Toast.makeText(WeightScaleWifiBleActivity.this, "密码格式不对", Toast.LENGTH_SHORT).show(); | |||
| } | |||
| } | |||
| @@ -507,8 +590,80 @@ public class WeightScaleWifiBle extends BleBaseActivity implements View.OnClickL | |||
| case R.id.disconnect: | |||
| bodyFatBleUtilsData.sendData(BodyFatDataUtil.getInstance().disconnectWifi()); | |||
| break; | |||
| // case R.id.ota: | |||
| //// bodyFatBleUtilsData.sendData(BodyFatDataUtil.getInstance().ota()); | |||
| //// OtaUtil otaUtil=new OtaUtil(this,mBluetoothService.getBleDevice(mAddress)); | |||
| // showFileChooser(); | |||
| // break; | |||
| // case R.id.surroundings: | |||
| // if (isTest) { | |||
| // setIp(productIp); | |||
| // mList.add(0, "设置环境IP为生产环境"); | |||
| // | |||
| // } else { | |||
| // setIp(testIp); | |||
| // mList.add(0, "设置环境IP为测试环境"); | |||
| // | |||
| // | |||
| // } | |||
| // listAdapter.notifyDataSetChanged(); | |||
| // | |||
| // break; | |||
| } | |||
| } | |||
| private void setIp(byte[] ips) { | |||
| if (ips.length <= 14) | |||
| bodyFatBleUtilsData.sendData(BodyFatDataUtil.getInstance().environmentIp(0, ips)); | |||
| else { | |||
| boolean isend = false; | |||
| int i = 0; | |||
| byte[] byte1 = ips; | |||
| while (!isend) { | |||
| if (byte1.length > 14) { | |||
| byte[] bytes = new byte[14]; | |||
| System.arraycopy(ips, i, bytes, 0, bytes.length); | |||
| bodyFatBleUtilsData.sendData(BodyFatDataUtil.getInstance().environmentIp(1, bytes)); | |||
| i = i + 14; | |||
| byte1 = Arrays.copyOf(ips, ips.length - i); | |||
| } else { | |||
| isend = true; | |||
| byte[] bytes = new byte[ips.length - i]; | |||
| System.arraycopy(ips, i, bytes, 0, bytes.length); | |||
| bodyFatBleUtilsData.sendData(BodyFatDataUtil.getInstance().environmentIp(0, bytes)); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| private void setIpUrl(byte[] setIpUrl) { | |||
| if (setIpUrl.length <= 14) | |||
| bodyFatBleUtilsData.sendData(BodyFatDataUtil.getInstance().environmentUrl(0, setIpUrl)); | |||
| else { | |||
| boolean isend = false; | |||
| int i = 0; | |||
| byte[] byte1 = setIpUrl; | |||
| while (!isend) { | |||
| if (byte1.length > 14) { | |||
| byte[] bytes = new byte[14]; | |||
| System.arraycopy(setIpUrl, i, bytes, 0, bytes.length); | |||
| bodyFatBleUtilsData.sendData(BodyFatDataUtil.getInstance().environmentUrl(1, bytes)); | |||
| i = i + 14; | |||
| byte1 = Arrays.copyOf(setIpUrl, setIpUrl.length - i); | |||
| } else { | |||
| isend = true; | |||
| byte[] bytes = new byte[setIpUrl.length - i]; | |||
| System.arraycopy(setIpUrl, i, bytes, 0, bytes.length); | |||
| bodyFatBleUtilsData.sendData(BodyFatDataUtil.getInstance().environmentUrl(0, bytes)); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -579,5 +734,49 @@ public class WeightScaleWifiBle extends BleBaseActivity implements View.OnClickL | |||
| } | |||
| } | |||
| @Override | |||
| protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { | |||
| super.onActivityResult(requestCode, resultCode, data); | |||
| if (resultCode == RESULT_OK) { | |||
| Uri uri = data.getData(); | |||
| String path = uri.getPath(); | |||
| mList.add(0, "ota准备就绪,请勿操作"); | |||
| listAdapter.notifyDataSetChanged(); | |||
| bodyFatBleUtilsData.initOtaUtil(this, uri, new OnBleOTAListener() { | |||
| @Override | |||
| public void onOtaSuccess() { | |||
| mList.add(0, "ota成功"); | |||
| listAdapter.notifyDataSetChanged(); | |||
| } | |||
| @Override | |||
| public void onOtaFailure(int cmd, String err) { | |||
| mList.add(0, "失败"); | |||
| listAdapter.notifyDataSetChanged(); | |||
| } | |||
| @Override | |||
| public void onOtaProgress(float progress, int currentCount, int maxCount) { | |||
| mList.add(0, "otaProgress:"+progress); | |||
| listAdapter.notifyDataSetChanged(); | |||
| } | |||
| }); | |||
| } else { | |||
| } | |||
| } | |||
| private static final int FILE_SELECT_CODE = 0x1002; | |||
| private void showFileChooser() { | |||
| Intent intent = new Intent(Intent.ACTION_GET_CONTENT); | |||
| intent.setType("*/*"); | |||
| intent.addCategory(Intent.CATEGORY_OPENABLE); | |||
| try { | |||
| startActivityForResult(Intent.createChooser(intent, "Select a File to Upload"), FILE_SELECT_CODE); | |||
| } catch (android.content.ActivityNotFoundException ex) { | |||
| Toast.makeText(this, "Please install a File Manager.", Toast.LENGTH_SHORT).show(); | |||
| } | |||
| } | |||
| } | |||
| @@ -122,6 +122,62 @@ public class BleDeviceConfig { | |||
| public final static int SMART_MASK =0x0022; | |||
| /** | |||
| * 百丽达 | |||
| */ | |||
| public final static int BLD_WEIGHT =10086; | |||
| /** | |||
| * 蓝牙血氧仪 | |||
| */ | |||
| public final static int BLE_BOOLD_OXYGEN =0x21; | |||
| /** | |||
| * 咖啡秤 | |||
| */ | |||
| public final static int COFFEE_SCALE = 0x24; | |||
| /** | |||
| * 电滑板车 | |||
| */ | |||
| public final static int SMART_SCOOTER =0x0025; | |||
| /** | |||
| * 共享充电器 | |||
| */ | |||
| public final static int SHARE_CHARGER = 0x1003; | |||
| /** | |||
| * 共享充电器 | |||
| */ | |||
| public final static int SHARE_SOCKET = 0x1005; | |||
| /** | |||
| * 共享套套机 | |||
| */ | |||
| public final static int SHARE_CONDOM = 0x1007; | |||
| /** | |||
| * 身高体脂秤 | |||
| */ | |||
| public final static int HEIGHT_BODY_FAT = 0x0026; | |||
| /** | |||
| * 寻物器,暂定,待修改 | |||
| */ | |||
| public final static int FIND_DEVICE = -5; | |||
| /** | |||
| * 食品温度计 | |||
| */ | |||
| public final static int FOOD_TEMP = 0x002b; | |||
| public final static int TEMP_Humidity = 0x002e; | |||
| /** | |||
| * 验证不握手不加密的id | |||
| */ | |||
| public final static int CLEAR_SHAKE_HANDS = -6; | |||
| } | |||