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