From: TrillGates Date: Wed, 4 Aug 2021 08:51:40 +0000 (+0800) Subject: completed airmode report. X-Git-Url: http://git.snicker.com.cn/sitemap.xml?a=commitdiff_plain;h=6d2ce6e08438878803f5fb4e68c4781ac9ea3a64;p=protocol_srv.git completed airmode report. --- diff --git a/app/src/main/java/com/enqualcomm/support/CoreService.java b/app/src/main/java/com/enqualcomm/support/CoreService.java index ce116eff..5b52de01 100644 --- a/app/src/main/java/com/enqualcomm/support/CoreService.java +++ b/app/src/main/java/com/enqualcomm/support/CoreService.java @@ -37,9 +37,9 @@ 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.AirplaneModeObserver; import com.enqualcomm.support.service.AntiMonitorService; import com.enqualcomm.support.service.CheckSIM; import com.enqualcomm.support.service.Deliver; @@ -152,6 +152,9 @@ public class CoreService extends Service { public static Handler mHandler = null; // public static Handler mHandler=new Handler(); private static ICSmsManager smsManager = null; + private ShutdownFlagObserver shutdownFlagObserver; + private WeTalkMsgObserver weTalkMsgObserver; + private AirplaneModeObserver airplaneModeObserver; public String getServerAlive() { return DeviceInfoUtil.getDeviceInfo(runtime); @@ -995,15 +998,21 @@ public class CoreService extends Service { //观察微聊消息变化 //有新消息就发送出去 ContentResolver resolver = runtime.getContextProxy().getResolver(); - WeTalkMsgObserver weTalkMsgObserver = new WeTalkMsgObserver(mHandler, resolver); + weTalkMsgObserver = new WeTalkMsgObserver(mHandler, resolver); resolver.registerContentObserver( Uri.parse(WeTalkMessageProvider.MESSAGES_SEND), true, weTalkMsgObserver ); - ShutdownFlagObserver shutdownFlagObserver = new ShutdownFlagObserver(mHandler, resolver); - resolver.registerContentObserver(Uri.parse(ShootTextProvider.SHOOT_TEXT), true, + shutdownFlagObserver = new ShutdownFlagObserver(mHandler, resolver); + resolver.registerContentObserver(Uri.parse(SETTINGS + ".shutdown_action_flag"), + true, shutdownFlagObserver); + airplaneModeObserver = new AirplaneModeObserver(mHandler, resolver); + resolver.registerContentObserver(Uri.parse(SETTINGS + ".fly_mode_action_flag"), + true, + airplaneModeObserver); + //启动结束设置标志位,让心率和体温检测可以正常执行。 server_starting = false; @@ -1811,7 +1820,9 @@ public class CoreService extends Service { unregisterReceiver(this.screenOnReceiver); unregisterReceiver(this.AtCallbackBroadcastReceiver); batteryUtil.unregisterBroadReceiver(); - + getContentResolver().unregisterContentObserver(airplaneModeObserver); + getContentResolver().unregisterContentObserver(shutdownFlagObserver); + getContentResolver().unregisterContentObserver(weTalkMsgObserver); } @Nullable diff --git a/app/src/main/java/com/enqualcomm/support/service/AirplaneModeObserver.java b/app/src/main/java/com/enqualcomm/support/service/AirplaneModeObserver.java new file mode 100644 index 00000000..75bdd123 --- /dev/null +++ b/app/src/main/java/com/enqualcomm/support/service/AirplaneModeObserver.java @@ -0,0 +1,43 @@ +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.ICGlobalSettingsProvider; +import com.ic.protocols.protocolAPIHelper; + +public class AirplaneModeObserver extends ContentObserver { + + private final Handler mHandler; + private final ContentResolver mResolver; + + public AirplaneModeObserver(Handler handler, ContentResolver resolver) { + super(handler); + this.mHandler = handler; + this.mResolver = resolver; + } + + @Override + public void onChange(boolean selfChange) { + //获取值,发起请求 + mHandler.post(() -> { + Cursor query = mResolver.query(Uri.parse(ICGlobalSettingsProvider.SETTINGS), + new String[]{"s_value"}, "s_value=?", + new String[]{"fly_mode_action_flag"}, + null); + + if (query != null) { + if (query.moveToNext()) { + String isFlyMode = query.getString(0); + if ("true".equals(isFlyMode)) { + protocolAPIHelper.sendFlyModeMsg(); + } + } + query.close(); + } + }); + } +} diff --git a/app/src/main/java/com/ic/protocols/protocolAPIHelper.java b/app/src/main/java/com/ic/protocols/protocolAPIHelper.java index 4d118829..86770241 100644 --- a/app/src/main/java/com/ic/protocols/protocolAPIHelper.java +++ b/app/src/main/java/com/ic/protocols/protocolAPIHelper.java @@ -119,6 +119,28 @@ public class protocolAPIHelper { } } + public static void sendFlyModeMsg() { + 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.sendFlyModeMsg(); + 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 0120bb26..14d30102 100644 --- a/app/src/main/java/com/ic/protocols/protocol_s123.java +++ b/app/src/main/java/com/ic/protocols/protocol_s123.java @@ -91,6 +91,13 @@ public class protocol_s123 { public static final String defaultServerIP = "watch.jiai.pro"; public static final int defaultServerPort = 8090; + /** + * 发关飞行模式请求信息 + */ + public void sendFlyModeMsg() { + mConnection.send(APFX(mRuntime)); + } + public enum CMD_TYPE { /*终端发起*/ AP00,//登录包 @@ -211,6 +218,7 @@ public class protocol_s123 { APGJ,//关机前的确定 BPGJ,//关机前的确定 APFX,//飞行模式开关 + BPFX,//飞行模式开关 BP75,//闹钟, BPPH,//拨号功能开关 APPH, @@ -349,6 +357,7 @@ public class protocol_s123 { cmdMap.put(CMD_TYPE.BPMK, "BPMK"); cmdMap.put(CMD_TYPE.APMK, "APMK"); cmdMap.put(CMD_TYPE.APFX, "APFX"); + cmdMap.put(CMD_TYPE.BPFX, "BPFX"); cmdMap.put(CMD_TYPE.BPPH, "BPPH"); cmdMap.put(CMD_TYPE.APPH, "APPH"); cmdMap.put(CMD_TYPE.BPSS, "BPSS"); @@ -384,6 +393,24 @@ public class protocol_s123 { } } + + /** + * 飞行模式打开请求 + * + * @param runtime + * @return + */ + public StringMessage APFX(Runtime runtime) { + //IW:标识符 + //APFX:命令字 + //353456789012345: 设备IMEI号,固定15位 + //#:结束符 + return genStringMessage(cmdMap.get(CMD_TYPE.APFX), + new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APFX)) + .append(runtime.IMEI()) + .append(CMDEND).toString()); + } + /** * 关机前确认 * @@ -399,7 +426,6 @@ public class protocol_s123 { return genStringMessage(cmdMap.get(CMD_TYPE.APGJ), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APGJ)) .append(runtime.IMEI()) - .append(CMDSPLIT) .append(CMDEND).toString()); } @@ -3478,7 +3504,7 @@ public class protocol_s123 { break; case BP75: ICLogger.d("收到闹钟设置指令BP75"); - handleBP75(mConnection, mRuntime, cmd); + handleBP75(mRuntime, cmd); break; case BPDH: ICLogger.i("聆听"); @@ -3533,6 +3559,10 @@ public class protocol_s123 { //去关机 handleBPGJ(); break; + case BPFX: + ICLogger.d("服务器收到飞行模式打开请求."); + handleBPFX(); + break; case APTM: break; case APCH: @@ -3654,17 +3684,21 @@ public class protocol_s123 { return ret; } + /** + * 处理飞行模式打开的结果反馈,修改设置项的值 + */ + private void handleBPFX() { + updateSettingValue("fly_mode_action_flag", "false"); + } + private void handleBPGJ() { //修改数据库里的关机值 - ContentResolver resolver = mRuntime.getContextProxy().getResolver(); - ContentValues values = new ContentValues(); - values.put(ICDatabaseHelper.sKey, "shutdown_action_flag"); - values.put(ICDatabaseHelper.sValue, "false"); - resolver.insert(Uri.parse(ICGlobalSettingsProvider.SETTINGS), values); + updateSettingValue("shutdown_action_flag", "false"); //执行关机操作 - Intent intent = new Intent(); - intent.setAction("com.ic.system.SHUTDOWN_CMD"); - mRuntime.getContextProxy().context.sendBroadcast(intent); + //不管是否收到都执行关机好了,UI上转个圈,延时10秒钟完事 + //Intent intent = new Intent(); + //intent.setAction("com.ic.system.SHUTDOWN_CMD"); + //mRuntime.getContextProxy().context.sendBroadcast(intent); } @@ -3908,11 +3942,10 @@ public class protocol_s123 { /** * 闹钟数据 * - * @param mConnection * @param mRuntime * @param cmd */ - private void handleBP75(Connection mConnection, Runtime mRuntime, String cmd) { + private void handleBP75(Runtime mRuntime, String cmd) { //解析数据 ICLogger.d("cmd is == > " + cmd); // IWBP75,