@@ -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; | |||
} |