refactor codes.
authorTrillGates <williamtrillgates@gmail.com>
Tue, 3 Aug 2021 08:33:56 +0000 (16:33 +0800)
committerTrillGates <williamtrillgates@gmail.com>
Tue, 3 Aug 2021 08:33:56 +0000 (16:33 +0800)
app/src/main/java/com/ic/protocols/protocol_s123.java

index 841ee1b..8d956fe 100644 (file)
@@ -195,8 +195,10 @@ public class protocol_s123 {
         BPMK,//关闭麦克风
         APGJ,//关机前的确定
         APFX,//飞行模式开关
+        BP75,//闹钟,
+        BPPH,//拨号功能开关
+        APPH,
         UNKNOWN_CMD,
-        BP75,//闹钟
     }
 
     private static HashMap<CMD_TYPE, String> cmdMap;
@@ -319,6 +321,8 @@ public class protocol_s123 {
         cmdMap.put(CMD_TYPE.BPCM, "BPCM");
         cmdMap.put(CMD_TYPE.BPMK, "BPMK");
         cmdMap.put(CMD_TYPE.APFX, "APFX");
+        cmdMap.put(CMD_TYPE.BPPH, "BPPH");
+        cmdMap.put(CMD_TYPE.APPH, "APPH");
     }
 
 
@@ -581,11 +585,12 @@ public class protocol_s123 {
         // 460,0,9520,3671,
         // Home|74-DE-2B-44-88-8C|97& Home1|74-DE-2B-44-88-8C|97&Home2|74-DE-2B-44-88-8C|97& Home3|74-DE-2B-44-88-8C|97#
 //        IWAP01191230A2232.9807N11404.9355E000.1161320000.0006000910000000,460,00,9520,3671,#
-        return genStringMessage(cmdMap.get(CMD_TYPE.AP01), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP01)).append(TimeUtil.getShortDate())
-                .append(ds.getGPSData()).append(TimeUtil.getShortTime()).append(ds.getGPSHeading()).append(String.format("%03d", abs(ds.getSignalStrength())))
-                .append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")
-                .append(ds.getProtection()).append(ds.getWorkModeStr()).append(CMDSPLIT)
-                .append(ds.getLBSData()).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString());
+        return genStringMessage(cmdMap.get(CMD_TYPE.AP01),
+                new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP01)).append(TimeUtil.getShortDate())
+                        .append(ds.getGPSData()).append(TimeUtil.getShortTime()).append(ds.getGPSHeading()).append(String.format("%03d", abs(ds.getSignalStrength())))
+                        .append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")
+                        .append(ds.getProtection()).append(ds.getWorkModeStr()).append(CMDSPLIT)
+                        .append(ds.getLBSData()).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString());
     }
 
     //处理 定位 BP01
@@ -1551,28 +1556,28 @@ public class protocol_s123 {
     //处理 BP28 语音消息
     public void handleBP28(Connection connection, String cmd, Runtime runtime, byte[] bytes) {
         //log("handleBP28 msg"+cmd);
-/**
- * IWBP28, D3590D54,XXXX,6,1,1024,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#
- * 说明:
- * IW:标识符
- * BP28 : 命令字符
- * D3590D54:UNICODE编码,发送者名称
- * XXXX: 附加信息,在响应数据包时,将附加信息原样响应,类似流水号
- * 6:语音包分包总数
- * 1 :当前包数,第一包为1,第二包为2,。。。。。。同一个语音包的语音时间相同
- * 1024 :语音包长度
- * XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:当前音频数据, 每个音频数据包大小为1024字节,最后一包不足1024的取实际字节数
- * 语音包上传规则:
- * 按包次序依次上传,上传后如果没有收到服务器的响应包,则继续上传该语音包。
- * 收到设备回复确认数据包接收成功状态后,继续开始依次上传下一个数据包。。。。。。
- * 如果设备回复确认数据包接收失败状态,则重复发送上一个数据包
- * 设备响应:     IWAP28,D3590D54,XXXX,6,1,1#
- * D3590D54:UNICODE编码,发送者名称
- * XXXX: 附加信息,原样返回
- * 6:语音包分包总数
- * 1:当前设备收到的是第几个包
- * 1:表示设备接受数据成功,0表示设备接受数据失败
- */
+        /**
+         * IWBP28, D3590D54,XXXX,6,1,1024,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#
+         * 说明:
+         * IW:标识符
+         * BP28 : 命令字符
+         * D3590D54:UNICODE编码,发送者名称
+         * XXXX: 附加信息,在响应数据包时,将附加信息原样响应,类似流水号
+         * 6:语音包分包总数
+         * 1 :当前包数,第一包为1,第二包为2,。。。。。。同一个语音包的语音时间相同
+         * 1024 :语音包长度
+         * XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:当前音频数据, 每个音频数据包大小为1024字节,最后一包不足1024的取实际字节数
+         * 语音包上传规则:
+         * 按包次序依次上传,上传后如果没有收到服务器的响应包,则继续上传该语音包。
+         * 收到设备回复确认数据包接收成功状态后,继续开始依次上传下一个数据包。。。。。。
+         * 如果设备回复确认数据包接收失败状态,则重复发送上一个数据包
+         * 设备响应:     IWAP28,D3590D54,XXXX,6,1,1#
+         * D3590D54:UNICODE编码,发送者名称
+         * XXXX: 附加信息,原样返回
+         * 6:语音包分包总数
+         * 1:当前设备收到的是第几个包
+         * 1:表示设备接受数据成功,0表示设备接受数据失败
+         */
         String Name;
         String appendIndex;
         int packetCount;
@@ -2173,9 +2178,7 @@ public class protocol_s123 {
 
 
     public void handleBPHP() {
-
         ICLogger.i("服务器收到APHP 心率血压血氧 !");
-
     }
 
     public static StringMessage APDE(String id) {
@@ -2191,20 +2194,20 @@ public class protocol_s123 {
     }
 
     public void handleBPDE(Connection connection, String cmd, Runtime runtime) {
-/***
- * 示例:
- * IWBPDE,867400020316612,853676,0
- * 说明:
- * IW:标识符
- * BPDE: 命令字符
- * 353456789012345:设备IMEI或者ID
- * 080835 :指令流水号
- * 0:进入禁止区域 1离开禁止区域
- * #:结尾标识符
- * 设备响应:     IWAPDE,080835#
- * 080835:指令流水号
- * 说明:   本消息适用所有终端
- */
+        /***
+         * 示例:
+         * IWBPDE,867400020316612,853676,0
+         * 说明:
+         * IW:标识符
+         * BPDE: 命令字符
+         * 353456789012345:设备IMEI或者ID
+         * 080835 :指令流水号
+         * 0:进入禁止区域 1离开禁止区域
+         * #:结尾标识符
+         * 设备响应:     IWAPDE,080835#
+         * 080835:指令流水号
+         * 说明:   本消息适用所有终端
+         */
         String[] list = cmd.split(CMDSPLIT);
         if (list.length == 4) {
 
@@ -2240,19 +2243,19 @@ public class protocol_s123 {
     }
 
     public void handleBPDG(Connection connection, String cmd, Runtime runtime) {
-/**
- * 示例:
- * IWBPDG,353456789012345,1,30.0,37.3 #
- * 说明:IWBPDG,867400020316612,502102,1,33,44
- * IW:标识符
- * BPDG: 命令字符
- * 353456789012345:设备IMEI或者ID
- * 080835 :指令流水号
- * 1:开关 1开,  0 关
- * 30.0: 低温阀值
- * 37.3: 高温阀值
- * #:结尾标识符
- * */
+        /**
+         * 示例:
+         * IWBPDG,353456789012345,1,30.0,37.3 #
+         * 说明:IWBPDG,867400020316612,502102,1,33,44
+         * IW:标识符
+         * BPDG: 命令字符
+         * 353456789012345:设备IMEI或者ID
+         * 080835 :指令流水号
+         * 1:开关 1开,  0 关
+         * 30.0: 低温阀值
+         * 37.3: 高温阀值
+         * #:结尾标识符
+         * */
         String[] list = cmd.split(CMDSPLIT);
         if (list.length == 6) {
 
@@ -2643,39 +2646,14 @@ public class protocol_s123 {
                 //封装数据
                 weatherInfo.add(itemFirst);
                 if (i == 0) {
-
                     //插入天气类型
-                    ContentValues wtCodeValues = new ContentValues();
-                    wtCodeValues.put(ICDatabaseHelper.sKey, "weather_type");
-                    wtCodeValues.put(ICDatabaseHelper.sValue, weather_id);
-                    mRuntime.getContextProxy().getResolver().insert(
-                            Uri.parse(ICGlobalSettingsProvider.SETTINGS),
-                            wtCodeValues
-                    );
+                    updateSettingValue("weather_type", weather_id);
                     //插入天气当前温度
-                    ContentValues tempValues = new ContentValues();
-                    tempValues.put(ICDatabaseHelper.sKey, "weather_temp");
-                    tempValues.put(ICDatabaseHelper.sValue, temp_current);
-                    mRuntime.getContextProxy().getResolver().insert(
-                            Uri.parse(ICGlobalSettingsProvider.SETTINGS),
-                            tempValues
-                    );
+                    updateSettingValue("weather_temp", temp_current);
                     //城市
-                    ContentValues locationValues = new ContentValues();
-                    locationValues.put(ICDatabaseHelper.sKey, "weather_location");
-                    locationValues.put(ICDatabaseHelper.sValue, cityName);
-                    mRuntime.getContextProxy().getResolver().insert(
-                            Uri.parse(ICGlobalSettingsProvider.SETTINGS),
-                            locationValues
-                    );
+                    updateSettingValue("weather_location", cityName);
                     //天气描述
-                    ContentValues descriptionValues = new ContentValues();
-                    descriptionValues.put(ICDatabaseHelper.sKey, "weather_desc");
-                    descriptionValues.put(ICDatabaseHelper.sValue, weather_name);
-                    mRuntime.getContextProxy().getResolver().insert(
-                            Uri.parse(ICGlobalSettingsProvider.SETTINGS),
-                            descriptionValues
-                    );
+                    updateSettingValue("weather_desc", weather_name);
                 }
             }
             ICLogger.i(cityName + " \n" + sb.toString());
@@ -3395,8 +3373,11 @@ public class protocol_s123 {
             case BP47://震动设置
                 handleBP47(mConnection, mRuntime, cmd);
                 break;
-
-
+            case BPPH:
+                //收到服务器拨号功能开关
+                ICLogger.d("收到服务器拨号功能开关.");
+                handleBPPH(mConnection, mRuntime, cmd);
+                break;
             case APTM:
                 break;
             case APCH:
@@ -3505,6 +3486,51 @@ public class protocol_s123 {
 
     }
 
+    /**
+     * 处理拨号开关,数据入库,进入拨号前要获取一下,是否可以拨号,
+     *
+     * @param mConnection
+     * @param mRuntime
+     * @param cmd         IWBPPH,353456789012345,080835,1#
+     */
+    private void handleBPPH(Connection mConnection, Runtime mRuntime, String cmd) {
+        //解析数据
+        String[] split = cmd.split(CMDSPLIT);
+        if (split.length == 4) {
+            try {
+                String id = split[2];
+                String value = split[3];
+                StringMessage apph = APPH(id);
+                mConnection.send(apph);
+                //更新数据库
+
+                //TODO:
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        } else {
+            ICLogger.d("handleBPPH error...");
+        }
+    }
+
+    private void updateSettingValue(String key, String value) {
+        ContentResolver resolver = mRuntime.getContextProxy().getResolver();
+        ContentValues values = new ContentValues();
+        values.put(ICDatabaseHelper.sKey, key);
+        //把值保存到数据库中,相机会就监听数据库值的变化,做出响应
+        values.put(ICDatabaseHelper.sValue, value);
+        resolver.insert(Uri.parse(ICGlobalSettingsProvider.SETTINGS), values);
+    }
+
+    public static StringMessage APPH(String id) {
+        //设备响应:      IWAPS4,080835#
+        //080835:指令流水号
+        return genStringMessage(cmdMap.get(CMD_TYPE.APPH),
+                new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APPH))
+                        .append(CMDSPLIT).append(id)
+                        .append(CMDEND).toString());
+    }
+
     /**
      * 闹钟数据
      *
@@ -3602,12 +3628,9 @@ public class protocol_s123 {
             //IWBPMK,353456789012345,080835,1#
             String[] split = cmd.split(CMDSPLIT);
             if (split.length == 4) {
-                ContentResolver resolver = mRuntime.getContextProxy().getResolver();
-                ContentValues values = new ContentValues();
-                values.put(ICDatabaseHelper.sKey, "is_mic_enable");
-                //把值保存到数据库中,相机会就监听数据库值的变化,做出响应
-                values.put(ICDatabaseHelper.sValue, split[3].replace(CMDEND, ""));
-                resolver.insert(Uri.parse(ICGlobalSettingsProvider.SETTINGS), values);
+                updateSettingValue("is_mic_enable", split[3].replace(CMDEND, ""));
+                //返回消息
+                //TODO:
             } else {
                 ICLogger.d("parse cmd error...");
             }
@@ -3627,12 +3650,7 @@ public class protocol_s123 {
             //IWBPCM,353456789012345,080835,1#
             String[] split = cmd.split(CMDSPLIT);
             if (split.length == 4) {
-                ContentResolver resolver = mRuntime.getContextProxy().getResolver();
-                ContentValues values = new ContentValues();
-                values.put(ICDatabaseHelper.sKey, "is_camera_enable");
-                //把值保存到数据库中,相机会就监听数据库值的变化,做出响应
-                values.put(ICDatabaseHelper.sValue, split[3].replace(CMDEND, ""));
-                resolver.insert(Uri.parse(ICGlobalSettingsProvider.SETTINGS), values);
+                updateSettingValue("is_camera_enable", split[3].replace(CMDEND, ""));
             } else {
                 ICLogger.d("parse cmd error...");
             }