Преглед на файлове

1,更新SDK版本

master
陈福行 преди 3 години
родител
ревизия
fee0fdc61c

+ 3
- 3
app/build.gradle Целия файл

@@ -7,8 +7,8 @@ android {
applicationId "aicare.net.cn.sdk.ailinksdkdemoandroid"
minSdkVersion 19
targetSdkVersion 29
versionCode 7
versionName "1.5.7"
versionCode 10
versionName "1.9.2"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
@@ -35,7 +35,7 @@ dependencies {
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.12'
implementation 'com.github.elinkthings:AILinkSDKRepositoryAndroid:1.8.7'//蓝牙核心库
implementation 'com.github.elinkthings:AILinkSDKRepositoryAndroid:1.9.2'//蓝牙核心库
implementation 'com.github.elinkthings:AILinkSDKOtaLibraryAndroid:1.0.3'//OTA库,需要依赖核心库
implementation 'com.github.elinkthings:AILinkSDKParsingLibraryAndroid:1.6.2'//蓝牙解析库
implementation 'androidx.recyclerview:recyclerview:1.1.0'

+ 0
- 1
app/src/main/AndroidManifest.xml Целия файл

@@ -80,7 +80,6 @@
<activity android:name=".modules.broadcast_height.BroadcastHeightActivity" />
<activity android:name=".modules.blood_glucose.BloodGlucoseActivity" />
<activity android:name=".modules.blood_glucose.BloodGlucoseTestActivity" />
<activity android:name=".modules.ble_nutrition.BleNutritionActivity" />
<activity android:name=".BLDWeightScaleBleActivity" />

<service android:name="com.pingwang.bluetoothlib.server.ELinkBleServer"/>

+ 1
- 2
app/src/main/java/aicare/net/cn/sdk/ailinksdkdemoandroid/ShowBleActivity.java Целия файл

@@ -43,7 +43,6 @@ import java.util.UUID;
import aicare.net.cn.sdk.ailinksdkdemoandroid.config.BleDeviceConfig;
import aicare.net.cn.sdk.ailinksdkdemoandroid.dialog.LoadingIosDialogFragment;
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.coffee_scale.CoffeeScaleActivity;
import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.food_temp.FoodTempActivity;
import aicare.net.cn.sdk.ailinksdkdemoandroid.modules.share_charger.ShareChargerActivity;
@@ -423,7 +422,7 @@ public class ShowBleActivity extends AppCompatActivity implements OnCallbackBle,
break;
case BleDeviceConfig.BLE_NUTRITION_SCALE:
// 蓝牙营养秤
intent.setClass(ShowBleActivity.this, BleNutritionActivity.class);
// intent.setClass(ShowBleActivity.this, BleNutritionActivity.class);
break;
// case BleDeviceConfig.BLD_WEIGHT:
// intent.setClass(ShowBleActivity.this, BLDWeightScaleBle.class);

+ 0
- 329
app/src/main/java/aicare/net/cn/sdk/ailinksdkdemoandroid/modules/ble_nutrition/BleNutritionActivity.java Целия файл

@@ -1,329 +0,0 @@
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;
}
}

Loading…
Отказ
Запис