handle 5% battery lev shutdown and report.
authorTrillGates <williamtrillgates@gmail.com>
Sat, 14 Aug 2021 07:54:51 +0000 (15:54 +0800)
committerTrillGates <williamtrillgates@gmail.com>
Sat, 14 Aug 2021 07:54:51 +0000 (15:54 +0800)
app/src/main/java/com/enqualcomm/support/utils/BatteryUtil.java
app/src/main/java/com/ic/protocols/protocol_s123.java

index 6509203..5fd2be5 100644 (file)
@@ -23,7 +23,9 @@ import com.enqualcomm.support.provider.ICDatabaseHelper;
 import com.enqualcomm.support.provider.WarningItemProvider;
 import com.enqualcomm.support.service.AntiMonitorService;
 import com.enqualcomm.support.service.AudioService;
+import com.enqualcomm.support.service.Deliver;
 import com.ic.protocols.protocolAPIHelper;
+import com.ic.protocols.protocol_s123;
 
 import static android.os.BatteryManager.BATTERY_STATUS_CHARGING;
 import static android.os.BatteryManager.BATTERY_STATUS_DISCHARGING;
@@ -123,7 +125,7 @@ public class BatteryUtil {
             }
         }
     };
-    private Handler mHandler = null;
+    private static Handler mHandler = null;
     PowerManager.WakeLock mWakeLock = null;
 
     private static void play_waning_notify(Context context) {
@@ -219,18 +221,21 @@ public class BatteryUtil {
             //Deliver.sendLocationMSG( protocolAPIHelper.getWarningMSG(runtime));
             ICLogger.i("triggerSOSLocationProcess ");
             LocationClient.getInstance().triggerSOSLocationProcess();
+            //通知后台,我要关机了,然后执行关机
+            Deliver.sendLocationMSG(protocol_s123.APGJ(runtime));
+            //延时1秒钟
+            mHandler.postDelayed(() -> {
+                CoreService.DevliverStringMessage("poweroff");
+            }, 1000);
         }
     }
 
     private void send_batterylow_event_broadcast(Context context, int batlow) {
-        mHandler.post(new Runnable() {
-            @Override
-            public void run() {
-                Intent intent = new Intent();
-                intent.setAction(ACTION_BATTERYLOW);
-                intent.putExtra(KEY_BATTERY_EVENT, batlow);
-                context.sendBroadcast(intent);
-            }
+        mHandler.post(() -> {
+            Intent intent = new Intent();
+            intent.setAction(ACTION_BATTERYLOW);
+            intent.putExtra(KEY_BATTERY_EVENT, batlow);
+            context.sendBroadcast(intent);
         });
     }
 
index da97dcb..1319ec4 100644 (file)
@@ -47,6 +47,7 @@ import com.enqualcomm.support.utils.CameraUtil;
 import com.enqualcomm.support.utils.Connection;
 import com.enqualcomm.support.utils.ICAudioManager;
 import com.enqualcomm.support.utils.ICLogger;
+import com.enqualcomm.support.utils.ProfileManager;
 import com.enqualcomm.support.utils.SharePreferenceUtil;
 import com.enqualcomm.support.utils.TemperatureUtil;
 import com.enqualcomm.support.utils.TimeUtil;
@@ -195,8 +196,6 @@ public class protocol_s123 {
         BP94,
         AP03,//心跳包
         BP03,
-        AP05,//语音查询接收
-        BP05,
         AP07,//语音上行
         BP07,
         BPAL,//报警与地址回复
@@ -216,6 +215,8 @@ public class protocol_s123 {
         APFF,//定位数据包
         BPFF,
         /* 服务器发起*/
+        BP45,//静音开关
+        AP45,
         BPTW,//测量体温
         APTW,
         AP12,
@@ -339,8 +340,6 @@ public class protocol_s123 {
         cmdMap.put(CMD_TYPE.BP94, "BP94");
         cmdMap.put(CMD_TYPE.AP03, "AP03");
         cmdMap.put(CMD_TYPE.BP03, "BP03");
-        cmdMap.put(CMD_TYPE.AP05, "AP05");
-        cmdMap.put(CMD_TYPE.BP05, "BP05");
         cmdMap.put(CMD_TYPE.AP07, "AP07");
         cmdMap.put(CMD_TYPE.BP07, "BP07");
         cmdMap.put(CMD_TYPE.BPAL, "BPAL");
@@ -361,6 +360,8 @@ public class protocol_s123 {
         cmdMap.put(CMD_TYPE.APFF, "APFF");
         cmdMap.put(CMD_TYPE.BPFF, "BPFF");
         /* 服务器发起*/
+        cmdMap.put(CMD_TYPE.BP45, "BP45");
+        cmdMap.put(CMD_TYPE.AP45, "AP45");
         cmdMap.put(CMD_TYPE.BPTW, "BPTW");
         cmdMap.put(CMD_TYPE.APTW, "APTW");
         cmdMap.put(CMD_TYPE.AP12, "AP12");
@@ -527,7 +528,7 @@ public class protocol_s123 {
      *
      * @return
      */
-    public StringMessage APGJ(Runtime runtime) {
+    public static StringMessage APGJ(Runtime runtime) {
         //IW:标识符
         //APGJ:命令字
         //353456789012345: 设备IMEI号,固定15位
@@ -1109,8 +1110,6 @@ public class protocol_s123 {
     }
 
     //关机
-
-
     public static StringMessage AP31(String index) {
         return genStringMessage("AP31", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP31))
                 .append(CMDSPLIT).append(index)
@@ -1413,40 +1412,20 @@ public class protocol_s123 {
     }
 
 
-// AP05命令L02服务器不适用
-//    public static String AP05(boolean recvFlag){
-//
-////        IWAP05,1#
-//        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP05))
-//                .append(CMDSPLIT).append(recvFlag?1:0)
-//                .append(CMDEND).toString();
-//
-//    }
-//
-//
-//    public void handleBP05(String cmd){
-////        IWBP05,6#
-//        String[] cmdlist=cmd.split(CMDSPLIT);
-//        if (cmdlist.length>1){
-//            ICLogger.i(" 服务器有 " +cmdlist[1]+" 条语音未接收!");
-//        }
-//    }
-
-
     public static byte[] AP07(String packetTime, int count, int index, int datalen, byte[] amrdata) {
-//IWAP07,20140818064408,6,1,1024,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#
-//说明:
-//IW:标识符
-//AP07 : 命令字符
-//20140818064408 :yyyyMMddHHmmss 格式的年月日时分秒,设备录音时间
-//6:语音包分包总数
-//1 :当前包数,第一包为1,第二包为2,。。。。。。同一个语音包的语音时间相同
-//1024 :语音包长度
-//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:当前音频数据, 每个音频数据包大小为1024字节,最后一包不足1024的取实际字节数
-//语音包上传规则:
-//按包次序依次上传,上传后如果没有收到服务器的响应包,则继续上传该语音包。
-//收到设备回复确认数据包接收成功状态后,继续开始依次上传下一个数据包。。。。。。
-//如果设备回复确认数据包接收失败状态,则重复发送上一个数据包
+        //IWAP07,20140818064408,6,1,1024,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX#
+        //说明:
+        //IW:标识符
+        //AP07 : 命令字符
+        //20140818064408 :yyyyMMddHHmmss 格式的年月日时分秒,设备录音时间
+        //6:语音包分包总数
+        //1 :当前包数,第一包为1,第二包为2,。。。。。。同一个语音包的语音时间相同
+        //1024 :语音包长度
+        //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:当前音频数据, 每个音频数据包大小为1024字节,最后一包不足1024的取实际字节数
+        //语音包上传规则:
+        //按包次序依次上传,上传后如果没有收到服务器的响应包,则继续上传该语音包。
+        //收到设备回复确认数据包接收成功状态后,继续开始依次上传下一个数据包。。。。。。
+        //如果设备回复确认数据包接收失败状态,则重复发送上一个数据包
 
 
         String sb = new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP07))
@@ -1940,7 +1919,6 @@ public class protocol_s123 {
         } else {
             log("handleBP28", "format Error");
 //            connection.send(genStringMessage("AP28",AP28(Name,appendIndex,packetCount,currentId,0)));
-
         }
 
     }
@@ -3441,10 +3419,6 @@ public class protocol_s123 {
                 //通知下面线程状态变化
                 mConnection.DeliverCMDMessageToSystem("heartbeat", cmd);
                 break;
-            case AP05:
-                break;
-            case BP05:
-                break;
             case AP07:
                 break;
             case BP07:
@@ -3479,7 +3453,6 @@ public class protocol_s123 {
                 //设置工作模式
                 handleBP33(mConnection, mRuntime, cmd);
                 mConnection.DeliverCMDMessageToSystem("setWorkMod", cmd);//通知下面线程状态变化
-
                 break;
             case BP34:
                 //设置工作模式
@@ -3524,14 +3497,12 @@ public class protocol_s123 {
                 ICLogger.i("收到服务器恢复出厂设置命令BP17");
                 mConnection.DeliverCMDMessageToSystem("FactoryReset", cmd);//通知下面线程状态变化
                 break;
-
             case BP18:
                 //收到重启
                 handleBP18(mConnection, cmd);
                 ICLogger.i("收到服务器重启命令BP18");
                 mConnection.DeliverCMDMessageToSystem("Reboot", cmd);//通知下面线程状态变化
                 break;
-
             case BP31:
                 //收到关机
                 handleBP31(mConnection, cmd);
@@ -3720,6 +3691,10 @@ public class protocol_s123 {
                 ICLogger.d("服务器收到签到信息.");
                 handleBPRP();
                 break;
+            case BP45://静音开关
+                ICLogger.d("收到服务器静音开关指令.");
+                handleBP45(cmd);
+                break;
             case APTM:
                 break;
             case APCH:
@@ -3846,6 +3821,33 @@ public class protocol_s123 {
         return ret;
     }
 
+    /**
+     * 静音开关控制
+     *
+     * @param cmd
+     */
+    private void handleBP45(String cmd) {
+        String[] split = cmd.split(CMDSPLIT);
+        if (split.length == 4) {
+            String indexId = split[2];
+            String value = split[3];
+            Context context = mRuntime.getContextProxy().context;
+            AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+            //更新设置
+            if ("1".equals(value)) {
+                ProfileManager.silentAll(context, audioManager);
+            } else {
+                ProfileManager.restoreSilent(context, audioManager);
+            }
+            //修改数据库
+            updateSettingValue("key_silent", value);
+            //返回消息
+            responseWithId(cmdMap.get(CMD_TYPE.AP45), indexId, value);
+        } else {
+            ICLogger.d("parse error==> " + cmd);
+        }
+    }
+
     //测量体温
     //响应服务器
     private void handleBPTW(String cmd) {