update source
authorsnickersun <snickersun@qq.com>
Tue, 7 Jan 2020 00:32:08 +0000 (08:32 +0800)
committersnickersun <snickersun@qq.com>
Tue, 7 Jan 2020 00:32:08 +0000 (08:32 +0800)
app/src/main/java/com/ic/protocol/LocationClient.java
app/src/main/java/com/ic/protocol/adapter/protocolAPIHelper.java
app/src/main/java/com/ic/protocol/bean/Runtime.java
app/src/main/java/com/ic/protocol/service/Deliver.java
app/src/main/java/com/ic/protocol/service/Initialize.java
app/src/main/java/com/ic/protocol/service/KeepAlive.java
app/src/main/java/com/ic/protocol/service/SynchronousTime.java
app/src/main/java/com/ic/protocol/service/protocolMainServer.java
app/src/main/java/com/ic/protocol/utils/AlarmHelper.java
app/src/main/java/com/ic/protocol/utils/NettyConnection.java

index c7b343c..2be6009 100644 (file)
@@ -75,8 +75,7 @@ public class LocationClient {
   private static ReentrantLock lock = new ReentrantLock();\r
   \r
   private static boolean mHasWifiResult = true;\r
-  \r
-  @SuppressLint("NewApi")\r
+\r
   public static LinkedBlockingDeque<StringMessage> queue = new LinkedBlockingDeque(50);\r
   \r
   private static Runtime runtime;\r
@@ -503,9 +502,10 @@ public class LocationClient {
 //    resolveResult(0, paramInt1, paramInt3, paramDouble1, paramDouble2, paramDouble3, paramFloat1, paramFloat2, paramInt4, paramFloat3, paramLong1, paramLong2, paramDouble4, paramDouble5, paramInt5, this.mPedometer2, paramInt6);\r
   }\r
   \r
-  public void EqcAlgorithmInterfaceMethod2() {\r
+//  public void EqcAlgorithmInterfaceMethod2() {\r
+    public void startGpsLocate() {\r
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {\r
-      Settings.Secure.setLocationProviderEnabled(runtime.getContextProxy().getResolver(), "gps", true);\r
+      Settings.Secure.setLocationProviderEnabled(runtime.getContextProxy().getResolver(), GPS_PROVIDER, true);\r
     }\r
     Single.just(null).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<Object>() {\r
           public void call(Object param1Object) { LocationClient.this.nmeaListener.startListen(); }\r
@@ -525,7 +525,8 @@ public class LocationClient {
   }\r
   \r
   @TargetApi(Build.VERSION_CODES.FROYO)\r
-  public void EqcAlgorithmInterfaceMethod3() {\r
+//  public void EqcAlgorithmInterfaceMethod3() {\r
+  public void stopGpsLocate() {\r
     if (Deliver.is_active_location) {\r
       Deliver.is_active_location = false;\r
       getLocationWakeLock();\r
@@ -536,11 +537,20 @@ public class LocationClient {
         });\r
   }\r
   \r
-  public void EqcAlgorithmInterfaceMethod4() { this.mLbsHelper.getAttchCellInfo(runtime.getContextProxy().getTelephonyManager()); }\r
+//  public void EqcAlgorithmInterfaceMethod4() {\r
+public void updateCellInfo() {\r
+  this.mLbsHelper.getAttchCellInfo(runtime.getContextProxy().getTelephonyManager());\r
+\r
+  }\r
   \r
-  public void EqcAlgorithmInterfaceMethod5(int paramInt) { SimSignalUtil.getInstance((runtime.getContextProxy()).context); }\r
+//  public void EqcAlgorithmInterfaceMethod5(int paramInt) {\r
+ public void updateSimSignalInfo(int paramInt) {\r
+      SimSignalUtil.getInstance((runtime.getContextProxy()).context);\r
+  }\r
   \r
-  public void EqcAlgorithmInterfaceMethod6(int paramInt) {\r
+//  public void EqcAlgorithmInterfaceMethod6(int paramInt) {\r
+  // 飞行模式 1 开启 0 关闭\r
+    public void setAirMode(int paramInt) {\r
     boolean bool1 = this.mSignalUtil.IsAirModeOn();\r
     boolean bool2 = this.mSignalUtil.isScreenON();\r
     switch (paramInt) {\r
@@ -588,7 +598,7 @@ public class LocationClient {
     if (!"".equals(runtime.getKey()) && runtime.getKey() != null) {\r
       this.gSensorListener.startListen(paramWakeLock);\r
       performAlarm(paramWakeLock);\r
-    } \r
+    }\r
   }\r
   \r
   public void onReceive(StringMessage paramStringMessage) {\r
index 55149fa..f2c253f 100644 (file)
@@ -1,6 +1,10 @@
 package com.ic.protocol.adapter;\r
 \r
+import android.util.Log;\r
+\r
 import com.ic.protocol.bean.Runtime;\r
+import com.ic.protocol.bean.StringMessage;\r
+import com.ic.protocol.utils.Connection;\r
 import com.ic.protocol.utils.Logger;\r
 \r
 import java.util.HashMap;\r
@@ -32,6 +36,8 @@ public class protocolAPIHelper {
         BP10,\r
         AP49,//心率上传\r
         BP49,\r
+        APHT,//心率血压上传\r
+        BPHT,\r
         APTM,//基站校时及获取定位\r
         BPTM,\r
         /* 服务器发起*/\r
@@ -90,6 +96,8 @@ public class protocolAPIHelper {
         cmdMap.put(CMD_TYPE.BP10, "BP10");\r
         cmdMap.put(CMD_TYPE.AP49, "AP49");\r
         cmdMap.put(CMD_TYPE.BP49, "BP49");\r
+        cmdMap.put(CMD_TYPE.APTM, "APHT");\r
+        cmdMap.put(CMD_TYPE.BPTM, "BPHT");\r
         cmdMap.put(CMD_TYPE.APTM, "APTM");\r
         cmdMap.put(CMD_TYPE.BPTM, "BPTM");\r
         cmdMap.put(CMD_TYPE.AP12, "AP12");\r
@@ -218,6 +226,7 @@ public class protocolAPIHelper {
                 .append(ds.getTotalStepCount()).append(CMDSPLIT).append(0/*rolltime*/).append(CMDEND).toString();\r
     }\r
 \r
+    /*LBS+GPS混合定位*/\r
     public static String AP01(Runtime ds) {\r
         //示例数据:IWAP01080524A2232.9806N11404.9355E000.1061830323.8706000908000102,\r
         // 460,0,9520,3671,\r
@@ -230,6 +239,7 @@ public class protocolAPIHelper {
                 .append(ds.getLBSData()).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString();\r
     }\r
 \r
+    /*语音下行反馈*/\r
     public static String AP28(String name, String msg, int packagecount, int currentpackageindex, int received_success) {\r
         //示例数据:IWAP28,D3590D54,xxxx,6,1,1#\r
         return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP28))\r
@@ -248,6 +258,183 @@ public class protocolAPIHelper {
 \r
     }\r
 \r
+//设置闹钟\r
+    public void handleBP85(String cmd , Connection connection,Runtime runtime){\r
+//        IWBP85,867155030001063,155312,1,1,0235,12,1,1\r
+//        IWBP85,353456789012345,080835,1,3, 0900,135,1,1@0900 ,135,1,2@0900 ,135,1,3#\r
+//353456789012345:IMEI号,设备唯一ID\r
+//080835 :指令流水号\r
+//1: 表示闹钟总开关,1为开,0 为关\r
+//3: 表示闹钟个数\r
+//0900 ,135,1,1,表示一组闹钟,0900表示早上09:00, 135表示周一周三周五,使用24小时制\r
+//1表示该组闹钟开启或关闭状态   1表示开启  0表示关闭\r
+//1表示吃药提醒\r
+//2 表示喝水提醒\r
+//3 表示久坐提醒\r
+//多组闹钟之间用”@”符号分隔\r
+\r
+        String imei="",cmdindex="0"/*指令流水号*/;\r
+        int     all_alarmswitch=0 /*总开关 1为开,0 为关*/,\r
+                alarmswitch=0 /*1为开,0 为关*/,\r
+                alarmcount=0 /*表示闹钟个数*/;\r
+        String alarmtime="";//0900表示早上09:00\r
+        int alarmtype=1; //1表示吃药提醒 , 2 表示喝水提醒 ,3 表示久坐提醒\r
+        String repeat="";// 135表示周一周三周五,使用24小时制\r
+        String[] datalist= cmd.split("@");\r
+        if (datalist.length >0){\r
+            for (int i =0 ; i< datalist.length;i++){\r
+                String [] cmdarglist=datalist[i].split(",");\r
+\r
+                if (i == 0){\r
+                    if (cmdarglist.length == 9){\r
+                        imei=cmdarglist[1];\r
+                        cmdindex=cmdarglist[2];\r
+                        all_alarmswitch=Integer.valueOf(cmdarglist[3]);\r
+                        alarmcount=Integer.valueOf(cmdarglist[4]);\r
+                        alarmtime=cmdarglist[5];\r
+                        repeat=cmdarglist[6];\r
+                        alarmswitch=Integer.valueOf(cmdarglist[7]);\r
+                        alarmtype = Integer.valueOf(cmdarglist[8]);\r
+                        log(new StringBuilder("imei ").append(imei)\r
+                                .append(", cmdindex ").append(cmdindex)\r
+                                .append(", allswitch=").append(all_alarmswitch)\r
+                                .append(", all alarm count=").append(alarmcount)\r
+                                .toString()\r
+                        );\r
+\r
+                        log(new StringBuilder("alarmtime ").append(alarmtime)\r
+                                .append(", relpeat ").append(repeat)\r
+                                .append(", switch=").append(alarmswitch)\r
+                                .append(", alarmtype=").append(alarmtype)\r
+                                .toString()\r
+                        );\r
+\r
+                    }else{\r
+                        log("data len is too small!");\r
+                    }\r
+                }else{\r
+                    if (cmdarglist.length == 4){\r
+                        alarmtime=cmdarglist[0];\r
+                        repeat=cmdarglist[1];\r
+                        alarmswitch=Integer.valueOf(cmdarglist[2]);\r
+                        alarmtype = Integer.valueOf(cmdarglist[3]);\r
+\r
+                        log(new StringBuilder("set alarmtime ").append(alarmtime)\r
+                                .append(", relpeat ").append(repeat)\r
+                                .append(", switch=").append(alarmswitch)\r
+                                .append(", alarmtype=").append(alarmtype)\r
+                                .toString()\r
+                        );\r
+                    }else{\r
+                        log("data len is too small!");\r
+                    }\r
+                }\r
+            }\r
+        }\r
+\r
+\r
+        String replycmd = cmd.replace(new StringBuilder("IWBP85,").append(imei).append(",").toString(),"");\r
+        connection.send(new StringMessage(AP85(runtime,replycmd)));\r
+    }\r
+\r
+\r
+\r
+\r
+    public static String AP85(Runtime ds,String cmddata){\r
+//示例数据:IWAP49,68##\r
+        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP85))\r
+                .append(CMDSPLIT).append(cmddata)\r
+                .append(CMDEND).toString();\r
+\r
+    }\r
+\r
+    //设置工作模式\r
+    public void handleBP33(Connection connection,Runtime runtime,String cmd){\r
+\r
+//    IWBP33,867155030001063,560555,1\r
+//        IW:标识符\r
+//        BP33 : 命令字符\r
+//        353456789012345:IMEI号,设备唯一ID\r
+//        080835:指令流水号\r
+//        1:设备工作模式,1:正常模式,2:省电模式,3:紧急模式\r
+\r
+        String[] cmdlist=cmd.split(",");\r
+        if (cmdlist.length == 4){\r
+\r
+\r
+            log("work mode "+cmdlist[3]);\r
+            connection.send(new StringMessage(AP33(cmdlist[2],Integer.valueOf(cmdlist[3]))));\r
+\r
+        }\r
+\r
+    }\r
+    public static String AP33(String cmdindex,int workMode){\r
+//IWAP33,080835,1#\r
+//080835:指令流水号\r
+//1:设置信息,供服务器同步\r
+        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP33))\r
+                .append(CMDSPLIT).append(cmdindex)\r
+                .append(CMDSPLIT).append(workMode)\r
+                .append(CMDEND).toString();\r
+    }\r
+\r
+    /*心率数据上传*/\r
+    public static String AP49(Runtime ds){\r
+        //示例数据:IWAP49,68##\r
+        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP49))\r
+                .append(CMDSPLIT).append("460")\r
+                .append(CMDEND).toString();\r
+\r
+    }\r
+    //    立即定位指令(长链接有效)\r
+    public void handleBP16(Connection connection,Runtime runtime,String cmd){\r
+        //示例数据:IWBP16,867155030001063,335386\r
+//        IWBP16,353456789012345,080835#\r
+//        说明:\r
+//        IW:标识符\r
+//        BP16 : 命令字符\r
+//        353456789012345:IMEI号,设备唯一ID\r
+//        080835 :指令流水号\r
+        String[] cmdlist = cmd.split(",");\r
+        if(cmdlist.length==3){\r
+            log("imei "+cmdlist[1]+", cmdindex "+cmdlist[2]);\r
+            connection.send(new StringMessage(AP16(cmdlist[2])));\r
+        }else{\r
+            log("error BP16 format");\r
+        }\r
+    }\r
+    //立即定位反馈\r
+    public static String AP16(String  cmdindex){\r
+//IWAP16,080835#\r
+//080835:指令流水号\r
+        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP16))\r
+                .append(CMDSPLIT).append(cmdindex)\r
+                .append(CMDEND).toString();\r
+    }\r
+    /*上传心率与血压*/\r
+    public static String APHT(Runtime ds){\r
+        //示例数据:IWAPHT,60,130,85#\r
+        // 60 : 表示心率\r
+        //130: 血压高压 [收缩压]\r
+        //85 : 血压低压 [舒张压]\r
+        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))\r
+                .append(CMDSPLIT).append("60")\r
+                .append(CMDSPLIT).append("130")\r
+                .append(CMDSPLIT).append("85")\r
+                .append(CMDEND).toString();\r
+\r
+    }\r
+    /*通过基站获取时间和坐标*/\r
+    public static String APTM(Runtime ds){\r
+        //示例数据:IWAPTM,460,0,9750,3613#\r
+        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTM))\r
+                .append(CMDSPLIT).append("460")\r
+                .append(CMDSPLIT).append("0")\r
+                .append(CMDSPLIT).append("9750")\r
+                .append(CMDSPLIT).append("3613")\r
+                .append(CMDEND).toString();\r
+\r
+    }\r
     //处理 登录 BP00\r
     private void handleBP00(String cmd){\r
        String[] msg=cmd.split(CMDSPLIT);\r
@@ -262,6 +449,28 @@ public class protocolAPIHelper {
         }\r
     }\r
 \r
+    //设置联系人白名单(10个)\r
+    private void handleBP14(String cmd){\r
+        //IWBP14,353456789012345,080835,D3590D54|135xxxxxxxxxx, D3590D54|135xxxxxxxxxx,\r
+        // D3590D54|135xxxxxxxxxx, D3590D54|135xxxxxxxxxx, D3590D54|135xxxxxxxxxx, D3590D54|135xxxxxxxxxx,\r
+        // D3590D54|135xxxxxxxxxx, D3590D54|135xxxxxxxxxx, D3590D54|135xxxxxxxxxx, D3590D54|135xxxxxxxxxx#\r
+        //D3590D54|135xxxxxxxxxx : 一组联系人,使用|分隔名称和电话号码名称使用UNICODE编码直接下发byte,多组之间使用逗号分隔,未填写的可为空,但位置仍需保留\r
+\r
+\r
+\r
+    }\r
+\r
+    //设置定位周期\r
+    public void handleBP15(String cmd){\r
+//        IWBP15, 353456789012345, 080835, 30#\r
+//        353456789012345:IMEI号,设备唯一ID\r
+//        080835 :指令流水号\r
+//        30: 表示频率为30分钟\r
+\r
+    }\r
+\r
+\r
+\r
     //处理 心跳 BP01\r
     private void handleBP01(String cmd){\r
         log("BP01定位接收成功");\r
index 94123ce..1c9c718 100644 (file)
@@ -54,12 +54,16 @@ public class Runtime {
   \r
   private String haveTry;\r
   \r
-  private String host = "watch.jiai.pro";\r
+  private String host = "watch.jiai.pro"; //118.178.155.223\r
 \r
   private String srvIP = "39.98.94.164";\r
 \r
   private String imei = "867155030001063";\r
-  \r
+\r
+  private int port = 8090;//20048;//8888;//8090;\r
+\r
+  private boolean testServerProp=false;\r
+\r
   private String imei_cid = "";\r
   \r
   private String imei_cid_key = "";\r
@@ -70,7 +74,7 @@ public class Runtime {
   \r
   private boolean isNeedAntioff;\r
   \r
-  private String key = "";\r
+  private String key = "867155030001063";\r
   \r
   public String lacByAt;\r
   \r
@@ -86,8 +90,7 @@ public class Runtime {
   \r
   private String mccAndMnc;\r
   \r
-  private int port = 20048;//8888;//8090;\r
-  \r
+\r
   public String preCdmaInfo;\r
   \r
   public String preCellInfo;\r
@@ -98,7 +101,7 @@ public class Runtime {
   \r
   private boolean shutdown;\r
   \r
-  private boolean testServerProp=true;\r
+\r
   \r
   private long timestamp;\r
   \r
index 04aab36..e741cba 100644 (file)
@@ -133,6 +133,8 @@ public class Deliver extends AbstractConnectionService {
     this.mConnection = paramConnection;\r
     this.mRuntime = paramRuntime;\r
     String cmd = paramStringMessage.cmd();\r
+    Logger.i(paramStringMessage.cmd());\r
+\r
     if (cmd.startsWith("SmsSet")) {\r
       arrayOfString4 = cmd.split(":");\r
       if (arrayOfString4.length > 1) {\r
index 38f7a1c..e2c6120 100644 (file)
@@ -51,7 +51,10 @@ public class Initialize extends AbstractConnectionService {
   \r
   public void onAttach(Connection paramConnection, Runtime paramRuntime) { this.mInstance = SimSignalUtil.getInstance((paramRuntime.getContextProxy()).context); }\r
   \r
-  public boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime) { return this.initOK ^ true; }\r
+  public boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime) {\r
+    initOK=false;\r
+    return this.initOK ^ true;\r
+  }\r
   \r
   public boolean onConnectionOpen(Connection paramConnection, Runtime paramRuntime) {\r
     if (this.initOK)\r
@@ -70,13 +73,16 @@ public class Initialize extends AbstractConnectionService {
     stringBuilder.append(Config.antioff);\r
     Logger.i(stringBuilder.toString());\r
     Config.sw_release_no = DeviceInfoUtil.getCustomId();\r
-    StringMessage stringMessage=new StringMessage(new String[]{protocolAPIHelper.AP00(paramRuntime)});\r
+    //发送登录包\r
+    StringMessage stringMessage=new StringMessage(protocolAPIHelper.AP00(paramRuntime));\r
     paramConnection.send(stringMessage);\r
     return true;\r
   }\r
   \r
   public void onDetach(Connection paramConnection, Runtime paramRuntime) { this.initOK = false; }\r
-  \r
+\r
+\r
+\r
   public boolean onReceive(StringMessage paramStringMessage, Connection paramConnection, Runtime paramRuntime) {\r
     if (this.initOK)\r
       return false; \r
index 6efb605..2a38a8a 100644 (file)
@@ -21,6 +21,9 @@ import com.ic.protocol.bean.Runtime;
 import rx.Subscription;\r
 import rx.functions.Action1;\r
 \r
+import static com.eiot.watch_lib.LauncherCtrl.STATUS_BAR_STATE_SERVER_CONNECTED_OFF;\r
+import static com.eiot.watch_lib.LauncherCtrl.STATUS_BAR_STATE_SERVER_CONNECTED_ON;\r
+\r
 public class KeepAlive extends AbstractConnectionService {\r
   private static final long HEARTBEAT_TIMEOUT = 660000L;\r
   private static String TAG = KeepAlive.class.getSimpleName();\r
@@ -238,7 +241,7 @@ public class KeepAlive extends AbstractConnectionService {
     connectionError = true;\r
     isConnected = false;\r
     paramRuntime.getContextProxy().sendBroadcast(isConnected);\r
-    LauncherCtrl.getInstance(this.mContext).setStatusBarIcon("server_connected", 1);\r
+    LauncherCtrl.getInstance(this.mContext).setStatusBarIcon("server_connected", STATUS_BAR_STATE_SERVER_CONNECTED_OFF);\r
     return false;\r
   }\r
   \r
@@ -251,9 +254,9 @@ public class KeepAlive extends AbstractConnectionService {
     Logger.i(stringBuilder.toString());\r
     if (connectionError) {\r
       connectionError = false;\r
-      ServiceUtil.offerQueue(new StringMessage(protocolAPIHelper.AP00(paramRuntime)), true);\r
+      ServiceUtil.offerQueue(new StringMessage(protocolAPIHelper.AP03(paramRuntime)), true);\r
       if (Deliver.haveSendH42) {\r
-        ServiceUtil.offerQueue(new StringMessage(protocolAPIHelper.AP00(paramRuntime)));\r
+        ServiceUtil.offerQueue(new StringMessage(protocolAPIHelper.AP03(paramRuntime)));\r
         Deliver.haveSendH42 = false;\r
       }\r
     } \r
@@ -261,6 +264,7 @@ public class KeepAlive extends AbstractConnectionService {
     this.firstReConnected = true;\r
     this.idleTimeMillis = SystemClock.elapsedRealtime();\r
     paramRuntime.getContextProxy().sendBroadcast(isConnected);\r
+    LauncherCtrl.getInstance(this.mContext).setStatusBarIcon("server_connected", STATUS_BAR_STATE_SERVER_CONNECTED_ON);\r
     return false;\r
   }\r
 \r
index 014fc1f..772e93f 100644 (file)
@@ -42,7 +42,7 @@ public class SynchronousTime extends AbstractConnectionService {
   public boolean onConnectionOpen(Connection paramConnection, Runtime paramRuntime) {\r
     if (this.synchronousTimeOK)\r
       return false; \r
-    StringMessage stringMessage = new StringMessage( protocolAPIHelper.AP00(paramRuntime));\r
+    StringMessage stringMessage = new StringMessage( protocolAPIHelper.APTM(paramRuntime));\r
 //    byte[] arrayOfByte = (new StringMessageSocketEngine(paramRuntime.getHost(), paramRuntime.getPort() - 2)).request(stringMessage);\r
     paramConnection.sendBlocking(stringMessage);\r
 //    if (arrayOfByte != null) {\r
@@ -79,7 +79,12 @@ public class SynchronousTime extends AbstractConnectionService {
   \r
   public void onDetach(Connection paramConnection, Runtime paramRuntime) {}\r
   \r
-  public boolean onReceive(StringMessage paramStringMessage, Connection paramConnection, Runtime paramRuntime) { return !this.synchronousTimeOK; }\r
+  public boolean onReceive(StringMessage paramStringMessage, Connection paramConnection, Runtime paramRuntime) {\r
+    if (paramStringMessage.cmd().equals("BPTM")){\r
+      synchronousTimeOK=true;\r
+    }\r
+    return !this.synchronousTimeOK;\r
+  }\r
 \r
 \r
 \r
index 57d731a..1215516 100644 (file)
@@ -54,6 +54,7 @@ import java.util.Timer;
 import java.util.TimerTask;\r
 \r
 import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;\r
+import static com.ic.protocol.Constants.ACTION_ALARM_ADD_DATAPOINTS;\r
 import static com.ic.protocol.Constants.ACTION_EQC_ALARM;\r
 import static com.ic.protocol.Constants.HEART_ALARM;\r
 import static com.ic.protocol.Constants.SLEEP_ALARM;\r
@@ -234,12 +235,12 @@ public class protocolMainServer extends Service {
         this.mKeepAlive = new KeepAlive();\r
         this.mDeliver = new Deliver();\r
 //        dNS.setNext(synchronousTime);\r
-        synchronousTime.setNext(initialize);\r
-        initialize.setNext(checkSIM);\r
+        initialize.setNext(synchronousTime);\r
+        synchronousTime.setNext(checkSIM);\r
         checkSIM.setNext(this.mKeepAlive);\r
         this.mKeepAlive.setNext(this.mDeliver);\r
 \r
-        return synchronousTime;\r
+        return initialize;\r
     }\r
 \r
     private void getDBFile() {\r
@@ -277,13 +278,28 @@ public class protocolMainServer extends Service {
 \r
     private void setSleepAlarm() {\r
         /*每5分左右 休眠*/\r
-        AlarmHelper.setTimeAlarm(this, 0, 5, SLEEP_ALARM);\r
+        AlarmHelper.setRealTimeAlarm(this, 5, SLEEP_ALARM);\r
     }\r
 \r
     private void setWakeAlarm() {\r
 \r
         /*每1 左右 唤醒自己*/\r
-        AlarmHelper.setTimeAlarm(this, 0, 1, WAKE_ALARM);\r
+        Context context=runtime.getContextProxy().context;\r
+        AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);\r
+        Intent intent = new Intent(context, com.ic.protocol.service.protocolMainServer.class);\r
+        intent.setAction(WAKE_ALARM);\r
+        PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);\r
+        alarmManager.cancel(pendingIntent);\r
+        long l = SystemClock.elapsedRealtime();\r
+        StringBuilder stringBuilder = new StringBuilder();\r
+        stringBuilder.append("SDK_INT=");\r
+        stringBuilder.append(Build.VERSION.SDK_INT);\r
+\r
+        Logger.i(stringBuilder.toString());\r
+\r
+//        alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (1 * 60 * 1000), pendingIntent);\r
+        alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,l,  (1000* 60 * 1000), pendingIntent);\r
+\r
     }\r
 \r
     private void setWeatherAlarm() {\r
@@ -477,7 +493,7 @@ public class protocolMainServer extends Service {
 //                            this.mSendPairMessage.startDownLoad(this.runtime, false);\r
                             return Service.START_STICKY;\r
                         }\r
-                        if (Constants.ACTION_ALARM_ADD_DATAPOINTS.equals(paramIntent.getAction())) {\r
+                        if (ACTION_ALARM_ADD_DATAPOINTS.equals(paramIntent.getAction())) {\r
                             setUpLocationDataAlarm(28800000L);\r
                             if (this.upLoadDataPoints != null) {\r
                                 this.upLoadDataPoints.uploadCurrentLocation();\r
@@ -544,59 +560,25 @@ public class protocolMainServer extends Service {
     }\r
 \r
     public void setAlarm(int paramInt) {\r
-        int i = paramInt;\r
-        if (paramInt == 0)\r
-            i = 3;\r
-        AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);\r
-        Intent intent = new Intent(this, protocolMainServer.class);\r
-        intent.setAction(ACTION_ALARM);\r
-        PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, FLAG_UPDATE_CURRENT);\r
-        alarmManager.cancel(pendingIntent);\r
-        long l = SystemClock.elapsedRealtime();\r
-        StringBuilder stringBuilder = new StringBuilder();\r
-        stringBuilder.append("SDK_INT=");\r
-        stringBuilder.append(Build.VERSION.SDK_INT);\r
-        stringBuilder.append(",i=,");\r
-        stringBuilder.append(i );\r
-        stringBuilder.append(",kitkat=");\r
-        stringBuilder.append(19);\r
-        Logger.i(stringBuilder.toString());\r
-        int sleeptime=20;\r
-        if (Build.VERSION.SDK_INT >= 19) {\r
-//            alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (i * 60 * 1000), pendingIntent);\r
-            alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (i * sleeptime * 1000), pendingIntent);\r
-\r
-        }else {\r
-            alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (i * sleeptime * 1000), pendingIntent);\r
-        }\r
+        AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,1,ACTION_ALARM);\r
     }\r
 \r
     public void setHeartAlarm() {\r
-        AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);\r
-        Intent intent = new Intent(this, protocolMainServer.class);\r
-        intent.setAction(ACTION_ALARM);\r
-        PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, FLAG_UPDATE_CURRENT);\r
-        alarmManager.cancel(pendingIntent);\r
-        long l = SystemClock.elapsedRealtime();\r
-        StringBuilder stringBuilder = new StringBuilder();\r
-        stringBuilder.append("setHeartAlarm 20秒");\r
-        Logger.i(stringBuilder.toString());\r
-        int sleeptime=20;\r
-        Log.i(TAG,"setHeartAlarm");\r
-        alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + ( sleeptime * 1000), pendingIntent);\r
+       AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,1, HEART_ALARM);\r
     }\r
 \r
     public void setUpLocationDataAlarm(long paramLong) {\r
-        AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);\r
-        Intent intent = new Intent(this, protocolMainServer.class);\r
-        intent.setAction(Constants.ACTION_ALARM_ADD_DATAPOINTS);\r
-        PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, FLAG_UPDATE_CURRENT);\r
-        alarmManager.cancel(pendingIntent);\r
-        alarmManager.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + paramLong, pendingIntent);\r
-        StringBuilder stringBuilder = new StringBuilder();\r
-        stringBuilder.append("interval=");\r
-        stringBuilder.append(paramLong);\r
-        Logger.i(stringBuilder.toString());\r
+//        AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);\r
+//        Intent intent = new Intent(this, protocolMainServer.class);\r
+//        intent.setAction(ACTION_ALARM_ADD_DATAPOINTS);\r
+//        PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, FLAG_UPDATE_CURRENT);\r
+//        alarmManager.cancel(pendingIntent);\r
+//        alarmManager.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + paramLong, pendingIntent);\r
+//        StringBuilder stringBuilder = new StringBuilder();\r
+//        stringBuilder.append("interval=");\r
+//        stringBuilder.append(paramLong);\r
+//        Logger.i(stringBuilder.toString());\r
+        AlarmHelper.setRealTimeAlarm( runtime.getContextProxy().context,(int)((System.currentTimeMillis() + paramLong)/1000),ACTION_ALARM_ADD_DATAPOINTS);\r
     }\r
 \r
     public static class InnerService extends Service {\r
index 32a5e0f..9b7ac59 100644 (file)
@@ -30,80 +30,82 @@ public class AlarmHelper {
         exception.printStackTrace();\r
       }\r
   }\r
-  \r
-  public static void setAlarm(AlarmManager paramAlarmManager, long paramLong1, long paramLong2, PendingIntent paramPendingIntent) {\r
 \r
-//      try {\r
-//        setImpl.invoke(paramAlarmManager, new Object[] { Integer.valueOf(0), Long.valueOf(paramLong1), Long.valueOf(0L), Long.valueOf(paramLong2), paramPendingIntent, null });\r
-//        return;\r
-//      } catch (Exception exception) {\r
+  //set repeat alarm\r
+  public static void setAlarm(AlarmManager paramAlarmManager, long hour, long minutes, PendingIntent paramPendingIntent) {\r
+\r
+      try {\r
+        setImpl.invoke(paramAlarmManager, new Object[] { Integer.valueOf(0), Long.valueOf(hour), Long.valueOf(0L), Long.valueOf(minutes), paramPendingIntent, null });\r
+\r
+      } catch (Exception exception) {\r
 //        useApi19 = false;\r
-//        paramAlarmManager.setRepeating(0, paramLong1, paramLong2, paramPendingIntent);\r
-//        exception.printStackTrace();\r
-//        return;\r
-//      }\r
 \r
-//    paramAlarmManager.setRepeating(0, paramLong1, paramLong2, paramPendingIntent);\r
+        paramAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, hour, minutes, paramPendingIntent);\r
+        exception.printStackTrace();\r
+      }\r
+\r
   }\r
   \r
-  public static void setAlarm(AlarmManager paramAlarmManager, long paramLong, PendingIntent paramPendingIntent) { setAlarm(paramAlarmManager, paramLong, 604800000L, paramPendingIntent); }\r
+  public static void setAlarm(AlarmManager paramAlarmManager, long paramLong, PendingIntent paramPendingIntent) {\r
+    setAlarm(paramAlarmManager, paramLong, 604800000L, paramPendingIntent);\r
+  }\r
   \r
-  public static void setCleanStepCountAlarm(Context paramContext, int paramInt1, int paramInt2, String paramString) {\r
-//    AlarmManager alarmManager = (AlarmManager)paramContext.getSystemService(Context.ALARM_SERVICE);\r
-//    Intent intent = new Intent(paramContext, ProcessReceiver.class);\r
-//    intent.setAction(paramString);\r
-//    PendingIntent pendingIntent = PendingIntent.getBroadcast(paramContext, 0, intent, 134217728);\r
-//    long l3 = System.currentTimeMillis();\r
-//    Calendar calendar = Calendar.getInstance();\r
-//    calendar.set(11, paramInt1);\r
-//    calendar.set(12, paramInt2);\r
-//    calendar.set(13, 0);\r
-//    long l2 = calendar.getTimeInMillis();\r
-//    long l1 = l2;\r
-//    if (l2 < l3)\r
-//      l1 = l2 + 86400000L;\r
-//    alarmManager.cancel(pendingIntent);\r
-//    alarmManager.setExact(0, l1, pendingIntent);\r
+  public static void setCleanStepCountAlarm(Context context, int hour, int minutes, String paramString) {\r
+    AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);\r
+    Intent intent = new Intent(context, com.ic.protocol.service.protocolMainServer.class);\r
+    intent.setAction(paramString);\r
+    PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);\r
+    long l3 = System.currentTimeMillis();\r
+    Calendar calendar = Calendar.getInstance();\r
+    calendar.set(Calendar.HOUR_OF_DAY, hour);\r
+    calendar.set(Calendar.MINUTE, minutes);\r
+    calendar.set(Calendar.SECOND, 0);\r
+    long l2 = calendar.getTimeInMillis();\r
+    long l1 = l2;\r
+    if (l2 < l3)\r
+      l1 = l2 + 86400000L;\r
+    alarmManager.cancel(pendingIntent);\r
+    alarmManager.setExact(AlarmManager.RTC_WAKEUP, l1, pendingIntent);\r
   }\r
   \r
-  public static void setRealTimeAlarm(Context paramContext, int paramInt, String paramString) {\r
-//    AlarmManager alarmManager = (AlarmManager)paramContext.getSystemService("alarm");\r
-//    Intent intent = new Intent(paramContext, com.enqualcomm.support.CoreService.class);\r
-//    intent.setAction(paramString);\r
-//    PendingIntent pendingIntent = PendingIntent.getService(paramContext, 0, intent, 134217728);\r
-//    alarmManager.cancel(pendingIntent);\r
-//    long l = SystemClock.elapsedRealtime();\r
-//    StringBuilder stringBuilder = new StringBuilder();\r
-//    stringBuilder.append("SDK_INT=");\r
-//    stringBuilder.append(Build.VERSION.SDK_INT);\r
-//    stringBuilder.append(",m=,");\r
-//    stringBuilder.append(23);\r
-//    stringBuilder.append(",kitkat=");\r
-//    stringBuilder.append(19);\r
-//    Logger.i(stringBuilder.toString());\r
-//    if (Build.VERSION.SDK_INT >= 19) {\r
-//      alarmManager.setExact(2, l + (paramInt * 60 * 1000), pendingIntent);\r
-//      return;\r
-//    }\r
-//    alarmManager.set(2, l + (paramInt * 60 * 1000), pendingIntent);\r
+  public static void setRealTimeAlarm(Context context, int minutes, String actionname) {\r
+    AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);\r
+    Intent intent = new Intent(context, com.ic.protocol.service.protocolMainServer.class);\r
+    intent.setAction(actionname);\r
+    PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);\r
+    alarmManager.cancel(pendingIntent);\r
+    long l = SystemClock.elapsedRealtime();\r
+    StringBuilder stringBuilder = new StringBuilder();\r
+    stringBuilder.append("SDK_INT=");\r
+    stringBuilder.append(Build.VERSION.SDK_INT);\r
+    stringBuilder.append(",m=,");\r
+    stringBuilder.append(23);\r
+    stringBuilder.append(",kitkat=");\r
+    stringBuilder.append(19);\r
+    Logger.i(stringBuilder.toString());\r
+    if (Build.VERSION.SDK_INT >= 19) {\r
+      alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (minutes * 60 * 1000), pendingIntent);\r
+      return;\r
+    }\r
+    alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (minutes * 60 * 1000), pendingIntent);\r
   }\r
   \r
-  public static void setTimeAlarm(Context paramContext, int paramInt1, int paramInt2, String paramString) {\r
-//    AlarmManager alarmManager = (AlarmManager)paramContext.getSystemService("alarm");\r
-//    Intent intent = new Intent(paramContext, com.enqualcomm.support.CoreService.class);\r
-//    intent.setAction(paramString);\r
-//    PendingIntent pendingIntent = PendingIntent.getService(paramContext, 0, intent, 134217728);\r
-//    long l3 = System.currentTimeMillis();\r
-//    Calendar calendar = Calendar.getInstance();\r
-//    calendar.set(11, paramInt1);\r
-//    calendar.set(12, paramInt2);\r
-//    calendar.set(13, 0);\r
-//    long l2 = calendar.getTimeInMillis();\r
-//    long l1 = l2;\r
-//    if (l2 < l3)\r
-//      l1 = l2 + 86400000L;\r
-//    alarmManager.cancel(pendingIntent);\r
-//    alarmManager.setExact(0, l1, pendingIntent);\r
+  public static void setTimeAlarm(Context context, int hour, int minutes, String paramString) {\r
+    AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);\r
+    Intent intent = new Intent(context, com.ic.protocol.service.protocolMainServer.class);\r
+    intent.setAction(paramString);\r
+    PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);\r
+    long l3 = System.currentTimeMillis();\r
+    Calendar calendar = Calendar.getInstance();\r
+    calendar.set(Calendar.HOUR_OF_DAY, hour);\r
+    calendar.set(Calendar.MINUTE, minutes);\r
+    calendar.set(Calendar.SECOND, 0);\r
+    long l2 = calendar.getTimeInMillis();\r
+    long l1 = l2;\r
+    if (l2 < l3)\r
+      l1 = l2 + 86400000L;\r
+    alarmManager.cancel(pendingIntent);\r
+    alarmManager.setExact(AlarmManager.RTC_WAKEUP, l1, pendingIntent);\r
   }\r
 }\r
 \r
index f6db7c1..2da7b41 100644 (file)
@@ -43,7 +43,7 @@ public class NettyConnection implements Connection ,RxSocket.SocketConnectionLis
                         switch (type){\r
                             case BP00:\r
 //              API.handleBP00(cmd);\r
-                                handle_cmd("Link:OK",cmd);\r
+                                handle_cmd("Init",cmd);\r
                                 break;\r
                             case BP01:\r
 //              API.handleBP01(cmd);\r
@@ -57,7 +57,21 @@ public class NettyConnection implements Connection ,RxSocket.SocketConnectionLis
 //              API.handleBP28(cmd);\r
                                 handle_cmd("语音BP28",cmd);\r
                                 break;\r
-\r
+                            case BPTM:\r
+//              API.handleBP28(cmd);\r
+                                handle_cmd("BPTM",cmd);\r
+                                break;\r
+                            case BP85://设置闹钟\r
+                                API.handleBP85(cmd,NettyConnection.this,null);\r
+                                break;\r
+                            case BP33:\r
+                                //设置工作模式\r
+                                API.handleBP33(NettyConnection.this,null,cmd);\r
+                                break;\r
+                            case BP16:\r
+                                //立即定位指令(长链接有效)\r
+                                API.handleBP16(NettyConnection.this,null,cmd);\r
+                                break;\r
                         }\r
 \r
                         return ret;\r
@@ -254,7 +268,7 @@ public class NettyConnection implements Connection ,RxSocket.SocketConnectionLis
   public void send(StringMessage paramStringMessage) {\r
 \r
       sendMsg(paramStringMessage.isFromCache());\r
-      Logger.i(paramStringMessage.toString());\r
+      Logger.i(paramStringMessage.isFromCache());\r
 \r
   }\r
   \r