completed airmode report.
authorTrillGates <williamtrillgates@gmail.com>
Wed, 4 Aug 2021 08:51:40 +0000 (16:51 +0800)
committerTrillGates <williamtrillgates@gmail.com>
Wed, 4 Aug 2021 08:51:40 +0000 (16:51 +0800)
app/src/main/java/com/enqualcomm/support/CoreService.java
app/src/main/java/com/enqualcomm/support/service/AirplaneModeObserver.java [new file with mode: 0644]
app/src/main/java/com/ic/protocols/protocolAPIHelper.java
app/src/main/java/com/ic/protocols/protocol_s123.java

index ce116ef..5b52de0 100644 (file)
@@ -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 (file)
index 0000000..75bdd12
--- /dev/null
@@ -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();
+            }
+        });
+    }
+}
index 4d11882..8677024 100644 (file)
@@ -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,下一次识别接着使用
index 0120bb2..14d3010 100644 (file)
@@ -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,