From: TrillGates Date: Wed, 4 Aug 2021 07:31:37 +0000 (+0800) Subject: completed shutdown report. X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=a5fd6faa915022442d090aeed952dbdcda447727;p=icsupport.git completed shutdown report. --- diff --git a/app/src/main/java/com/enqualcomm/support/CoreService.java b/app/src/main/java/com/enqualcomm/support/CoreService.java index 5ec9daf3..ce116eff 100644 --- a/app/src/main/java/com/enqualcomm/support/CoreService.java +++ b/app/src/main/java/com/enqualcomm/support/CoreService.java @@ -37,6 +37,7 @@ import com.enqualcomm.support.bean.StringMessage; import com.enqualcomm.support.bean.heartRateStatus; import com.enqualcomm.support.provider.ICContentProvider; import com.enqualcomm.support.provider.ICDatabaseHelper; +import com.enqualcomm.support.provider.ShootTextProvider; import com.enqualcomm.support.provider.WarningItemProvider; import com.enqualcomm.support.provider.WeTalkMessageProvider; import com.enqualcomm.support.service.AntiMonitorService; @@ -46,6 +47,7 @@ import com.enqualcomm.support.service.HeartRateManager; import com.enqualcomm.support.service.KeepAlive; import com.enqualcomm.support.service.PhoneCallListener; import com.enqualcomm.support.service.SendChatMessage; +import com.enqualcomm.support.service.ShutdownFlagObserver; import com.enqualcomm.support.service.SilentManager; import com.enqualcomm.support.service.WeTalkMsgObserver; import com.enqualcomm.support.service.base.AbstractConnectionService; @@ -997,6 +999,11 @@ public class CoreService extends Service { resolver.registerContentObserver( Uri.parse(WeTalkMessageProvider.MESSAGES_SEND), true, weTalkMsgObserver ); + + ShutdownFlagObserver shutdownFlagObserver = new ShutdownFlagObserver(mHandler, resolver); + resolver.registerContentObserver(Uri.parse(ShootTextProvider.SHOOT_TEXT), true, + shutdownFlagObserver); + //启动结束设置标志位,让心率和体温检测可以正常执行。 server_starting = false; diff --git a/app/src/main/java/com/enqualcomm/support/service/ShutdownFlagObserver.java b/app/src/main/java/com/enqualcomm/support/service/ShutdownFlagObserver.java new file mode 100644 index 00000000..506dca05 --- /dev/null +++ b/app/src/main/java/com/enqualcomm/support/service/ShutdownFlagObserver.java @@ -0,0 +1,45 @@ +package com.enqualcomm.support.service; + +import android.content.ContentResolver; +import android.database.ContentObserver; +import android.database.Cursor; +import android.net.Uri; +import android.os.Handler; + +import com.enqualcomm.support.provider.ICDatabaseHelper; +import com.enqualcomm.support.provider.ICGlobalSettingsProvider; +import com.ic.protocols.protocolAPIHelper; + +public class ShutdownFlagObserver extends ContentObserver { + + private final Handler mHandler; + private final ContentResolver mResolver; + + public ShutdownFlagObserver(Handler handler, ContentResolver resolver) { + super(handler); + this.mHandler = handler; + this.mResolver = resolver; + } + + @Override + public void onChange(boolean selfChange) { + //改变以后,查询数据,如果是true的话,就去发送数据 + mHandler.post(() -> { + Cursor query = mResolver.query(Uri.parse(ICGlobalSettingsProvider.SETTINGS), + new String[]{ICDatabaseHelper.sValue}, + ICDatabaseHelper.sKey + "=?", + new String[]{"shutdown_flag"}, + null); + + if (query != null) { + if (query.moveToNext()) { + String isShutDown = query.getString(0); + if ("true".equals(isShutDown)) { + protocolAPIHelper.sendShutdownMsg(); + } + } + query.close(); + } + }); + } +} diff --git a/app/src/main/java/com/enqualcomm/support/service/WeTalkMsgObserver.java b/app/src/main/java/com/enqualcomm/support/service/WeTalkMsgObserver.java index a746a78f..7e4c6786 100644 --- a/app/src/main/java/com/enqualcomm/support/service/WeTalkMsgObserver.java +++ b/app/src/main/java/com/enqualcomm/support/service/WeTalkMsgObserver.java @@ -47,7 +47,6 @@ public class WeTalkMsgObserver extends ContentObserver { //todo:还有类型也要查询出来 int type = query.getInt(query.getColumnIndex("type")); query.close(); - if (type == ICDatabaseHelper.MessageType.VOICE) { protocolAPIHelper.sendVoice(duration, remoteNum, content, lastPathSegment); } else if (type == ICDatabaseHelper.MessageType.PIC) { diff --git a/app/src/main/java/com/ic/protocols/protocolAPIHelper.java b/app/src/main/java/com/ic/protocols/protocolAPIHelper.java index 0c7e5ea9..4d118829 100644 --- a/app/src/main/java/com/ic/protocols/protocolAPIHelper.java +++ b/app/src/main/java/com/ic/protocols/protocolAPIHelper.java @@ -97,6 +97,28 @@ public class protocolAPIHelper { } } + public static void sendShutdownMsg() { + switch (Config.protocol_no) { + case Config.PROTOCOL_JIAI: + break; + case Config.PROTOCOL_BEEHOME: + break; + case Config.PROTOCOL_IC: + break; + case Config.PROTOCOL_FZD: + break; + case Config.PROTOCOL_MQTT: + break; + case PROTOCOL_ANAN: + break; + case Config.PROTOCOL_S123: + protocols123_handler.sendShutDownMsg(); + break; + case Config.PROTOCOL_GATOR: + break; + } + } + /* 返回true 表示 cmd 全部解析成功 返回false表示 cmd至少有一条解析失败,失败的数据归入buffer,下一次识别接着使用 diff --git a/app/src/main/java/com/ic/protocols/protocol_s123.java b/app/src/main/java/com/ic/protocols/protocol_s123.java index ac8dd348..77a88ed2 100644 --- a/app/src/main/java/com/ic/protocols/protocol_s123.java +++ b/app/src/main/java/com/ic/protocols/protocol_s123.java @@ -209,6 +209,7 @@ public class protocol_s123 { BPMK,//关闭麦克风 APMK,//关闭麦克风 APGJ,//关机前的确定 + BPGJ,//关机前的确定 APFX,//飞行模式开关 BP75,//闹钟, BPPH,//拨号功能开关 @@ -377,6 +378,31 @@ public class protocol_s123 { mRuntime = runtime; } + public void sendShutDownMsg() { + if (mConnection != null) { + mConnection.send(APGJ(mRuntime)); + } + } + + /** + * 关机前确认 + * + * @return + */ + public StringMessage APGJ(Runtime runtime) { + //IW:标识符 + //APGJ:命令字 + //353456789012345: 设备IMEI号,固定15位 + //#:结束符 + //IWAPGJ,353456789012345# + //说明:用于表示终端要关机了,收到回复后即可关机。 + return genStringMessage(cmdMap.get(CMD_TYPE.APGJ), + new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APGJ)) + .append(runtime.IMEI()) + .append(CMDSPLIT) + .append(CMDEND).toString()); + } + public static String getPhoneStatus(Runtime mRuntime) { TelephonyManager tm = (TelephonyManager) mRuntime .getContextProxy().context.getSystemService(Context.TELEPHONY_SERVICE); @@ -3502,6 +3528,11 @@ public class protocol_s123 { ICLogger.d("收到服务器设置快捷短语的指令."); handleBPSM(cmd); break; + case BPGJ: + ICLogger.d("服务器收到关机指令"); + //去关机 + handleBPGJ(); + break; case APTM: break; case APCH: @@ -3623,6 +3654,20 @@ public class protocol_s123 { return ret; } + private void handleBPGJ() { + //修改数据库里的关机值 + ContentResolver resolver = mRuntime.getContextProxy().getResolver(); + ContentValues values = new ContentValues(); + values.put(ICDatabaseHelper.sKey, "shutdown_flag"); + values.put(ICDatabaseHelper.sValue, "false"); + resolver.insert(Uri.parse(ICGlobalSettingsProvider.SETTINGS), values); + //执行关机操作 + Intent intent = new Intent(); + intent.setAction("com.ic.system.SHUTDOWN_CMD"); + mRuntime.getContextProxy().context.sendBroadcast(intent); + } + + /** * IWBPSM,353456789012345,080835,1,2,4f60597dff0c8fd991cc6b635e383002@5f0059cb4e0a8bfe3002# * 快捷指令语设置