-[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":914,"versionName":"2108141935","enabled":true,"outputFile":"ICSer_V914_2108141935_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V914_2108141935_release.apk","properties":{}}]
\ No newline at end of file
+[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":915,"versionName":"2108171414","enabled":true,"outputFile":"ICSer_V915_2108171414_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V915_2108171414_release.apk","properties":{}}]
\ No newline at end of file
new Thread(() -> {
try {
if (heartRateSensorService != null) {
- //判断类型,如果不是GH301的硬件,直接走全部测试
- String isGh301 = Util.getSystemProperties("persist.sys.is_gh301", "false");
+ //判断类型,如果不是GH3011的硬件,直接走全部测试
+ String isGh301 = Util.getSystemProperties("persist.sys.is_gh3011", "false");
+ ICLogger.d("isGh301 ===> " + isGh301);
String customname = Util.getSystemProperties("persist.sys.customname");
- ICLogger.i("customname = "+customname);
+ ICLogger.i("customname = " + customname);
if (!Boolean.parseBoolean(isGh301) || customname.equals("AA")) {
heartRateSensorService.getHeartRateInfo(from, HeartRateManager.class.getName());
} else {
} else if (Config.testType == HeartRateOxygenTestType.JUST_OXYGEN) {
//测量血氧
heartRateSensorService.getJustOxygenInfo(from, HeartRateManager.class.getName());
+ } else if (Config.testType == HeartRateOxygenTestType.ALL) {
+ heartRateSensorService.getHeartRateInfo(from, HeartRateManager.class.getName());
}
}
}
public static void checkAndSendBatteryEvent(Context context, Runtime runtime) {
//add by TrillGates======start
- //保存一份到警告信息中
- ContentValues warningMsgValues = new ContentValues();
- //设置数据
- warningMsgValues.put(ICDatabaseHelper.warning_msg_type, Constants.WARNING_MSG_TYPE_POWER_LOW);
- warningMsgValues.put(ICDatabaseHelper.warning_msg_title, runtime.getContextProxy().context.getString(R.string.low_power_warning_text));
- warningMsgValues.put(ICDatabaseHelper.warning_msg_has_read, 1);
- warningMsgValues.put(ICDatabaseHelper.warning_msg_create_time, System.currentTimeMillis());
- runtime.getContextProxy().getResolver().insert(Uri.parse(WarningItemProvider.WARNING_MSG),
- warningMsgValues);
+ if (runtime.getBatterylevel() <= 20) {
+ //保存一份到警告信息中
+ ContentValues warningMsgValues = new ContentValues();
+ //设置数据
+ warningMsgValues.put(ICDatabaseHelper.warning_msg_type, Constants.WARNING_MSG_TYPE_POWER_LOW);
+ warningMsgValues.put(ICDatabaseHelper.warning_msg_title, runtime.getContextProxy().context.getString(R.string.low_power_warning_text));
+ warningMsgValues.put(ICDatabaseHelper.warning_msg_has_read, 1);
+ warningMsgValues.put(ICDatabaseHelper.warning_msg_create_time, System.currentTimeMillis());
+ runtime.getContextProxy().getResolver().insert(Uri.parse(WarningItemProvider.WARNING_MSG),
+ warningMsgValues);
+ }
//add by TrillGates======end
+ ICLogger.d("runtime.getBatterylevel()==> " + runtime.getBatterylevel());
//没有充电,上次电池level > 15% , 上次电池并且不是 低电状态,则报警
if (!runtime.isPowerConnected() && runtime.getBatterylevel() <= 15 && runtime.getBatterylevel() > 10 && !runtime.getBatteryLow()) {
Intent intent = new Intent();
* - 正式地址:api.xcloudtech.com
*/
public class protocol_fzd {
+
private static final String TAG = "ICSrv." + protocol_fzd.class.getSimpleName();
private static final String PRIVATE_KEY = "XMQcHi0lGIdru6xzW7lygBwBT8N0c09P";
private static final String CMD_HEADER = "[";
private final Handler mHandler;
private static boolean isServerReady = false; //跟声网视频说服务器已经准备好了
-
/**
* 发送语音消息,微聊的,注意转码
*
//fos.flush();
//fos.close();
//以上代码,验证成功,说明转换是对的
-
//判断远程ID,remoteNum,如果这个不为空,那么是单聊
//如果remoteNum为空,那么是群聊
ICLogger.d("remote id == > " + remoteNum);
oxygen,//血氧上传
blood,//血压上传
heart,//心率上传
+ oxstart,//测血氧,新指令//2021-8-17
PRACTICE,//自由锻炼数据上传
BRREG,//获取佰锐的ID
AGREG,//获取声网ID
cmdMap.put(CMD_TYPE.oxygen, "oxygen");
cmdMap.put(CMD_TYPE.blood, "blood");
cmdMap.put(CMD_TYPE.heart, "heart");
+ cmdMap.put(CMD_TYPE.oxstart, "oxstart");
cmdMap.put(CMD_TYPE.PRACTICE, "PRACTICE");
cmdMap.put(CMD_TYPE.BRREG, "BRREG");
cmdMap.put(CMD_TYPE.AGREG, "AGREG");
public boolean parserCmd(byte[] bytes) {
ICLogger.d("source byte size == > " + bytes.length);
String dataStr = new String(bytes);
+ ICLogger.d("dataStr ==> " + dataStr);
//因为buffer有限,所以以[判断开头,以]判断结尾,这些数据要叠加起来
//这样才是完整的数据
//by TrillGates
//如果是FZD命令,则进行处理,否则保留数据动
if (regexUtil.isFZDCMD(cmdMap.get(key), cmd)) {
ICLogger.d("key is == > " + key);
+ ICLogger.d("cmd is == > " + cmd);
if (key == CMD_TYPE.TK) {
handlerGroupChatVoiceContent(totalByte);
} else if (key == CMD_TYPE.TKOne) {
} else if (key == CMD_TYPE.TKIMG) {
handleImage(totalByte);
} else {
- String data = content.replace(CMD_HEADER, "").replace(cmd, "").replace(CMD_END, "");
+ String data = content.replace(CMD_HEADER, "")
+ .replace(cmd, "")
+ .replace(CMD_END, "");
if (data.startsWith(CMD_SPLIT)) {
data = data.substring(1);
}
+ ICLogger.d("data is == > " + data);
handleCmd(key, cmd, data);
}
}
handleBldstart(mConnection);
Config.testType = HeartRateOxygenTestType.JUST_OXYGEN;
ICLogger.i("收到服务器血压检测命令");
- if (mRuntime.check_stat_do_ppg_test())
+ if (mRuntime.check_stat_do_ppg_test()) {
HeartRateManager.getInstance().triggerPPGTest(FROM_SERVER);
+ }
break;
case wdstart:
handleWdstart(mConnection, mRuntime, data);
ICLogger.d("收到好友列表...");
handlerPPQ(data, mRuntime);
break;
+ case oxstart:
+ //测试血氧
+ ICLogger.d("收到血氧测试的指令.");
+ handleOxStart(data);
+ mConnection.send(genFZDCMD(cmdMap.get(CMD_TYPE.oxstart)));
+ break;
}
return ret;
}
+ /**
+ * 测试血氧
+ *
+ * @param data
+ */
+ private void handleOxStart(String data) {
+ //[IC*870314001007725*0009*oxstart,1]
+ ICLogger.d("data 测试血氧间隔时间 ==> " + data);
+ // 平台发送: [XT*334588000000156*len*oxstart,x] x 为上传间隔时间,单位秒,
+ // 连续上传时最小时间不小于 300 秒,最大不超过 65535.
+ // 实例:[XT*334588000000156*len*oxstart,300]
+ // 终端会每隔 300 秒检测一次
+ // x 为 1 则代表终端单次上传,上传完后自动关闭。
+ // x 为 0 则代表终端上传关闭。
+ if ("1".equals(data)) {
+ Config.testType = HeartRateOxygenTestType.JUST_OXYGEN;
+ //血氧测量
+ HeartRateManager.getInstance().triggerPPGTest(FROM_SERVER);
+ } else if ("0".equals(data)) {
+ //处理关闭
+ } else {
+ //处理周期
+ }
+ //终端回复 [XT*334588000000156*len*oxstart]
+ //回复消息
+ //TODO:
+ }
+
/**
* 平台回复: [XT*YYYYYYYYYYYYYYY*LEN*PPQ,ID1,昵称 1,手机号 1,ID2,昵称 2,手机号 2]
* 实例: [XT*8800000015*000A*e476005866e8a2a6407502b3, 5F204E0,555,8800000016, 5F204E1,556]