From: snickersun Date: Wed, 24 Jun 2020 14:43:42 +0000 (+0800) Subject: release 425 X-Git-Url: http://git.snicker.com.cn/sitemap.xml?a=commitdiff_plain;h=08ffd6ffba1e3bf2d2aabfea9a2eba405359ff33;p=protocol_srv.git release 425 1、给C43的项目通过配置 去掉 各种消息弹出窗口提示 2、添加查找提示窗口 3、添加温度设置和上报协议,但是还没有加好timer 4、添加温度检测接口,以及校准数据支持,目前只有deviceinfo和ui的窗口中有用到。 --- diff --git a/app/app.iml b/app/app.iml index 96972aaf..23bf84d3 100644 --- a/app/app.iml +++ b/app/app.iml @@ -126,6 +126,7 @@ + diff --git a/app/release/ICSer_V423_2006172332_release.apk b/app/release/ICSer_V423_2006172332_release.apk deleted file mode 100644 index 0f640f3d..00000000 Binary files a/app/release/ICSer_V423_2006172332_release.apk and /dev/null differ diff --git a/app/release/ICSer_V425_2006242237_release.apk b/app/release/ICSer_V425_2006242237_release.apk new file mode 100644 index 00000000..952b93ea Binary files /dev/null and b/app/release/ICSer_V425_2006242237_release.apk differ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d262251e..b02434ec 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -114,6 +114,8 @@ + + diff --git a/app/src/main/assets/Campus_Life.ogg b/app/src/main/assets/Campus_Life.ogg new file mode 100644 index 00000000..937fb3e1 Binary files /dev/null and b/app/src/main/assets/Campus_Life.ogg differ diff --git a/app/src/main/java/com/enqualcomm/support/Config.java b/app/src/main/java/com/enqualcomm/support/Config.java index d5b6ef5a..54bd0e9f 100644 --- a/app/src/main/java/com/enqualcomm/support/Config.java +++ b/app/src/main/java/com/enqualcomm/support/Config.java @@ -10,10 +10,12 @@ import com.enqualcomm.support.utils.ICLogger; import com.enqualcomm.support.utils.SharPreferenceUtil; import com.enqualcomm.support.utils.TimeUtil; import com.enqualcomm.support.utils.Util; +import com.sina.util.dnscache.log.FileUtil; import org.json.JSONException; import org.json.JSONStringer; +import java.io.File; import java.util.concurrent.TimeUnit; import static com.enqualcomm.support.utils.Util.getSystemProperties; @@ -45,6 +47,12 @@ public class Config { public static final int GPSLocationTimeoutInSeconds=50; public static final int WiFiLocationTimeoutInSeconds=12; + public static String c43_branch_name="none"; + + public static boolean noSMSNotifyDialog=false; + public static boolean noPushTxtNotifyDialog=false; + public static boolean noVoiceNotifyDialog=false; + static { } @@ -181,7 +189,22 @@ public class Config { } + public static double getTempAdjustValue(){ + String tmpstr=FileUtil.readFileLine(new File("/productinfo/temp_adjust_37.txt")); + + double tmp=0.0f; + + if (tmpstr==null || tmpstr.isEmpty()) + { + tmpstr="0.0"; + } + tmp=Double.valueOf(tmpstr); + + ICLogger.i("get Temperature Adjust Value from /productinfo/temp_adjust_37.txt , value="+tmpstr); + return tmp; + + } public static void setAlarmCycle(Context context, int cycle){ @@ -286,7 +309,7 @@ public class Config { public static int getHeartBeatCycle(Context context){ - return SharPreferenceUtil.getPrefInt(context,KeyHeartBeatCycle,6); + return SharPreferenceUtil.getPrefInt(context,KeyHeartBeatCycle,3); } public static void setHeartBeatCycle(Context context,int cycle){ @@ -349,6 +372,15 @@ public class Config { ret=true; do_broadCast_message_no_indication = ret; + + c43_branch_name=Util.getSystemProperties("persist.sys.c43.branch"); + + if ((c43_branch_name.equals("l03")) ||(c43_branch_name.equals("l05"))){ + noPushTxtNotifyDialog=true; + noSMSNotifyDialog=true; + noVoiceNotifyDialog=true; + } + } public static boolean isUsingCustomServer=false; diff --git a/app/src/main/java/com/enqualcomm/support/Constants.java b/app/src/main/java/com/enqualcomm/support/Constants.java index 55278d59..c643df96 100644 --- a/app/src/main/java/com/enqualcomm/support/Constants.java +++ b/app/src/main/java/com/enqualcomm/support/Constants.java @@ -124,9 +124,11 @@ public interface Constants { public static final int EXIT_SILENT_MODE = 213; public static final String FLAG = "flag"; - + + public static final String ANTI_ALARM = "com.enqualcomm.support.ANTI_ALARM"; + public static final String TEMP_ALARM = "com.enqualcomm.support.TEMP_ALARM"; public static final String HEART_ALARM = "com.enqualcomm.support.HEART_ALARM"; - + public static final int IDLE_MODE_CHANGED = 102; public static final int INIT_SERVER_OK = 216; diff --git a/app/src/main/java/com/enqualcomm/support/CoreService.java b/app/src/main/java/com/enqualcomm/support/CoreService.java index 2782e93e..be622d80 100644 --- a/app/src/main/java/com/enqualcomm/support/CoreService.java +++ b/app/src/main/java/com/enqualcomm/support/CoreService.java @@ -67,10 +67,12 @@ import static com.enqualcomm.support.Constants.ACTION_LOCAL_SOS_ACTION; import static com.enqualcomm.support.Constants.ACTION_LOCATION_ALARM; import static com.enqualcomm.support.Constants.ACTION_SEND_EMEGENCY_LOCATION_START; import static com.enqualcomm.support.Constants.ACTION_SEND_EMEGENCY_LOCATION_STOP; +import static com.enqualcomm.support.Constants.ANTI_ALARM; import static com.enqualcomm.support.Constants.HEART_ALARM; import static com.enqualcomm.support.Constants.KEY_SAVE_STEP_COUNT; import static com.enqualcomm.support.Constants.KEY_STEP_COUNT; import static com.enqualcomm.support.Constants.STEP_COUNT_ALARM_ACTION; +import static com.enqualcomm.support.Constants.TEMP_ALARM; import static com.enqualcomm.support.bean.ICLocation.*; @@ -511,6 +513,7 @@ public class CoreService extends Service { resetStepCount(); } + Config.setHeartBeatCycle(this,3); //初始化ServerHeartBeat Cycle Config.loadHearBeatSetting(runtime); //初始化PPG,LocationMod,LocationCycle @@ -519,9 +522,14 @@ public class CoreService extends Service { Config.loadCustomServerAddr(this); Config.loadServerSettings(runtime); + //初始化消息相关配置 Config.LoadMessageConfigs(); + //初始化温度测试相关参数 + runtime.temperature_adjustValue=Config.getTempAdjustValue(); + + this.connectionServiceChain.processAttach(this.connection, this.runtime); this.invokeHandlerServiceChain.processAttach(this.connection, this.runtime); // setAlarm(alarmCycle); @@ -729,6 +737,32 @@ public class CoreService extends Service { is_allowed_in_sleep_mode = 1; setWakeAlarm(); return Service.START_STICKY; + } else if (ANTI_ALARM.equals(paramIntent.getAction())) { + + if (this.mKeepAlive != null) { + + if (connection.isServerConnected() && runtime.isServerProtocolConnected()) { + //测试是否佩戴 + + } + setAntiAlarm(); + if (Config.LOG_TOFILE) + ICLogger.logToFile("alarmCycle", "ANTI_ALARM alarmCycle "); + return Service.START_STICKY; + } + } else if (TEMP_ALARM.equals(paramIntent.getAction())) { + + if (this.mKeepAlive != null) { + + if (connection.isServerConnected() && runtime.isServerProtocolConnected()) { + //测试温度并上报 + + } + setTempAlarm(); + if (Config.LOG_TOFILE) + ICLogger.logToFile("alarmCycle", "TEMP_ALARM alarmCycle "); + return Service.START_STICKY; + } } else if (HEART_ALARM.equals(paramIntent.getAction())) { if (this.mKeepAlive != null) { @@ -843,7 +877,34 @@ public class CoreService extends Service { // AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,1, HEART_ALARM); } + public void setAntiAlarm(){ +// int mod=runtime.getLocationInstance().getWorkingMod(); + StringBuilder sb=new StringBuilder(); + int cycle=runtime.anti_test_cycle; + + //心跳指令默认设置为3分钟 + AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,cycle, ANTI_ALARM); + sb.append(" setHeartAlarm "+ANTI_ALARM+", cycle "+cycle); +// locationClient.triggerLocationProcess(); + ICLogger.i(sb.toString()); + FileOutputUtil.fileOutput(runtime.getCacheDir(),"alarmCycle",sb.toString()); +// AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,1, HEART_ALARM); + } + public void setTempAlarm(){ +// int mod=runtime.getLocationInstance().getWorkingMod(); + StringBuilder sb=new StringBuilder(); + int cycle=runtime.temp_test_Cycle; + + //心跳指令默认设置为3分钟 + AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,cycle, TEMP_ALARM); + sb.append(" setHeartAlarm "+TEMP_ALARM+", cycle "+cycle); +// locationClient.triggerLocationProcess(); + ICLogger.i(sb.toString()); + FileOutputUtil.fileOutput(runtime.getCacheDir(),"alarmCycle",sb.toString()); + +// AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,1, HEART_ALARM); + } public void setUpLocationDataAlarm(long paramLong) { AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); Intent intent = new Intent(this, CoreService.class); diff --git a/app/src/main/java/com/enqualcomm/support/bean/Runtime.java b/app/src/main/java/com/enqualcomm/support/bean/Runtime.java index 14844a38..b9ff3848 100644 --- a/app/src/main/java/com/enqualcomm/support/bean/Runtime.java +++ b/app/src/main/java/com/enqualcomm/support/bean/Runtime.java @@ -18,7 +18,12 @@ import java.util.Date; import java.util.Locale; public class Runtime { - public int SignalStrength; + + public int temp_test_Cycle=30; + public int anti_test_cycle=30; + + public int SignalStrength; + private String battery="000"; @@ -423,19 +428,6 @@ public class Runtime { return gpsp; } - - public String HardwareInfo() { - return "SC9820E C41 V1.0"; - } - - public String BuildVersion() { - return "C41-GW-V0.0.1"; - } - - - - /* AP03 心跳包 */ - //暂时没有实现此功能 public String getGPSLocationStarNums() { return "000"; @@ -463,6 +455,8 @@ public class Runtime { + public double temperature_adjustValue=0.0f; + public boolean isGPSFixed(){ return (gpsp.getLocationStat() == ICLocation.LOCATION_STAT.LOCATION_FIXED); } @@ -545,7 +539,8 @@ public class Runtime { } return sb.toString(); } - /* AP01 定位 end */ + + } diff --git a/app/src/main/java/com/enqualcomm/support/service/Deliver.java b/app/src/main/java/com/enqualcomm/support/service/Deliver.java index 84397870..6a06553f 100644 --- a/app/src/main/java/com/enqualcomm/support/service/Deliver.java +++ b/app/src/main/java/com/enqualcomm/support/service/Deliver.java @@ -376,31 +376,48 @@ public static void sendLocationMSG( String Msg){ Contact param2Contact = new Contact(CATEGORY_GROUP, (mRuntime.getContextProxy()).context.getResources().getString(R.string.all_group), Contact.GROUP_ALL); int i = mRuntime.getContextProxy().getTelephonyManager().getCallState(); if (!mRuntime.getBatteryLow() && 1 != i && 2 != i) { - Intent intent = new Intent(); - if (Config.do_broadCast_message_no_indication) { ICLogger.d(Constants.ACTION_MESSAGE_RECEIVED+" "+paramStringMessage.isFromCache()); //广播 voice消息 - intent = new Intent(); + Intent intent = new Intent(); intent.setAction(Constants.ACTION_MESSAGE_RECEIVED); intent.putExtra(Constants.KEY_MESSAGE_TYPE,"voice"); intent.putExtra(Constants.KEY_MESSAGE_FROM,"广播消息"); intent.putExtra(Constants.KEY_MESSAGE_URL,paramStringMessage.isFromCache()); // playVoice(context,paramStringMessage.isFromCache()); + context.sendBroadcast(intent); + } + + if (Config.noVoiceNotifyDialog==false) { - }else { + Intent intent = new Intent(); //显示提示窗口 intent.setAction(DIALOG_ACTION); intent.putExtra("contact", (Parcelable) param2Contact); + context.sendBroadcast(intent); } - context.sendBroadcast(intent); + } } }); return true; + }else if ("findDev".equals(paramStringMessage.cmd())) { + Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1() { + public void call(Long param1Long) { + final Context context = (Deliver.this.mRuntime.getContextProxy()).context; + + Intent intent = new Intent(); + ICLogger.d(Constants.ACTION_MESSAGE_RECEIVED+" "+paramStringMessage.isFromCache()); + //显示提示窗口 + intent.setAction(DIALOG_ACTION); + intent.putExtra("findDev", "Find Device"); + context.sendBroadcast(intent); + } + }); + } diff --git a/app/src/main/java/com/enqualcomm/support/utils/ContextProxy.java b/app/src/main/java/com/enqualcomm/support/utils/ContextProxy.java index 3169d288..c05eba55 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/ContextProxy.java +++ b/app/src/main/java/com/enqualcomm/support/utils/ContextProxy.java @@ -17,6 +17,7 @@ import android.telephony.TelephonyManager; import android.util.Log; +import com.enqualcomm.support.Config; import com.enqualcomm.support.ICContentProvider; import com.enqualcomm.support.bean.Alarm; import com.enqualcomm.support.bean.NoticeContent; @@ -336,19 +337,23 @@ public class ContextProxy { if (msgType==0){ Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1() { public void call(Long param1Long) { - Intent intent = new Intent(); - intent.setAction(DIALOG_ACTION); - intent.putExtra("pushtxt", msg); - _context.sendBroadcast(intent); + if(Config.noPushTxtNotifyDialog==false) { + Intent intent = new Intent(); + intent.setAction(DIALOG_ACTION); + intent.putExtra("pushtxt", msg); + _context.sendBroadcast(intent); + } } }); }else{ Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1() { public void call(Long param1Long) { - Intent intent = new Intent(); - intent.setAction(DIALOG_ACTION); - intent.putExtra("sms", msg); - _context.sendBroadcast(intent); + if(Config.noSMSNotifyDialog==false) { + Intent intent = new Intent(); + intent.setAction(DIALOG_ACTION); + intent.putExtra("sms", msg); + _context.sendBroadcast(intent); + } } }); } diff --git a/app/src/main/java/com/enqualcomm/support/utils/DeviceInfoUtil.java b/app/src/main/java/com/enqualcomm/support/utils/DeviceInfoUtil.java index 146e140b..355b7d3b 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/DeviceInfoUtil.java +++ b/app/src/main/java/com/enqualcomm/support/utils/DeviceInfoUtil.java @@ -233,7 +233,7 @@ public class DeviceInfoUtil { .append(" [").append(runtime.getSignalStrength()).append(",").append(runtime.getSignalInfo()).append("] ") .append(runtime.IMEI()) .append("\n Srv [").append(runtime.getHost()).append(":").append(runtime.getPort()).append("]").append(KeepAlive.isConnected).append(" , HBcycle ").append(runtime.getHeartBeatCycle()) - .append("\n ServerConnected is ").append(runtime.isServerProtocolConnected()) + .append("\n ServerConnected is ").append(runtime.isServerProtocolConnected()).append(",Temp ").append(ICJniUtils.getTemperature()-runtime.temperature_adjustValue) .append(" \n Bat ").append(runtime.getBattery()).append(",").append(runtime.getBatteryVotage()) .append(" charged ").append(runtime.isPowerConnected()) .append(" StepCount ").append(runtime.getTotalStepCount()) @@ -274,6 +274,7 @@ public class DeviceInfoUtil { .append(",P").append(runtime.getHRS().getPPG()) .append(",H").append(runtime.getHRS().getBPH()) .append(",L").append(runtime.getHRS().getBPL()) + .append(",T").append(ICJniUtils.getTemperature()-runtime.temperature_adjustValue) .append(",").append(runtime.getHRS().getTestTime()).append("]") .toString(); } diff --git a/app/src/main/java/com/enqualcomm/support/utils/ICHttpUtil.java b/app/src/main/java/com/enqualcomm/support/utils/ICHttpUtil.java index d7515b75..09247f5f 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/ICHttpUtil.java +++ b/app/src/main/java/com/enqualcomm/support/utils/ICHttpUtil.java @@ -48,6 +48,8 @@ public class ICHttpUtil { String pkgver=DeviceInfoUtil.getSWVersionDisplayName(); String imei=runtime.IMEI(); String actionUrl = "http://"+server+":"+port + "/UploadFile.jsp?product=" + product + "&pkgver="+ pkgver + "&imei="+ imei+"&logtime="+logtime; + + ICLogger.i("url="+actionUrl+"\nfile="+zipfile); return upLoadFile(actionUrl, new File(zipfile)); } @@ -112,7 +114,7 @@ public class ICHttpUtil { int statusCode = con.getResponseCode(); String msg=con.getResponseMessage(); - Log.e(TAG,msg); + ICLogger.i(msg); if (statusCode == 200) { result = true; } diff --git a/app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java b/app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java index dbd99ff8..5117842d 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java +++ b/app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java @@ -193,9 +193,33 @@ public class ProcessReceiver extends BroadcastReceiver { }).create(); mCustomDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST); mCustomDialog.show(); + } else if (app_id ==5) { + tmpDialog = this.mDialog.setTitle(context.getString(R.string.findDev)).setApp(1); + StringBuilder var7 = new StringBuilder(); + var7.append(msg); + mCustomDialog = tmpDialog.setMessage(var7.toString()).setPositiveButton("确定", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface var1, int var2) { + var1.dismiss(); + VibrateUtil.getInstance(context).VibrateOn(false); + stopmediaplayer(); + } + }).create(); + mCustomDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST); + mCustomDialog.show(); } } - + private void playFindDevVoice(Context context){ + + if (this.mAudioService == null) + this.mAudioService = new AudioService(); + + this.mAudioService.play(context.getAssets(), "Campus_Life.ogg"); + + } + private void stopmediaplayer(){ + if (this.mAudioService != null) + this.mAudioService.stop(); + } private void playNotificationVoice(Context paramContext) { if (this.mAudioService == null) this.mAudioService = new AudioService(); @@ -306,6 +330,20 @@ public class ProcessReceiver extends BroadcastReceiver { VibrateUtil.getInstance(paramContext).VibrateOn(true); } + this.screenOn(paramContext); + } + }else if (paramIntent.hasExtra("findDev")) { + String finddevtxt = paramIntent.getStringExtra("findDev"); + SharPreferenceUtil.getPrefBoolean(paramContext, "key_is_resume", false); + isSilence = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false); + if (finddevtxt != null && !isSilence) { + if (!DeviceInfoUtil.isTopActivity(paramContext)) { + this.initMyDialog(paramContext, null, 5,finddevtxt); + this.playFindDevVoice(paramContext); + VibrateUtil.getInstance(paramContext).VibrateOn(true); + + } + this.screenOn(paramContext); } } diff --git a/app/src/main/java/com/enqualcomm/support/utils/RxSocket.java b/app/src/main/java/com/enqualcomm/support/utils/RxSocket.java index 8744e76a..213526b8 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/RxSocket.java +++ b/app/src/main/java/com/enqualcomm/support/utils/RxSocket.java @@ -296,6 +296,7 @@ public class RxSocket { //连接 if (socketStatus == SocketStatus.DIS_CONNECT || socketStatus == SocketStatus.DIS_CONNECT_BY_SERVERSIDE) { try { + Thread.sleep(10); if (selectionKey != null) selectionKey.cancel(); socketChannel = SocketChannel.open(); socketChannel.configureBlocking(false); @@ -332,16 +333,16 @@ public class RxSocket { connectStatus.onNext(SocketStatus.CONNECTED); socketChannel.configureBlocking(false); socketChannel.register(selector, SelectionKey.OP_READ); - if (socketReconnectCallback!=null) + if (socketReconnectCallback != null) socketReconnectCallback.onSuccess(); } catch (Exception e) { isReadThreadAlive = false; socketStatus = SocketStatus.DIS_CONNECT; connectStatus.onNext(SocketStatus.DIS_CONNECT); - ICLogger.log( TAG, "ReadThread:finish exception:" + e); - e.printStackTrace(); - if (socketReconnectCallback!=null) + ICLogger.log(TAG, "ReadThread:finish exception:" + e); + e.printStackTrace(); + if (socketReconnectCallback != null) socketReconnectCallback.onFail("SocketConnectFail2"); } @@ -350,20 +351,20 @@ public class RxSocket { ByteBuffer buf = ByteBuffer.allocate(10000); int length = socketChannel.read(buf); if (length <= 0) { - ICLogger.log( TAG, "服务器主动断开链接!"); + ICLogger.log(TAG, "服务器主动断开链接!"); isReadThreadAlive = false; socketStatus = SocketStatus.DIS_CONNECT_BY_SERVERSIDE; connectStatus.onNext(SocketStatus.DIS_CONNECT_BY_SERVERSIDE); - if (socketReconnectCallback!=null) + if (socketReconnectCallback != null) socketReconnectCallback.onFail("SocketConnectFail3"); } else { - ICLogger.log( TAG, "readSubject:msg!"+ "length:" + length); + ICLogger.log(TAG, "readSubject:msg!" + "length:" + length); byte[] bytes = new byte[length]; for (int i = 0; i < length; i++) { bytes[i] = buf.get(i); } - if (socketReadCallback!=null) + if (socketReadCallback != null) socketReadCallback.onRecvMsg(bytes); readSubject.onNext(bytes); } @@ -376,6 +377,7 @@ public class RxSocket { connectStatus.onNext(SocketStatus.DIS_CONNECT); ICLogger.log( TAG, "ReadThread:read exception :" + e); e.printStackTrace(); + if (socketReconnectCallback!=null) socketReconnectCallback.onFail("SocketConnectFail4"); diff --git a/app/src/main/java/com/ic/jni/ICJniUtils.java b/app/src/main/java/com/ic/jni/ICJniUtils.java index 997d2343..5c1928bc 100644 --- a/app/src/main/java/com/ic/jni/ICJniUtils.java +++ b/app/src/main/java/com/ic/jni/ICJniUtils.java @@ -57,4 +57,7 @@ public class ICJniUtils { /*获取血氧值*/ public static native int getSPO2(); + + + public static native double getTemperature(); } diff --git a/app/src/main/java/com/ic/protocols/protocol_beehome.java b/app/src/main/java/com/ic/protocols/protocol_beehome.java index a58c6777..d4cf1f46 100644 --- a/app/src/main/java/com/ic/protocols/protocol_beehome.java +++ b/app/src/main/java/com/ic/protocols/protocol_beehome.java @@ -103,6 +103,10 @@ public class protocol_beehome { BP88,//查找手表 AP89, BP89,//心率血压阀值设置 + APTE, + BPTE,//体温间隔设置 + APTP, + BPTP,//体温上行 UNKNOWN_CMD, } @@ -172,6 +176,8 @@ public class protocol_beehome { cmdMap.put(CMD_TYPE.BP88, "BP88"); cmdMap.put(CMD_TYPE.AP89, "AP89"); cmdMap.put(CMD_TYPE.BP89, "BP89"); + cmdMap.put(CMD_TYPE.APTE, "APTE"); + cmdMap.put(CMD_TYPE.BPTE, "BPTE"); } @@ -343,6 +349,20 @@ public class protocol_beehome { public static String AP03(Runtime ds) { //示例数据:IWAP03,06000908000102,5555,30# IWAP03,000000null00000,0,0# + //IW: 标识符 + //AP03:命令字 + //设备在静止时,可以通过该指令与平台保持连接和解决静态漂移 + //06000908000102: + //060为GSM信号, + //009为参与定位的卫星数, + //080为电池电量, + //0 为保留位, + //01为设防状态,此处由两位十六进制表示,无取值时为 00 ,长度必需为两位,一共 8个bit 表示8种状态,各bit定义如下:(未列出的为当前未使用, 1表示有效 ,0 表示无效) + //Bit0 设防状态<手表无效> + //Bit1 为 1 表示夜灯为开,为0 夜灯为 关 + //02为工作模式 ,(设防,工作模式如果为00,则代表无或未设置) + //5555: 计步步数,每次到达 9999 后重 0 开始计 (此处 9999 为示例,可以为2字节int 然后溢出归零) + //30: 翻滚次数 return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP03)).append(CMDSPLIT).append(String.format("%03d",abs(ds.getSignalStrength()))) .append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0") .append(ds.getProtection()).append(ds.getWorkModeStr()).append(CMDSPLIT) @@ -1494,6 +1514,63 @@ public class protocol_beehome { } } + + //体温间隔测量 (后台测试体温)(下行协议号:BPTE,响应:APTE) + public static String APTE(String index,int freq){ + + //设备响应: IWAPTE,080835,60# + //080835:指令流水号 + //1:表示设备接受数据成功,0表示设备接受数据失败 + return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTE)) + .append(CMDSPLIT).append(index) + .append(CMDSPLIT).append(freq) + .append(CMDEND).toString(); + } + + public void handleBPTE(String cmd,Connection connection){ + + //示例: + //IWBPTE,353456789012345,080835,60# + //说明: + //IW:标识符 + //BPTE : 命令字符 + //353456789012345:IMEI号,设备唯一ID + //080835 :指令流水号 + //60 : 上传间隔,单位分钟(60分钟上传一次体温,终端收到后立即开始测量一次并重置定时器) + String[] list=cmd.split(CMDSPLIT); + if (list.length==4){ + String index=list[2]; + String freqstr=list[3]; + int freq=Integer.valueOf(freqstr); + connection.send(genStringMessage("APTE",APTE(index,freq))); + ICLogger.i("收到服务器指令:测量体温 "+freq+"分钟一次。"); + }else{ + ICLogger.i("BP89 format error!"); + } + + } + + + //体温上行(上行协议号:APTP,响应:BPTP) + public static String APTP(double temperature){ + + //设备: IWAPTP,36.3,33,132# + //IW:标识符 + //APTP : 命令字符 + //35.3:测量体温 (摄氏度) + //33,132:温补用的参数,此处不用,可以用0 来代替。 + return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTP)) + .append(CMDSPLIT).append(String.format("%1$.2f",temperature)) + .append(CMDSPLIT).append(0).append(CMDSPLIT).append(0) + .append(CMDEND).toString(); + } + + public void handleBPTP(){ + + ICLogger.d("BPTP 服务器收到体温数据!"); + + } + public boolean handleCmd(CMD_TYPE type, String cmd) { //普通非二进制命令用此函数处理 @@ -1642,6 +1719,14 @@ public class protocol_beehome { //心率/血压阀值 handleBP89(cmd,mConnection); break; + + case BPTE: //设置测试体温 + handleBPTE(cmd,mConnection); + break; + + case BPTP: + handleBPTP(); + break; } return ret; diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4b0a46ec..f6fc2d0d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -16,10 +16,13 @@ 您有新短消息! 的未接来电 + 您有 来电提醒 + 查找设备! + successRateAnalytics Cancel diff --git a/app/version_code.properties b/app/version_code.properties index 0df057be..2de9463d 100644 --- a/app/version_code.properties +++ b/app/version_code.properties @@ -1,2 +1,2 @@ -#Wed Jun 17 23:32:50 CST 2020 -VERSION_CODE=423 +#Wed Jun 24 22:37:19 CST 2020 +VERSION_CODE=425 diff --git a/dNSCache/src/main/java/com/sina/util/dnscache/log/FileUtil.java b/dNSCache/src/main/java/com/sina/util/dnscache/log/FileUtil.java index 0bf50825..fa7ee3b1 100644 --- a/dNSCache/src/main/java/com/sina/util/dnscache/log/FileUtil.java +++ b/dNSCache/src/main/java/com/sina/util/dnscache/log/FileUtil.java @@ -1,10 +1,14 @@ package com.sina.util.dnscache.log; +import java.io.BufferedInputStream; import java.io.BufferedReader; +import java.io.DataInputStream; import java.io.File; +import java.io.FileInputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; +import java.io.InputStream; import java.util.ArrayList; import java.util.List; @@ -46,7 +50,20 @@ public class FileUtil { public static String getSDPath() { return Environment.getExternalStorageDirectory().getPath(); } - + public static String readFileLine(File file) { + DataInputStream dis = null; + try { + if (!file.exists()) { + file.createNewFile(); + } + dis = new DataInputStream(new FileInputStream(file)); + String tmp=dis.readLine(); + return tmp; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } /** * 写文件内容,一次只写一行 *