From a44f40934e2801719e176ade5a2d7d0fbf023fb4 Mon Sep 17 00:00:00 2001 From: TrillGates Date: Mon, 6 Sep 2021 15:40:00 +0800 Subject: [PATCH] add sos receive page. --- .../com/ic/protocolSrv/service/Deliver.java | 4 +- .../ic/protocolSrv/utils/ProcessReceiver.java | 1 - .../java/com/ic/protocols/protocol_fzd.java | 65 ++++++++++-------- app/src/main/java/com/ic/view/SOSRecView.java | 53 ++++++++++++++ .../main/res/layout/sos_receive_layout.xml | 19 +++++ .../main/res/mipmap-mdpi/sos_receive_icon.png | Bin 0 -> 4105 bytes local.properties | 4 +- 7 files changed, 113 insertions(+), 33 deletions(-) create mode 100644 app/src/main/java/com/ic/view/SOSRecView.java create mode 100644 app/src/main/res/layout/sos_receive_layout.xml create mode 100644 app/src/main/res/mipmap-mdpi/sos_receive_icon.png diff --git a/app/src/main/java/com/ic/protocolSrv/service/Deliver.java b/app/src/main/java/com/ic/protocolSrv/service/Deliver.java index e8dec33f..e1ef690b 100644 --- a/app/src/main/java/com/ic/protocolSrv/service/Deliver.java +++ b/app/src/main/java/com/ic/protocolSrv/service/Deliver.java @@ -631,7 +631,6 @@ public class Deliver extends AbstractConnectionService { ICLogger.d("send find device action..."); context.sendBroadcast(intent); }, 500); - return true; } else if ("takephoto".equals(paramStringMessage.cmd())) { @@ -671,6 +670,9 @@ public class Deliver extends AbstractConnectionService { CoreService.getInstance().getConnection().DeliverCMDMessageToSystem("SentVoicePacket", ""); }, recordtime * 1000); return true; + } else if ("sosReceive".equals(paramStringMessage.cmd())) { + //显示一个弹窗,然后只有按钮才可以退出 + ICLogger.d("sosReceive ... show page..."); } return false; } diff --git a/app/src/main/java/com/ic/protocolSrv/utils/ProcessReceiver.java b/app/src/main/java/com/ic/protocolSrv/utils/ProcessReceiver.java index 854fe217..d30537fd 100644 --- a/app/src/main/java/com/ic/protocolSrv/utils/ProcessReceiver.java +++ b/app/src/main/java/com/ic/protocolSrv/utils/ProcessReceiver.java @@ -468,7 +468,6 @@ public class ProcessReceiver extends BroadcastReceiver { this.screenOn(paramContext); } } else if (paramIntent.hasExtra("findDev")) { - ICLogger.d("hasExtra(findDev)"); String findDevTxt = paramIntent.getStringExtra("findDev"); SharePreferenceUtil.getPrefBoolean(paramContext, "key_is_resume", false); diff --git a/app/src/main/java/com/ic/protocols/protocol_fzd.java b/app/src/main/java/com/ic/protocols/protocol_fzd.java index 0f74e2e4..518a2814 100644 --- a/app/src/main/java/com/ic/protocols/protocol_fzd.java +++ b/app/src/main/java/com/ic/protocols/protocol_fzd.java @@ -440,6 +440,7 @@ public class protocol_fzd { profile,//情景模式 SOSON,//w100SOS 报警开关 IP,//配置服务器地址 + SOSREC,//服务器响应S0S消息 } public static HashMap cmdMap = null; @@ -1361,33 +1362,33 @@ public class protocol_fzd { public void handleHrtstart(Connection connection, Runtime runtime, String cmd, String data) { //[IC*334588000000156*len*hrtstart,x] - // x 为上传间隔时间,单位秒,连续上传时最小时间不小于 300 秒,最大不超过 65535. + // x 为上传间隔时间,单位秒,连续上传时最小时间不小于 300 秒,最大不超过 65535. // 实例:[IC*334588000000156*len*hrtstart,300] //终端会每隔 300 秒检测一次心率 // //x 为 1 则代表终端心率单次上传,上传完后自动关闭。x 为 0 则代表终端心率上传关闭。 - int testcycle=0; - try{ - testcycle=Integer.parseInt(data); - }catch (Exception e){ + int testcycle = 0; + try { + testcycle = Integer.parseInt(data); + } catch (Exception e) { ICLogger.e(e.getMessage()); - testcycle=0; + testcycle = 0; ICLogger.i("Hrtstart format error!"); return; } connection.send(hrtstart()); - if(testcycle>=0 && testcycle<65535) { - ICLogger.i("收到服务器指令:设置心率周期 " + testcycle + "秒 相当于 "+testcycle/60 +"分钟" ); + if (testcycle >= 0 && testcycle < 65535) { + ICLogger.i("收到服务器指令:设置心率周期 " + testcycle + "秒 相当于 " + testcycle / 60 + "分钟"); try { //发送重置PPGCycle的广播,会在CoreServer里面执行 - CoreService.getInstance().setHeartRateDetectAlarm(testcycle/60); + CoreService.getInstance().setHeartRateDetectAlarm(testcycle / 60); } catch (Exception e) { ICLogger.e(e.getMessage(), e); } - }else{ - ICLogger.i("收到服务器指令:设置心率周期超限[0~65535] " + testcycle + "秒 相当于 "+testcycle/60 +"分钟" ); + } else { + ICLogger.i("收到服务器指令:设置心率周期超限[0~65535] " + testcycle + "秒 相当于 " + testcycle / 60 + "分钟"); } } @@ -1406,21 +1407,21 @@ public class protocol_fzd { // 实例:[IC*334588000000156*0002*IP] // 说明:设置服务器地址和端口 - String[] cmdlist=data.split(CMD_SPLIT); - if(cmdlist.length==2) { + String[] cmdlist = data.split(CMD_SPLIT); + if (cmdlist.length == 2) { connection.send(IP()); - try { - String ip = cmdlist[0]; - int port = Integer.valueOf(cmdlist[1].replace("#", "")); - Config.setCustomServer(runtime.getContextProxy().context, true, ip, port); - Config.loadServerSettings(runtime); - CoreService.getInstance().disconnect_server(); - CoreService.getInstance().ReConnectToServer(); - }catch (Exception e){ - ICLogger.e(e.getMessage(),e); - } - }else{ + try { + String ip = cmdlist[0]; + int port = Integer.valueOf(cmdlist[1].replace("#", "")); + Config.setCustomServer(runtime.getContextProxy().context, true, ip, port); + Config.loadServerSettings(runtime); + CoreService.getInstance().disconnect_server(); + CoreService.getInstance().ReConnectToServer(); + } catch (Exception e) { + ICLogger.e(e.getMessage(), e); + } + } else { ICLogger.i("IP format error!"); } @@ -1738,7 +1739,7 @@ public class protocol_fzd { case hrtstart: ICLogger.i("收到服务器心率检测命令"); Config.testType = HeartRateOxygenTestType.JUST_HEART_RATE; - handleHrtstart(mConnection,mRuntime,cmd,data); + handleHrtstart(mConnection, mRuntime, cmd, data); break; case bldstart: handleBldstart(mConnection); @@ -1929,12 +1930,16 @@ public class protocol_fzd { break; case SOSON: ICLogger.d("收到服务器设置的SOS开发消息.."); - handleSOSON(cmd,data,mRuntime,mConnection); + handleSOSON(cmd, data, mRuntime, mConnection); break; case IP: //设置服务器IP - ICLogger.d("设置服务器 IP 为 "+data); - handleIP(mConnection, mRuntime, cmd,data); + ICLogger.d("设置服务器IP为 " + data); + handleIP(mConnection, mRuntime, cmd, data); + break; + case SOSREC: + ICLogger.d("服务器收到SOS消息..."); + mConnection.DeliverCMDMessageToSystem("sosReceive", cmd); break; } return ret; @@ -2144,14 +2149,16 @@ public class protocol_fzd { private static final String BOOT_OFF_ACTION_OFF = "0"; private static final String BOOT_OFF_ACTION_ON = "1"; private static final long ONE_DAY = 86400000L; + public static StringMessage SOSON() { return genFZDCMD(cmdMap.get(CMD_TYPE.SOSON)); } - private void handleSOSON(String cmd, String data, Runtime mRuntime,Connection connection) { + private void handleSOSON(String cmd, String data, Runtime mRuntime, Connection connection) { connection.send(SOSON()); handleSettings(CMD_TYPE.SOSON, data, mRuntime); } + /** * 设置开关机时间 *

diff --git a/app/src/main/java/com/ic/view/SOSRecView.java b/app/src/main/java/com/ic/view/SOSRecView.java new file mode 100644 index 00000000..e558fabf --- /dev/null +++ b/app/src/main/java/com/ic/view/SOSRecView.java @@ -0,0 +1,53 @@ +package com.ic.view; + +import android.content.Context; +import android.view.Gravity; +import android.view.View; +import android.view.WindowManager; + +import com.ic.protocolSrv.ICApplication; +import com.ic.protocolSrv.R; +import com.ic.protocolSrv.utils.ICLogger; + +public class SOSRecView { + + private WindowManager windowManager; + + private static SOSRecView sInstance; + private boolean isShow; + private View view; + + public static SOSRecView getInstance() { + if (sInstance == null) { + sInstance = new SOSRecView(); + } + return sInstance; + } + + public void showMsgDialog() { + ICLogger.d("showMsgDialog..." + isShow); + if (isShow) { + return; + } + isShow = true; + Context context = ICApplication.sContext; + windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); + //设置属性 + WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(); + layoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; + //这个是针对S123的屏幕,如果要适配其他,可以动态获取屏幕宽度,高度,再以百分比的形式计算即可。 + layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT; + layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT; + layoutParams.packageName = context.getPackageName(); + layoutParams.gravity = Gravity.CENTER; + //加载布局 + view = View.inflate(context, R.layout.find_device_layout, null); + windowManager.addView(view, layoutParams); + } + + public void dismiss() { + windowManager.removeView(view); + sInstance = null; + windowManager = null; + } +} diff --git a/app/src/main/res/layout/sos_receive_layout.xml b/app/src/main/res/layout/sos_receive_layout.xml new file mode 100644 index 00000000..0f260375 --- /dev/null +++ b/app/src/main/res/layout/sos_receive_layout.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-mdpi/sos_receive_icon.png b/app/src/main/res/mipmap-mdpi/sos_receive_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b6b6bf65adc7507275ac0f4ccc4ef4e5fb423123 GIT binary patch literal 4105 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 literal 0 HcmV?d00001 diff --git a/local.properties b/local.properties index 7a802755..7420f9ef 100644 --- a/local.properties +++ b/local.properties @@ -4,5 +4,5 @@ # Location of the SDK. This is only used by Gradle. # For customization when using a Version Control System, please read the # header note. -#Fri Sep 03 11:56:39 CST 2021 -sdk.dir=C\:\\Users\\incar\\AppData\\Local\\Android\\Sdk +#Mon Sep 06 15:08:10 CST 2021 +sdk.dir=E\:\\Android\\Sdk -- 2.17.1