From: kfl_614 Date: Tue, 29 Dec 2020 02:34:27 +0000 (+0800) Subject: replace main looper as sub looper. X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=a20b428b9c5c8a87c58410f18252ad887df97b87;p=protocol_srv.git replace main looper as sub looper. --- diff --git a/app/src/main/java/com/enqualcomm/support/CoreService.java b/app/src/main/java/com/enqualcomm/support/CoreService.java index 1373c47f..361084bc 100644 --- a/app/src/main/java/com/enqualcomm/support/CoreService.java +++ b/app/src/main/java/com/enqualcomm/support/CoreService.java @@ -4,43 +4,28 @@ import android.app.AlarmManager; import android.app.Notification; import android.app.PendingIntent; import android.app.Service; -import android.content.IClipboard; +import android.content.BroadcastReceiver; +import android.content.Context; import android.content.Intent; +import android.content.IntentFilter; import android.media.AudioManager; -import android.media.MediaRouter; import android.os.Handler; +import android.os.HandlerThread; import android.os.IBinder; - import android.os.Message; import android.os.Messenger; import android.os.PowerManager; import android.os.SystemClock; import android.widget.Toast; -import com.enqualcomm.support.adapter.BTHelper; +import com.enqualcomm.support.adapter.LBSHelper; import com.enqualcomm.support.bean.Contact; -import com.enqualcomm.support.bean.EventLooperHandlerThread; -import com.enqualcomm.support.bean.ICLocation; +import com.enqualcomm.support.bean.Runtime; import com.enqualcomm.support.bean.SleepInfo; import com.enqualcomm.support.bean.SleepRecord; -import com.enqualcomm.support.service.AntiMonitorService; -import com.enqualcomm.support.utils.CellInfoUtil; -import com.enqualcomm.support.utils.Connection; -import com.enqualcomm.support.utils.DeviceInfoUtil; -import com.enqualcomm.support.utils.ICHttpUtil; -import com.enqualcomm.support.utils.LedUtil; -import com.enqualcomm.support.utils.StorageUtils; -import com.enqualcomm.support.utils.TemperatureUtil; -import com.enqualcomm.support.utils.TimeUtil; -import com.enqualcomm.support.utils.VibrateUtil; -import com.enqualcomm.support.utils.WakeLockUtil; -import com.enqualcomm.support.utils.mqttConnection; -import com.ic.jni.ICJniUtils; -import com.enqualcomm.support.adapter.LBSHelper; -import com.ic.protocols.protocolAPIHelper; -import com.enqualcomm.support.bean.Runtime; import com.enqualcomm.support.bean.StringMessage; import com.enqualcomm.support.bean.heartRateStatus; +import com.enqualcomm.support.service.AntiMonitorService; import com.enqualcomm.support.service.CheckSIM; import com.enqualcomm.support.service.Deliver; import com.enqualcomm.support.service.HeartRateManager; @@ -53,39 +38,44 @@ import com.enqualcomm.support.service.base.AbstractInvokeHandlerService; import com.enqualcomm.support.utils.AlarmHelper; import com.enqualcomm.support.utils.AlarmWakeUp; import com.enqualcomm.support.utils.BatteryUtil; +import com.enqualcomm.support.utils.CellInfoUtil; +import com.enqualcomm.support.utils.Connection; import com.enqualcomm.support.utils.ConnectionListener; import com.enqualcomm.support.utils.ContextProxy; import com.enqualcomm.support.utils.DBHelper; +import com.enqualcomm.support.utils.DeviceInfoUtil; import com.enqualcomm.support.utils.FileOutputUtil; import com.enqualcomm.support.utils.ICLogger; +import com.enqualcomm.support.utils.LedUtil; import com.enqualcomm.support.utils.NettyConnection; import com.enqualcomm.support.utils.SharPreferenceUtil; import com.enqualcomm.support.utils.SimSignalUtil; +import com.enqualcomm.support.utils.TemperatureUtil; +import com.enqualcomm.support.utils.TimeUtil; import com.enqualcomm.support.utils.Util; +import com.enqualcomm.support.utils.VibrateUtil; +import com.enqualcomm.support.utils.WakeLockUtil; +import com.enqualcomm.support.utils.mqttConnection; +import com.ic.jni.ICJniUtils; +import com.ic.protocols.protocolAPIHelper; import java.lang.ref.WeakReference; -import chestnut.ui.Toastc; - -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.IntentFilter; - import java.util.ArrayList; import java.util.Random; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; +import chestnut.ui.Toastc; + import static android.app.PendingIntent.FLAG_UPDATE_CURRENT; import static com.enqualcomm.support.Constants.ACTION_ALARM_ADD_DATAPOINTS; import static com.enqualcomm.support.Constants.ACTION_ALARM_ALARM_CHANGE; import static com.enqualcomm.support.Constants.ACTION_ALARM_BLE_SCAN; -import static com.enqualcomm.support.Constants.ACTION_ALARM_CHECK_ANTI; import static com.enqualcomm.support.Constants.ACTION_CHECK_ANTIOFF_EVENT; import static com.enqualcomm.support.Constants.ACTION_EQC_ALARM; import static com.enqualcomm.support.Constants.ACTION_HEATR_RATE_START; import static com.enqualcomm.support.Constants.ACTION_LOCAL_SOS_ACTION; import static com.enqualcomm.support.Constants.ACTION_LOCATION_ALARM; -import static com.enqualcomm.support.Constants.ACTION_PRACTICE_REPORT_ALARM; import static com.enqualcomm.support.Constants.ACTION_QUERY_WEATHER; import static com.enqualcomm.support.Constants.ACTION_SEND_EMEGENCY_LOCATION_START; import static com.enqualcomm.support.Constants.ACTION_SEND_EMEGENCY_LOCATION_STOP; @@ -93,12 +83,15 @@ import static com.enqualcomm.support.Constants.ANTI_ALARM; import static com.enqualcomm.support.Constants.HEART_ALARM; import static com.enqualcomm.support.Constants.KEY_SAVE_STEP_COUNT; import static com.enqualcomm.support.Constants.KEY_STEP_COUNT; -import static com.enqualcomm.support.Constants.KEY_TEMP_BODY; -import static com.enqualcomm.support.Constants.KEY_TEMP_WRIST; import static com.enqualcomm.support.Constants.STEP_COUNT_ALARM_ACTION; import static com.enqualcomm.support.Constants.TEMP_ALARM; -import static com.enqualcomm.support.bean.ICLocation.*; -import static com.ic.protocols.protocolAPIHelper.getTemperatureMSG; +import static com.enqualcomm.support.bean.ICLocation.CUSTOM_MOD; +import static com.enqualcomm.support.bean.ICLocation.CUSTOM_MOD8_GPS; +import static com.enqualcomm.support.bean.ICLocation.CUSTOM_MOD8_WIFI; +import static com.enqualcomm.support.bean.ICLocation.EMERGNECY_MOD; +import static com.enqualcomm.support.bean.ICLocation.LOWPOWER_MOD; +import static com.enqualcomm.support.bean.ICLocation.NORMAL_MOD; +import static com.enqualcomm.support.bean.ICLocation.REALTIME_MOD; public class CoreService extends Service { @@ -106,20 +99,20 @@ public class CoreService extends Service { private Toastc toast = null; - private static CoreService mProtocolServer=null; - private static LBSHelper lbshelper=null; + private static CoreService mProtocolServer = null; + private static LBSHelper lbshelper = null; public static final String ACTION_ALARM = "com.enqualcomm.support.ACTION_ALARM"; - private static final int GRAY_SERVICE_ID =android.os.Process.myPid(); + private static final int GRAY_SERVICE_ID = android.os.Process.myPid(); - private static final String MY_WAKE_LOCKTAG =CoreService.class.getSimpleName(); + private static final String MY_WAKE_LOCKTAG = CoreService.class.getSimpleName(); public static int alarmCycle = 5; public static final int interval = 60000; - public static boolean needLocateInAfterHeartBeat=false; + public static boolean needLocateInAfterHeartBeat = false; private static int is_allowed_in_sleep_mode = 1; private static boolean is_in_sleep_mode = false; @@ -127,13 +120,14 @@ public class CoreService extends Service { private static boolean is_wifi_network_ok = false; // SPRD: add outdoorMode public static final int RINGER_MODE_OUTDOOR = 3; + public static Handler mHandler = null; + // public static Handler mHandler=new Handler(); + private static ICSmsManager smsManager = null; - public static Handler mHandler=new Handler(EventLooperHandlerThread.makeLooper(MY_WAKE_LOCKTAG)); -// public static Handler mHandler=new Handler(); - private static ICSmsManager smsManager=null; - public String getServerAlive(){ - return DeviceInfoUtil.getDeviceInfo(runtime); + public String getServerAlive() { + return DeviceInfoUtil.getDeviceInfo(runtime); } + private BroadcastReceiver AtCallbackBroadcastReceiver = new BroadcastReceiver() { public void onReceive(Context param1Context, Intent param1Intent) { if (param1Intent.getAction().equals("com.eqc.intent.action.callback.at")) { @@ -153,7 +147,7 @@ public class CoreService extends Service { stringBuilder1.append(Integer.valueOf(str, 16)); stringBuilder1.append(",CELLID="); stringBuilder1.append(Integer.valueOf(str1, 16)); - if (Config.LOG_TOFILE) ICLogger.logToFile( "LBS", stringBuilder1.toString()); + if (Config.LOG_TOFILE) ICLogger.logToFile("LBS", stringBuilder1.toString()); } } } @@ -165,10 +159,10 @@ public class CoreService extends Service { StringBuilder stringBuilder2 = new StringBuilder(); stringBuilder2.append("broadcastReceiver alarmCycle action=="); stringBuilder2.append(param1Intent.getAction()); - if (Config.LOG_TOFILE) ICLogger.logToFile( "alarmCycle", stringBuilder2.toString()); + if (Config.LOG_TOFILE) ICLogger.logToFile("alarmCycle", stringBuilder2.toString()); StringBuilder stringBuilder1 = new StringBuilder(); stringBuilder1.append("时间变化"); - stringBuilder1.append(param1Intent.getAction()+stringBuilder2.toString()); + stringBuilder1.append(param1Intent.getAction() + stringBuilder2.toString()); ICLogger.i(stringBuilder1.toString()); //只有需要确定绝对时间点启动的Alarm需要重置,相对时间点的Alarm不需要重置。防止永远不能正常登陆。 @@ -177,8 +171,8 @@ public class CoreService extends Service { // setHeartAlarm(); // setHeartRateDetectAlarm(runtime.getPpgTestCycle()); setWeatherAlarm(); - runtime.getContextProxy().sendBroadcast(ACTION_ALARM_ALARM_CHANGE,runtime); //更新Alarm - // setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); + runtime.getContextProxy().sendBroadcast(ACTION_ALARM_ALARM_CHANGE, runtime); //更新Alarm + // setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); if (cmcm_call_eiot_into_powersave_mode() == 0) AlarmWakeUp.isNeedWakeUpAlarm(runtime); } @@ -191,7 +185,7 @@ public class CoreService extends Service { stringBuilder2.append(param1Intent.getAction()); ICLogger.i(stringBuilder2.toString()); - if (ACTION_SEND_EMEGENCY_LOCATION_START.equals(param1Intent.getAction())){ + if (ACTION_SEND_EMEGENCY_LOCATION_START.equals(param1Intent.getAction())) { runtime.getLocationInstance().setWorkingMod(EMERGNECY_MOD); //runtime.setPpgTestCycle(1); setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); @@ -201,67 +195,69 @@ public class CoreService extends Service { setEmegencyLocationSTOPAlarm(5); - }else if (ACTION_LOCAL_SOS_ACTION.endsWith(param1Intent.getAction())){ + } else if (ACTION_LOCAL_SOS_ACTION.endsWith(param1Intent.getAction())) { VibrateUtil.getInstance(runtime.getContextProxy().context).VibrateOn(true); // if( param1Intent.getIntExtra("type", 1) == 1) { - boolean needHRSTestOnSOS = Util.getSystemProperties("persist.sys.needHRSOnSOS","false").equals("true"); - if(needHRSTestOnSOS) { + boolean needHRSTestOnSOS = Util.getSystemProperties("persist.sys.needHRSOnSOS", "false").equals("true"); + if (needHRSTestOnSOS) { //触发一次心率检测 setHeartRateDetectAlarm(1); } - runtime.setAlarmType(Runtime.AlarmType.ALARM_SOS); - //trigger AP10 报警定位 - ICLogger.i("triggerSOSLocationProcess "); - LocationClient.getInstance().triggerSOSLocationProcess(); + runtime.setAlarmType(Runtime.AlarmType.ALARM_SOS); + //trigger AP10 报警定位 + ICLogger.i("triggerSOSLocationProcess "); + LocationClient.getInstance().triggerSOSLocationProcess(); // Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime)); - //开启紧急定位模式,GPS 优先1分钟一次定位,持续5分钟 - runtime.getLocationInstance().setWorkingMod(EMERGNECY_MOD); - setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); + //开启紧急定位模式,GPS 优先1分钟一次定位,持续5分钟 + runtime.getLocationInstance().setWorkingMod(EMERGNECY_MOD); + setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); - //SOS模式,心率测试1分钟一次,持续5分钟 - if(needHRSTestOnSOS) { - //只触发一次心率检测 - setHeartRateDetectAlarm(1); - } - //设置5分钟后结束紧急定位模式 - setEmegencyLocationSTOPAlarm(5); + //SOS模式,心率测试1分钟一次,持续5分钟 + if (needHRSTestOnSOS) { + //只触发一次心率检测 + setHeartRateDetectAlarm(1); + } + //设置5分钟后结束紧急定位模式 + setEmegencyLocationSTOPAlarm(5); - if(Config.SOSNoNeedDial==false) { - //50ms后开始拨打电话 - mHandler.postDelayed(mTriggerSOSCALLThread,500); - } - }else if (ACTION_QUERY_WEATHER.equals(param1Intent.getAction())) { + if (Config.SOSNoNeedDial == false) { + //50ms后开始拨打电话 + mHandler.postDelayed(mTriggerSOSCALLThread, 500); + } + } else if (ACTION_QUERY_WEATHER.equals(param1Intent.getAction())) { ICLogger.i("ACTION_QUERY_WEATHER "); connection.send(protocolAPIHelper.getWeatherMSG(runtime)); - } + } } }; - private TriggerSOSCALLThread mTriggerSOSCALLThread=new TriggerSOSCALLThread(); + private TriggerSOSCALLThread mTriggerSOSCALLThread = new TriggerSOSCALLThread(); - private class TriggerSOSCALLThread implements Runnable{ + private class TriggerSOSCALLThread implements Runnable { @Override public void run() { trigger_SOS_Call(); } } - private void trigger_SOS_Call(){ + + private void trigger_SOS_Call() { try { Intent intent = new Intent("com.eqc.shutdown_sos"); - intent.putExtra("type",1); + intent.putExtra("type", 1); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); this.startActivity(intent); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); } } - private Runnable mupdatePracticeData=new Runnable(){ + + private Runnable mupdatePracticeData = new Runnable() { @Override public void run() { //ICHttpUtil.uploadData(Runtime.healthInfo.getBufferDataStr(),runtime,TimeUtil.getSystemTime2(),null); @@ -273,31 +269,30 @@ public class CoreService extends Service { private BroadcastReceiver broadcastPracticeCMDReceiver = new BroadcastReceiver() { public void onReceive(Context param1Context, Intent param1Intent) { - if(param1Intent.getAction().equals(Constants.ACTION_START_PRACTISE)) - { - int cmd=param1Intent.getIntExtra(Constants.KeyPractice,0); - if (cmd==1){ + if (param1Intent.getAction().equals(Constants.ACTION_START_PRACTISE)) { + int cmd = param1Intent.getIntExtra(Constants.KeyPractice, 0); + if (cmd == 1) { //开始自由锻炼 - Runtime.practising=true; - Util.setSystemProperties( Config.KeyPractiseState,"true"); + Runtime.practising = true; + Util.setSystemProperties(Config.KeyPractiseState, "true"); Runtime.healthInfo.reset(); Runtime.healthInfo.resetBuffer(); setPracticeAlarm(); - }else{ + } else { //停止自由锻炼,恢复正常 - Runtime.practising=false; - Util.setSystemProperties( Config.KeyPractiseState,"false"); + Runtime.practising = false; + Util.setSystemProperties(Config.KeyPractiseState, "false"); HeartRateManager.stopPPGtest(); //最后检测是否还有数据需要发送 - if(Runtime.healthInfo.check_info_item_finished()){ + if (Runtime.healthInfo.check_info_item_finished()) { Runtime.healthInfo.appendBuffer(Runtime.healthInfo.getHealthInfoString()); Runtime.healthInfo.reset(); - } - if(Runtime.healthInfo.getInfoCount()>=0){ + } + if (Runtime.healthInfo.getInfoCount() >= 0) { //超过30次发送数据给服务器 - ICLogger.i("自由锻炼结束,发送数据给服务器 "+Runtime.healthInfo.getBufferData().length); + ICLogger.i("自由锻炼结束,发送数据给服务器 " + Runtime.healthInfo.getBufferData().length); mHandler.post(mupdatePracticeData); } @@ -309,19 +304,22 @@ public class CoreService extends Service { private static class ServerHandler implements ConnectionListener { private final WeakReference mReference; - ServerHandler(CoreService param1CoreService) { this.mReference = new WeakReference(param1CoreService); } + ServerHandler(CoreService param1CoreService) { + this.mReference = new WeakReference(param1CoreService); + } @Override public void onConnectionClose(String errorName) { - CoreService coreService = (CoreService)this.mReference.get(); + CoreService coreService = (CoreService) this.mReference.get(); if (coreService == null) return; - ICLogger.i("onConnectionClose++ retry to connect again! Close Error "+errorName); - coreService.connectionServiceChain.processConnectionClose(coreService.connection, coreService.runtime,errorName); + ICLogger.i("onConnectionClose++ retry to connect again! Close Error " + errorName); + coreService.connectionServiceChain.processConnectionClose(coreService.connection, coreService.runtime, errorName); } + @Override public void onConnectionOpen() { - CoreService coreService = (CoreService)this.mReference.get(); + CoreService coreService = (CoreService) this.mReference.get(); if (coreService == null) return; coreService.connectionServiceChain.processConnectionOpen(coreService.connection, coreService.runtime); @@ -330,14 +328,15 @@ public class CoreService extends Service { public void onReceive(StringMessage param1StringMessage) { - CoreService coreService = (CoreService)this.mReference.get(); - ICLogger.i("onReceive " +param1StringMessage.cmd() +" coreService " + coreService ); + CoreService coreService = (CoreService) this.mReference.get(); + ICLogger.i("onReceive " + param1StringMessage.cmd() + " coreService " + coreService); if (coreService == null) return; coreService.connectionServiceChain.processServerResponse(param1StringMessage, coreService.connection, coreService.runtime); coreService.locationClient.onReceive(param1StringMessage); } } + Connection connection = null; AbstractConnectionService connectionServiceChain; @@ -390,7 +389,7 @@ public class CoreService extends Service { //为了保证唤醒时各个状态及时更新到服务器,发送一个同步心跳包,这样用户体验更好 CoreService.this.locationClient.updateStepCount(); - mHandler.postDelayed(mRetryConnectSrvThread,500); + mHandler.postDelayed(mRetryConnectSrvThread, 500); if (CoreService.is_wifi_network_ok) { @@ -400,35 +399,35 @@ public class CoreService extends Service { // if (!Util.isWifiIsOpen(runtime.getContextProxy().context,runtime)) // Util.turnOnWifiForConnect(runtime.getContextProxy().context, runtime); } - } else if ("android.intent.action.SCREEN_OFF".equals(intent.getAction()) && Util.isWifiIsOpen(runtime.getContextProxy().context,runtime)) { - // CoreService.is_wifi_network_ok = true; + } else if ("android.intent.action.SCREEN_OFF".equals(intent.getAction()) && Util.isWifiIsOpen(runtime.getContextProxy().context, runtime)) { + // CoreService.is_wifi_network_ok = true; if (!runtime.isNoTurnOffWifiOnScreenOff()) { //不关闭wifi when ScreenOff ICLogger.i("turnOffWifiForConnect"); // if (Util.isWifiIsOpen(runtime.getContextProxy().context,runtime)) // Util.turnOffWifiForSleep(runtime.getContextProxy().context, runtime); } - }else if (intent.getAction().equals("android.media.VOLUME_CHANGED_ACTION")) { + } else if (intent.getAction().equals("android.media.VOLUME_CHANGED_ACTION")) { int streamType = intent.getIntExtra("android.media.EXTRA_VOLUME_STREAM_TYPE", -1); - ICLogger.i("Volume changed stream type "+streamType); + ICLogger.i("Volume changed stream type " + streamType); int newVolume = intent.getIntExtra("android.media.EXTRA_VOLUME_STREAM_VALUE", 0); int oldVolume = intent.getIntExtra("android.media.EXTRA_PREV_VOLUME_STREAM_VALUE", 0); - boolean isSilence = SharPreferenceUtil.getPrefBoolean(context, "KEY_ISSILENCE", false); + boolean isSilence = SharPreferenceUtil.getPrefBoolean(context, "KEY_ISSILENCE", false); if (newVolume != oldVolume && !isSilence) { - ICLogger.i("Volume changed old "+oldVolume+" new "+newVolume); - Config.setMasterVolume(context,newVolume); + ICLogger.i("Volume changed old " + oldVolume + " new " + newVolume); + Config.setMasterVolume(context, newVolume); } } } }; - private Runnable mRetryConnectSrvThread=new Runnable(){ + private Runnable mRetryConnectSrvThread = new Runnable() { @Override public void run() { - if (connection.isServerConnected()&& runtime.isServerProtocolConnected()) { + if (connection.isServerConnected() && runtime.isServerProtocolConnected()) { mKeepAlive.onHeartAlarm(connection, runtime); - }else{ + } else { ICLogger.i("mRetryConnectSrvThread 发送心跳包时,如果发现服务器没有响应,或者socket连接,则重新尝试连接服务器!"); connection.disconnectServer(); startConnectionRetryTimer(); @@ -445,7 +444,7 @@ public class CoreService extends Service { // Initialize initialize = new Initialize(); CheckSIM checkSIM = new CheckSIM(); this.mKeepAlive = new KeepAlive(); - this.mDeliver = new Deliver(this.connection,this.runtime); + this.mDeliver = new Deliver(this.connection, this.runtime); // initialize.setNext(checkSIM); checkSIM.setNext(this.mKeepAlive); this.mKeepAlive.setNext(this.mDeliver); @@ -454,10 +453,11 @@ public class CoreService extends Service { SilentManager silentManager; + private AbstractInvokeHandlerService getInvokeHandlerServiceChain() { ICLogger.i("getInvokeHandlerServiceChain"); SendChatMessage sendChatMessage = new SendChatMessage(); - HeartRateManager heartRateManager= new HeartRateManager(this.runtime,this.connection); + HeartRateManager heartRateManager = new HeartRateManager(this.runtime, this.connection); antiservice = new AntiMonitorService(); silentManager = SilentManager.getInstance();// new SilentManager(); sendChatMessage.setNext(heartRateManager); @@ -466,35 +466,38 @@ public class CoreService extends Service { return sendChatMessage; } - private void resetStepCount(){ - if ( ICJniUtils.isPedometerEnabled() == 0)ICJniUtils.enablePedometer(); + private void resetStepCount() { + if (ICJniUtils.isPedometerEnabled() == 0) ICJniUtils.enablePedometer(); ICJniUtils.resetStepCount(); SharPreferenceUtil.setPrefInt(this, KEY_STEP_COUNT, 0); SharPreferenceUtil.setPrefInt(this, KEY_SAVE_STEP_COUNT, 0); - ICLogger.i("Reset StepCount , "+ICJniUtils.getStepCount()); + ICLogger.i("Reset StepCount , " + ICJniUtils.getStepCount()); this.runtime.setSaveStepCount(0); this.runtime.setTotalStepCount(0); } + private void loadStepCount() { int i = SharPreferenceUtil.getPrefInt(this, KEY_STEP_COUNT, 0); int j = SharPreferenceUtil.getPrefInt(this, KEY_SAVE_STEP_COUNT, 0); - if ( ICJniUtils.isPedometerEnabled() == 0)ICJniUtils.enablePedometer(); + if (ICJniUtils.isPedometerEnabled() == 0) ICJniUtils.enablePedometer(); //ICJniUtils.recoverStepCount(); - if (ICJniUtils.getStepCount()>i){ - i=ICJniUtils.getStepCount(); + if (ICJniUtils.getStepCount() > i) { + i = ICJniUtils.getStepCount(); } this.runtime.setSaveStepCount(j); this.runtime.setTotalStepCount(i); runtime.setLastStepCountForBT(runtime.getTotalStepCount()); runtime.setLastStepCount(runtime.getTotalStepCount()); } - public void saveStepCount(){ + + public void saveStepCount() { int i = runtime.getTotalStepCount(); int j = runtime.getSaveStepCount(); SharPreferenceUtil.setPrefInt(this, KEY_STEP_COUNT, i); SharPreferenceUtil.setPrefInt(this, KEY_SAVE_STEP_COUNT, j); //ICJniUtils.saveStepCount(); } + private void setCleanStepCountAlarm() { /*一天清零一次 计步*/ // AlarmHelper.setCleanStepCountAlarm(this, 23, 59, STEP_COUNT_ALARM_ACTION); @@ -535,38 +538,39 @@ public class CoreService extends Service { private void setPracticeAlarm() { - ICLogger.i("setPracticeAlarm "+Runtime.practice_cycle+ " seconds!"); + ICLogger.i("setPracticeAlarm " + Runtime.practice_cycle + " seconds!"); //只有周期大于1才有效,否则就等于单次测量 - if (Runtime.practice_cycle>1) - AlarmHelper.setRealTimeAlarmInSeconds(runtime.getContextProxy().context,Runtime.practice_cycle,Constants.ACTION_PRACTICE_REPORT_ALARM); + if (Runtime.practice_cycle > 1) + AlarmHelper.setRealTimeAlarmInSeconds(runtime.getContextProxy().context, Runtime.practice_cycle, Constants.ACTION_PRACTICE_REPORT_ALARM); mHandler.post(mdoPracticeCheck); } - private Runnable mdoPracticeCheck=new Runnable(){ + + private Runnable mdoPracticeCheck = new Runnable() { @Override public void run() { //获取并设置当前步数 - ICLogger.i("自由锻炼中,设置步数 "+runtime.getTotalStepCount()); + ICLogger.i("自由锻炼中,设置步数 " + runtime.getTotalStepCount()); Runtime.healthInfo.setStepCount(runtime.getTotalStepCount()); //开启定位 // locationClient.triggerLocationProcess(); //开启测温 - if(runtime.check_stat_do_temp_test()) + if (runtime.check_stat_do_temp_test()) TemperatureUtil.DoTempTest(); //开启测量PPG - if(runtime.check_stat_do_ppg_test()) + if (runtime.check_stat_do_ppg_test()) HeartRateManager.triggerPPGtest(); } }; - private void checkconnection(){ + private void checkconnection() { - if (!this.connection.isServerConnected()) - { + if (!this.connection.isServerConnected()) { startConnectionRetryTimer(); } } + private void wakeUpFromSleep() { this.startAlarmCount = 0; // alarmCycle = 1; @@ -589,11 +593,13 @@ public class CoreService extends Service { Toast.makeText((this.runtime.getContextProxy()).context, "从深度睡眠中切换模式,联网中", Toast.LENGTH_SHORT).show(); } - public int cmcm_call_eiot_into_powersave_mode() { return 0; } + public int cmcm_call_eiot_into_powersave_mode() { + return 0; + } public PowerManager.WakeLock getWakeLock(int paramInt) { - PowerManager.WakeLock wakeLock = ((PowerManager)(this.runtime.getContextProxy()).context.getSystemService(POWER_SERVICE)).newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, MY_WAKE_LOCKTAG); + PowerManager.WakeLock wakeLock = ((PowerManager) (this.runtime.getContextProxy()).context.getSystemService(POWER_SERVICE)).newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, MY_WAKE_LOCKTAG); // wakeLock.acquire(paramInt*60*1000L); wakeLock.acquire(3000L); return wakeLock; @@ -604,27 +610,33 @@ public class CoreService extends Service { } - - public Runtime getRuntime(){ + public Runtime getRuntime() { return runtime; } - public Connection getConnection(){ + + public Connection getConnection() { return connection; } - private static boolean server_starting=true; + + private static boolean server_starting = true; + @Override public void onCreate() { - - server_starting=true; + if (mHandler == null) { + HandlerThread handlerThread = new HandlerThread("ic:core-thread"); + handlerThread.start(); + mHandler = new Handler(handlerThread.getLooper()); + } + server_starting = true; log("初始化网络协议服务"); - mProtocolServer=this; - java.lang.Runtime.getRuntime().addShutdownHook(new Thread(){ + mProtocolServer = this; + java.lang.Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { super.run(); //设置断网状态 ICLogger.i("shutdown !"); - Util.setSystemProperties("persist.sys.server_connected","false"); + Util.setSystemProperties("persist.sys.server_connected", "false"); } }); this.runtime = new Runtime(); @@ -632,17 +644,16 @@ public class CoreService extends Service { this.runtime.setCacheDir(getExternalCacheDir()); this.runtime.setDBHelper(new DBHelper(getContentResolver(), this)); this.runtime.setContextProxy(new ContextProxy(this)); - this.runtime.setLbsHelper(new LBSHelper(this,this.runtime.getContextProxy().getWifiManager(), this.runtime)); + this.runtime.setLbsHelper(new LBSHelper(this, this.runtime.getContextProxy().getWifiManager(), this.runtime)); this.runtime.setHRS(new heartRateStatus()); this.runtime.setUseQueue(true); this.runtime.initDnsUtil(ICApplication.getInstance().getApplicationContext()); - if (Config.protocol_no==Config.PROTOCOL_MQTT) - { + if (Config.protocol_no == Config.PROTOCOL_MQTT) { connection = new mqttConnection(new ServerHandler(this), runtime); - }else { + } else { connection = new NettyConnection(new ServerHandler(this), runtime); } this.connectionServiceChain = getConnectionServiceChain(); @@ -652,12 +663,12 @@ public class CoreService extends Service { // return; // } - smsManager= new ICSmsManager(runtime); + smsManager = new ICSmsManager(runtime); //保证获取正确的计步数据及其他参数初始化 loadStepCount(); - if (Config.logBootDate(this)){ + if (Config.logBootDate(this)) { resetStepCount(); } @@ -666,8 +677,8 @@ public class CoreService extends Service { Config.LoadMessageConfigs(); if (Config.custom_name.equals("H88")) { - Config.ConfigAlarm(Runtime.AlarmType.ALARM_ANTIOFF,true); - Config.ConfigAlarm(Runtime.AlarmType.ALARM_WEARED,true); + Config.ConfigAlarm(Runtime.AlarmType.ALARM_ANTIOFF, true); + Config.ConfigAlarm(Runtime.AlarmType.ALARM_WEARED, true); if (Config.getConfigInitFlag(this) == 0) { Config.setLocationMode(this, CUSTOM_MOD8_GPS); Config.setLocationCycle(this, 3600); @@ -675,10 +686,10 @@ public class CoreService extends Service { Config.setTemperatureTestCycle(runtime, 60 * 60); Config.setConfigInitFlag(this, 1); } - }else if (Config.custom_name.equals("l004")) { - Config.ConfigAlarm(Runtime.AlarmType.ALARM_CUTOFF,true); - Config.ConfigAlarm(Runtime.AlarmType.ALARM_ILLEGAL_CUTOFF,true); - Config.ConfigAlarm(Runtime.AlarmType.ALARM_LOCK_WATCH,true); + } else if (Config.custom_name.equals("l004")) { + Config.ConfigAlarm(Runtime.AlarmType.ALARM_CUTOFF, true); + Config.ConfigAlarm(Runtime.AlarmType.ALARM_ILLEGAL_CUTOFF, true); + Config.ConfigAlarm(Runtime.AlarmType.ALARM_LOCK_WATCH, true); if (Config.getConfigInitFlag(this) == 0) { Config.setLocationMode(this, CUSTOM_MOD8_GPS); @@ -688,32 +699,32 @@ public class CoreService extends Service { Config.setConfigInitFlag(this, 1); } - }else if (Config.custom_name.equals("YQ") || Config.custom_name.equals("YQ_EN")) { - Config.ConfigAlarm(Runtime.AlarmType.ALARM_CUTOFF,true); - Config.ConfigAlarm(Runtime.AlarmType.ALARM_ILLEGAL_CUTOFF,true); - Config.ConfigAlarm(Runtime.AlarmType.ALARM_LOCK_WATCH,true); - Config.ConfigAlarm(Runtime.AlarmType.ALARM_WEARED,true); - Config.ConfigAlarm(Runtime.AlarmType.ALARM_ANTIOFF,true); - Config.ConfigAlarm(Runtime.AlarmType.ALARM_UNREADMSG,true); - Config.ConfigAlarm(Runtime.AlarmType.ALARM_MSGREAD,true); + } else if (Config.custom_name.equals("YQ") || Config.custom_name.equals("YQ_EN")) { + Config.ConfigAlarm(Runtime.AlarmType.ALARM_CUTOFF, true); + Config.ConfigAlarm(Runtime.AlarmType.ALARM_ILLEGAL_CUTOFF, true); + Config.ConfigAlarm(Runtime.AlarmType.ALARM_LOCK_WATCH, true); + Config.ConfigAlarm(Runtime.AlarmType.ALARM_WEARED, true); + Config.ConfigAlarm(Runtime.AlarmType.ALARM_ANTIOFF, true); + Config.ConfigAlarm(Runtime.AlarmType.ALARM_UNREADMSG, true); + Config.ConfigAlarm(Runtime.AlarmType.ALARM_MSGREAD, true); if (Config.getConfigInitFlag(this) == 0) { Config.setLocationMode(this, NORMAL_MOD); - Config.setLocationCycle(this, 15*60); + Config.setLocationCycle(this, 15 * 60); Config.setPPGTestCycle(this, 0); Config.setTemperatureTestCycle(runtime, 0); Config.setConfigInitFlag(this, 1); } - }else if (Config.custom_name.equals("AK")) { + } else if (Config.custom_name.equals("AK")) { - Config.ConfigAlarm(Runtime.AlarmType.ALARM_SOS,true); - Config.ConfigAlarm(Runtime.AlarmType.ALARM_LOWBATTERY,true); - Config.ConfigAlarm(Runtime.AlarmType.ALARM_WEARED,true); - Config.ConfigAlarm(Runtime.AlarmType.ALARM_ANTIOFF,true); - Config.enableSleep=true; + Config.ConfigAlarm(Runtime.AlarmType.ALARM_SOS, true); + Config.ConfigAlarm(Runtime.AlarmType.ALARM_LOWBATTERY, true); + Config.ConfigAlarm(Runtime.AlarmType.ALARM_WEARED, true); + Config.ConfigAlarm(Runtime.AlarmType.ALARM_ANTIOFF, true); + Config.enableSleep = true; - if (Config.getConfigInitFlag(this)==0) { + if (Config.getConfigInitFlag(this) == 0) { Config.setPPGTestCycle(this, 0); Config.setTemperatureTestCycle(runtime, 0); Config.setConfigInitFlag(this, 1); @@ -727,38 +738,38 @@ public class CoreService extends Service { // runtime.getDbHelper().saveContacts(contactArray,false,false,false,false,false,true); // } } - }else if (Config.custom_name.equals("YT")) { + } else if (Config.custom_name.equals("YT")) { - Config.ConfigAlarm(Runtime.AlarmType.ALARM_SOS,true); - Config.ConfigAlarm(Runtime.AlarmType.ALARM_LOWBATTERY,true); - Config.ConfigAlarm(Runtime.AlarmType.ALARM_WEARED,true); - Config.ConfigAlarm(Runtime.AlarmType.ALARM_ANTIOFF,true); - Config.enableSleep=true; + Config.ConfigAlarm(Runtime.AlarmType.ALARM_SOS, true); + Config.ConfigAlarm(Runtime.AlarmType.ALARM_LOWBATTERY, true); + Config.ConfigAlarm(Runtime.AlarmType.ALARM_WEARED, true); + Config.ConfigAlarm(Runtime.AlarmType.ALARM_ANTIOFF, true); + Config.enableSleep = true; - if (Config.getConfigInitFlag(this)==0) { + if (Config.getConfigInitFlag(this) == 0) { Config.setPPGTestCycle(this, 0); Config.setTemperatureTestCycle(runtime, 0); Config.setConfigInitFlag(this, 1); - int contactcount=runtime.getDbHelper().getContactCount(getContentResolver()); - ICLogger.i("=====Contact count "+contactcount); - if(contactcount==0){ //如果没有SOS + int contactcount = runtime.getDbHelper().getContactCount(getContentResolver()); + ICLogger.i("=====Contact count " + contactcount); + if (contactcount == 0) { //如果没有SOS ICLogger.i("=====add hotline 96885 "); - ArrayList contactArray=new ArrayList(); + ArrayList contactArray = new ArrayList(); contactArray.add(new Contact(Contact.CATEGORY_CALL, this.getResources().getString(R.string.hotline), "96885")); - runtime.getDbHelper().saveContacts(contactArray,false,false,false,false,false,true); + runtime.getDbHelper().saveContacts(contactArray, false, false, false, false, false, true); } } - }else if (Config.custom_name.equals("SGL")) { //C5项目 - Config.ConfigAlarm(Runtime.AlarmType.ALARM_ESCAPE,true); - Config.ConfigAlarm(Runtime.AlarmType.ALARM_CUTOFF,true); - Config.ConfigAlarm(Runtime.AlarmType.ALARM_ILLEGAL_CUTOFF,true); - Config.ConfigAlarm(Runtime.AlarmType.ALARM_LOCK_WATCH,true); + } else if (Config.custom_name.equals("SGL")) { //C5项目 + Config.ConfigAlarm(Runtime.AlarmType.ALARM_ESCAPE, true); + Config.ConfigAlarm(Runtime.AlarmType.ALARM_CUTOFF, true); + Config.ConfigAlarm(Runtime.AlarmType.ALARM_ILLEGAL_CUTOFF, true); + Config.ConfigAlarm(Runtime.AlarmType.ALARM_LOCK_WATCH, true); Config.forceMoveCheck = false; //对定位不进行运动检测。 - if (Config.getConfigInitFlag(this)==0) { + if (Config.getConfigInitFlag(this) == 0) { Config.setLocationMode(this, CUSTOM_MOD8_GPS); // Config.setLocationMode(this, CUSTOM_MOD8_WIFI); - Config.setLocationCycle(this, 5*60); + Config.setLocationCycle(this, 5 * 60); Config.setPPGTestCycle(this, 0); Config.setTemperatureTestCycle(runtime, 0); Config.setConfigInitFlag(this, 1); @@ -772,7 +783,7 @@ public class CoreService extends Service { // runtime.getDbHelper().saveContacts(contactArray,false,false,false,false,false,true); // } } - }else if (Config.custom_name.equals("L02") || Config.custom_name.equals("L03")||Config.custom_name.equals("L05")) { //L02 + } else if (Config.custom_name.equals("L02") || Config.custom_name.equals("L03") || Config.custom_name.equals("L05")) { //L02 Config.forceMoveCheck = false; //即爱对gps不进行运动检测,此变量专门为了给其他协议进行强制运动检测用的。 if (Config.getConfigInitFlag(this) == 0) { Config.setPPGTestCycle(this, 0); @@ -780,24 +791,24 @@ public class CoreService extends Service { Config.setConfigInitFlag(this, 1); } - }else if (Config.custom_name.equals("VitracK")){ + } else if (Config.custom_name.equals("VitracK")) { - Config.ConfigAlarm(Runtime.AlarmType.ALARM_SOS,true); - Config.ConfigAlarm(Runtime.AlarmType.ALARM_LOWBATTERY,true); - Config.ConfigAlarm(Runtime.AlarmType.ALARM_WEARED,true); - Config.ConfigAlarm(Runtime.AlarmType.ALARM_ANTIOFF,true); - Config.enableSleep=false; - if (Config.getConfigInitFlag(this)==0) { + Config.ConfigAlarm(Runtime.AlarmType.ALARM_SOS, true); + Config.ConfigAlarm(Runtime.AlarmType.ALARM_LOWBATTERY, true); + Config.ConfigAlarm(Runtime.AlarmType.ALARM_WEARED, true); + Config.ConfigAlarm(Runtime.AlarmType.ALARM_ANTIOFF, true); + Config.enableSleep = false; + if (Config.getConfigInitFlag(this) == 0) { Config.setLocationMode(this, CUSTOM_MOD8_GPS); - Config.setLocationCycle(this, 15*60); - Config.setPPGTestCycle(this, 15*60); - Config.setTemperatureTestCycle(runtime, 15*60); + Config.setLocationCycle(this, 15 * 60); + Config.setPPGTestCycle(this, 15 * 60); + Config.setTemperatureTestCycle(runtime, 15 * 60); Config.setConfigInitFlag(this, 1); } - }else{ + } else { - if (Config.getConfigInitFlag(this)==0) { + if (Config.getConfigInitFlag(this) == 0) { Config.setPPGTestCycle(this, 0); Config.setTemperatureTestCycle(runtime, 0); Config.setConfigInitFlag(this, 1); @@ -809,7 +820,7 @@ public class CoreService extends Service { runtime.setNeddReportCutoff(Config.getNeedCutOff(this)); runtime.setNeedAntioff(Config.getNeedAntiOff(this)); - Config.setHeartBeatCycle(this,alarmCycle); //临时设置为5分钟,给L03测试用。测试断线问题未解决,取消测试。 + Config.setHeartBeatCycle(this, alarmCycle); //临时设置为5分钟,给L03测试用。测试断线问题未解决,取消测试。 //初始化ServerHeartBeat Cycle Config.loadHearBeatSetting(runtime); //初始化PPG,LocationMod,LocationCycle @@ -821,7 +832,7 @@ public class CoreService extends Service { //读取Alarm环境配置,项目不需要的Alarm不要发送, 目前环境变量配置优先。默认值会被覆盖。 Config.loadAlarmConfig(); - Config.enable_NTP_Server(this,!Config.disable_ntp_server); + Config.enable_NTP_Server(this, !Config.disable_ntp_server); //初始化温度测试相关参数 @@ -830,7 +841,7 @@ public class CoreService extends Service { //加载存储的健康数据校准值 - Config.loadPPG_BPH_BPL_SPO2_adjustvalue(this,runtime); + Config.loadPPG_BPH_BPL_SPO2_adjustvalue(this, runtime); this.connectionServiceChain.processAttach(this.connection, this.runtime); this.invokeHandlerServiceChain.processAttach(this.connection, this.runtime); @@ -878,35 +889,35 @@ public class CoreService extends Service { intentFilter.addAction(ACTION_QUERY_WEATHER); intentFilter.addAction(ACTION_SEND_EMEGENCY_LOCATION_START); intentFilter.addAction(ACTION_LOCAL_SOS_ACTION); - registerReceiver(broadcastSOSReceiver,intentFilter); + registerReceiver(broadcastSOSReceiver, intentFilter); //添加自由锻炼 接收 intentFilter = new IntentFilter(); intentFilter.addAction(Constants.ACTION_START_PRACTISE); - registerReceiver(broadcastPracticeCMDReceiver,intentFilter); + registerReceiver(broadcastPracticeCMDReceiver, intentFilter); //初始化Sim信号 this.mSignalUtil = SimSignalUtil.getInstance(this); //初始化 电池电量监控工具(内部注册接收电池变化) - batteryUtil = new BatteryUtil(this.runtime,connection); + batteryUtil = new BatteryUtil(this.runtime, connection); //保证发送心跳时提前获取BatLevel数据 - int batlevel=batteryUtil.getBatteryLevel(this); - runtime.setBattery(String.format("%03d",batlevel)); + int batlevel = batteryUtil.getBatteryLevel(this); + runtime.setBattery(String.format("%03d", batlevel)); runtime.setBattery(batlevel); - ICLogger.i("Battery get from api "+batlevel); + ICLogger.i("Battery get from api " + batlevel); boolean charging = batteryUtil.isPowerConnected(this); runtime.setPowerConnected(charging); - ICLogger.i("Charging "+charging); + ICLogger.i("Charging " + charging); // LedUtil.setRedLedOn(false); - if (Config.isL03Tracker){ + if (Config.isL03Tracker) { - if (runtime.isPowerConnected()) { + if (runtime.isPowerConnected()) { LedUtil.setRedLedOn(true); - }else{ + } else { LedUtil.setRedLedOn(false); } } @@ -935,7 +946,7 @@ public class CoreService extends Service { //获取定位时间 - needLocateInAfterHeartBeat=true; + needLocateInAfterHeartBeat = true; setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); //设置温度测量间隔时间 @@ -944,36 +955,35 @@ public class CoreService extends Service { //初始化佩戴检测 - runtime.anti_test_cycle=Config.getCheckAntiPolingCycle(this); - if( runtime.anti_test_cycle>0){ - // setAntiAlarm(); + runtime.anti_test_cycle = Config.getCheckAntiPolingCycle(this); + if (runtime.anti_test_cycle > 0) { + // setAntiAlarm(); } //初始化蓝牙检测 - runtime.bleInfo.bleScanCycle=Config.getBleScanCycle(this); - if(Config.BLEScanProtocol==1 && runtime.bleInfo.bleScanCycle>0) - { + runtime.bleInfo.bleScanCycle = Config.getBleScanCycle(this); + if (Config.BLEScanProtocol == 1 && runtime.bleInfo.bleScanCycle > 0) { setBleScanAlarm(runtime.bleInfo.bleScanCycle); } //设置来电模式 - Util.SetRingMode(this, AudioManager.RINGER_MODE_NORMAL,true); + Util.SetRingMode(this, AudioManager.RINGER_MODE_NORMAL, true); //备份DB数据到sd cache目录,为调试方便 Util.getDBFile(); // test(); //test function - //更新MCC MNC + //更新MCC MNC CellInfoUtil.setCurrentAttachCellInfo(CoreService.getInstance().runtime); - //更新IMEI + //更新IMEI DeviceInfoUtil.updateImei(runtime); //设置断网状态 - Util.setSystemProperties("persist.sys.server_connected","false"); + Util.setSystemProperties("persist.sys.server_connected", "false"); //启动结束设置标志位,让心率和体温检测可以正常执行。 - server_starting=false; + server_starting = false; //重置缓存中的在等待命令 Deliver.resetCMDReocrdsDB(); @@ -981,45 +991,46 @@ public class CoreService extends Service { ReConnectToServer(); } - private void test(){ + private void test() { ICLogger.i("周一清除所有睡眠数据Record"); runtime.getDbHelper().deleteSleepData(); } //检查是否有未读消息需要提醒 - private void checkUnreadMessage(){ + private void checkUnreadMessage() { - String msg=Config.getLastUnReadMessage(this); - Util.checkMesageNeedNotifi(msg,runtime); + String msg = Config.getLastUnReadMessage(this); + Util.checkMesageNeedNotifi(msg, runtime); } //内部广播StringMessage - public static void DevliverStringMessage(String cmd){ - CoreService.getInstance().connection.DeliverCMDMessageToSystem(cmd,""); + public static void DevliverStringMessage(String cmd) { + CoreService.getInstance().connection.DeliverCMDMessageToSystem(cmd, ""); } + //内部广播StringMessage - public static void DevliverStringMessage(String cmd,String str){ - CoreService.getInstance().connection.DeliverCMDMessageToSystem(cmd,str); + public static void DevliverStringMessage(String cmd, String str) { + CoreService.getInstance().connection.DeliverCMDMessageToSystem(cmd, str); } //表带剪断检测报警,此处只是设备本地提醒,并不发送报警信息给服务器。 - public void checkAlarmMessage(){ + public void checkAlarmMessage() { - if (runtime.Fence_Warning_flag>0 && Config.needAllwaysAlarmFenceOut){ + if (runtime.Fence_Warning_flag > 0 && Config.needAllwaysAlarmFenceOut) { runtime.Fence_Warning_flag++; WakeLockUtil.ScreenOnWakeLockTemperary(runtime.getContextProxy().context); - runtime.getContextProxy().sendMsgBroadcast(runtime.getContextProxy().context.getResources().getString(R.string.alarm_out_wall),2); + runtime.getContextProxy().sendMsgBroadcast(runtime.getContextProxy().context.getResources().getString(R.string.alarm_out_wall), 2); } - if(runtime.Cut_off_flag>0 && Config.needAllwaysAlarmCutOff){ + if (runtime.Cut_off_flag > 0 && Config.needAllwaysAlarmCutOff) { runtime.Cut_off_flag++; // WakeLockUtil.ScreenOnWakeLockTemperary(runtime.getContextProxy().context); if (Config.A9_noBroadCastActionStrip) { - if(Config.needBroadcastCutoffAlarm) { + if (Config.needBroadcastCutoffAlarm) { antiservice.send_cutoff_event_broadcast(1); } @@ -1029,21 +1040,21 @@ public class CoreService extends Service { } //检测久坐提醒 - public void checkKeepSitting(){ - String dateyyyyMMDDhhmmss=TimeUtil.getSystemTime3(); + public void checkKeepSitting() { + String dateyyyyMMDDhhmmss = TimeUtil.getSystemTime3(); //为了更新 isInSleepRange, 下面的语句必须执行 TimeUtil.getCurrentSleepRecordDate(dateyyyyMMDDhhmmss); - if(TimeUtil.isInSleepRange == false) { //不在睡眠时间就是久坐时间段。 - if (Runtime.lastSitCheckStepCount == -1){ - Runtime.lastSitCheckStepCount=runtime.getTotalStepCount(); - Runtime.lastSitCheckTiimeyyyyMMddHHmmss=TimeUtil.getSystemTime3(); - } - int keepsitRange=Config.getKeepSitRangeInMinutes(this); - int minutes=(int)TimeUtil.diffBetween2DateInMinutes(Runtime.lastSitCheckTiimeyyyyMMddHHmmss,dateyyyyMMDDhhmmss); - ICLogger.i("SitCheck last SitCheckTime "+ Runtime.lastSitCheckTiimeyyyyMMddHHmmss + " , current checktime "+dateyyyyMMDDhhmmss); - ICLogger.i("SitCheck minutes "+ minutes + " , keepsitRange "+keepsitRange); - if (minutes >=keepsitRange && keepsitRange>0){ - if ( (runtime.getTotalStepCount() - Runtime.lastSitCheckStepCount)/minutes < Config.KeepSitJudgementRefValue){ + if (TimeUtil.isInSleepRange == false) { //不在睡眠时间就是久坐时间段。 + if (Runtime.lastSitCheckStepCount == -1) { + Runtime.lastSitCheckStepCount = runtime.getTotalStepCount(); + Runtime.lastSitCheckTiimeyyyyMMddHHmmss = TimeUtil.getSystemTime3(); + } + int keepsitRange = Config.getKeepSitRangeInMinutes(this); + int minutes = (int) TimeUtil.diffBetween2DateInMinutes(Runtime.lastSitCheckTiimeyyyyMMddHHmmss, dateyyyyMMDDhhmmss); + ICLogger.i("SitCheck last SitCheckTime " + Runtime.lastSitCheckTiimeyyyyMMddHHmmss + " , current checktime " + dateyyyyMMDDhhmmss); + ICLogger.i("SitCheck minutes " + minutes + " , keepsitRange " + keepsitRange); + if (minutes >= keepsitRange && keepsitRange > 0) { + if ((runtime.getTotalStepCount() - Runtime.lastSitCheckStepCount) / minutes < Config.KeepSitJudgementRefValue) { //平均 每分钟活动数 小于参考久坐计步值,表示久坐 ICLogger.i("SitCheck 平均 每分钟活动数 小于参考久坐计步值,表示久坐"); WakeLockUtil.ScreenOnWakeLockTemperary(this); @@ -1053,50 +1064,50 @@ public class CoreService extends Service { //提醒后 重置 lastCheckSitTime 以及 lastSitCheckStepCount , 重新计时 - Runtime.lastSitCheckStepCount=runtime.getTotalStepCount(); - Runtime.lastSitCheckTiimeyyyyMMddHHmmss=TimeUtil.getSystemTime3(); + Runtime.lastSitCheckStepCount = runtime.getTotalStepCount(); + Runtime.lastSitCheckTiimeyyyyMMddHHmmss = TimeUtil.getSystemTime3(); - if(Config.isAlarmTypeEnabled(Runtime.AlarmType.ALARM_SEDENTARY)){ + if (Config.isAlarmTypeEnabled(Runtime.AlarmType.ALARM_SEDENTARY)) { runtime.setAlarmType(Runtime.AlarmType.ALARM_SEDENTARY); // Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime)); ICLogger.i("triggerSOSLocationProcess "); locationClient.triggerSOSLocationProcess(); } - }else{ + } else { //只要 平均每分钟活动数大于参考值,则重置 lastCheckSitTime 以及 lastSitCheckStepCount ICLogger.i("SitCheck 平均每分钟活动数大于参考值,则重置 lastCheckSitTime 以及 lastSitCheckStepCount"); - Runtime.lastSitCheckStepCount=runtime.getTotalStepCount(); - Runtime.lastSitCheckTiimeyyyyMMddHHmmss=TimeUtil.getSystemTime3(); + Runtime.lastSitCheckStepCount = runtime.getTotalStepCount(); + Runtime.lastSitCheckTiimeyyyyMMddHHmmss = TimeUtil.getSystemTime3(); } } - }else{ - Runtime.lastSitCheckStepCount=-1; //不在时间段就重置数据,以便下一次使用能过重新开始计数。 + } else { + Runtime.lastSitCheckStepCount = -1; //不在时间段就重置数据,以便下一次使用能过重新开始计数。 } } - public void updateSleepDate(){ - String dateyyyyMMDDhhmmss=TimeUtil.getSystemTime3(); - String sleepdate=TimeUtil.getCurrentSleepRecordDate(dateyyyyMMDDhhmmss); - ICLogger.i("updateSleepDate "+sleepdate); - if(TimeUtil.isInSleepRange == true) { - runtime.getDbHelper().insertSleepRecord(new SleepRecord(dateyyyyMMDDhhmmss,sleepdate,runtime.getTotalStepCount())); - runtime.sleepDataReported=false; //只要记录过数据 就证明有数据没有report - }else{ + public void updateSleepDate() { + String dateyyyyMMDDhhmmss = TimeUtil.getSystemTime3(); + String sleepdate = TimeUtil.getCurrentSleepRecordDate(dateyyyyMMDDhhmmss); + ICLogger.i("updateSleepDate " + sleepdate); + if (TimeUtil.isInSleepRange == true) { + runtime.getDbHelper().insertSleepRecord(new SleepRecord(dateyyyyMMDDhhmmss, sleepdate, runtime.getTotalStepCount())); + runtime.sleepDataReported = false; //只要记录过数据 就证明有数据没有report + } else { if (runtime.sleepDataReported == false) { //calculate sleep data and report it randomly within 1 hour runtime.sleepDataReported = true; int score = runtime.getDbHelper().querySleepScore(sleepdate); if (score > 0) { - ICLogger.i("已经有"+sleepdate+"的睡眠数据!"); + ICLogger.i("已经有" + sleepdate + "的睡眠数据!"); } else { SleepInfo si = SleepInfo.getInstance(); si.setDate(sleepdate); si.calculate_sleepInfo(runtime); runtime.getDbHelper().updateSleepInfo(si); - if (TimeUtil.getWeek().equals("周一")){ + if (TimeUtil.getWeek().equals("周一")) { ICLogger.i("周一清除所有睡眠数据Record"); runtime.getDbHelper().deleteSleepData(); } @@ -1112,16 +1123,16 @@ public class CoreService extends Service { // Observable.timer(randomint * 60 * 1000L, TimeUnit.MILLISECONDS).subscribe(new Action1() { // public void call(Long param1Long) { // connection.send(protocolAPIHelper); - ICLogger.i("Send sleep info " + si.getCurrentDate() - + " deep " + si.getDeepsleep_minutes() - + " light " + si.getLightsleep_minutes() - + " score " + si.getScore() - ); - if (Config.enableSleep) { - Deliver.sendLocationMSG(protocolAPIHelper.getSleepMSG(SleepInfo.getInstance(), runtime)); - }else{ - ICLogger.i(" 没有开启睡眠协议,skip send message!"); - } + ICLogger.i("Send sleep info " + si.getCurrentDate() + + " deep " + si.getDeepsleep_minutes() + + " light " + si.getLightsleep_minutes() + + " score " + si.getScore() + ); + if (Config.enableSleep) { + Deliver.sendLocationMSG(protocolAPIHelper.getSleepMSG(SleepInfo.getInstance(), runtime)); + } else { + ICLogger.i(" 没有开启睡眠协议,skip send message!"); + } // } // }); @@ -1129,8 +1140,9 @@ public class CoreService extends Service { } } } + public int onStartCommand(Intent paramIntent, int paramInt1, int paramInt2) { - if (paramIntent != null && paramIntent.getAction()!=null) { + if (paramIntent != null && paramIntent.getAction() != null) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("onStartCommand action="); stringBuilder.append(paramIntent.getAction()); @@ -1179,7 +1191,7 @@ public class CoreService extends Service { if (Config.LOG_TOFILE) ICLogger.logToFile("alarmCycle", "HEART_ALARM alarmCycle "); return Service.START_STICKY; - }else if (ACTION_LOCATION_ALARM.equals(paramIntent.getAction())) { + } else if (ACTION_LOCATION_ALARM.equals(paramIntent.getAction())) { // if (cmcm_call_eiot_into_powersave_mode() == 1) { @@ -1218,29 +1230,29 @@ public class CoreService extends Service { if (Config.LOG_TOFILE) ICLogger.logToFile("alarmCycle", stringBuilder1.toString()); // this.locationClient.triggerLocationProcess(); - }else if (Constants.OTHER_ALARM_END.equals(paramIntent.getAction())) { + } else if (Constants.OTHER_ALARM_END.equals(paramIntent.getAction())) { ICLogger.i("OTHER_ALARM_END set Ringmode Normal vib true"); - SilentManager.setSilentConfig(this,false); - }else if (Constants.OTHER_ALARM_START.equals(paramIntent.getAction())) { + SilentManager.setSilentConfig(this, false); + } else if (Constants.OTHER_ALARM_START.equals(paramIntent.getAction())) { ICLogger.i("OTHER_ALARM_START set Ringmode Silent vib false"); - SilentManager.setSilentConfig(this,true); - }else if (Constants.ACTION_ALARM_BLE_SCAN.equals(paramIntent.getAction())) { - //循环蓝牙扫描 + SilentManager.setSilentConfig(this, true); + } else if (Constants.ACTION_ALARM_BLE_SCAN.equals(paramIntent.getAction())) { + //循环蓝牙扫描 setBleScanAlarm(runtime.bleInfo.bleScanCycle); - }else if (Constants.ACTION_PRACTICE_REPORT_ALARM.equals(paramIntent.getAction())) { + } else if (Constants.ACTION_PRACTICE_REPORT_ALARM.equals(paramIntent.getAction())) { //alarm是延迟的,所以这个判断主要是给最后一次可能无效的测量 - if (Runtime.practising==true) { + if (Runtime.practising == true) { //开始下一轮健康测量 setPracticeAlarm(); } - }else if (Constants.ACTION_CHECK_SERVER_RESPONSE.equals(paramIntent.getAction())) { + } else if (Constants.ACTION_CHECK_SERVER_RESPONSE.equals(paramIntent.getAction())) { //暂时还使用 ScheduledThreadPoolExecutor , 时间要求不是那么的严格 - }else if (Constants.ACTION_RETRY_SERVER_CONNECT.equals(paramIntent.getAction())) { + } else if (Constants.ACTION_RETRY_SERVER_CONNECT.equals(paramIntent.getAction())) { //暂时还使用 ScheduledThreadPoolExecutor , 时间要求不是那么的严格 - }else if (Constants.ACTION_CHECK_LOCATION_RESULT.equals(paramIntent.getAction())) { + } else if (Constants.ACTION_CHECK_LOCATION_RESULT.equals(paramIntent.getAction())) { locationClient.waitAndSendLocation(); - }else if (Constants.SLEEP_ALARM.equals(paramIntent.getAction())) { + } else if (Constants.SLEEP_ALARM.equals(paramIntent.getAction())) { StringBuilder stringBuilder1; ICLogger.i("SLEEP_ALARM"); is_allowed_in_sleep_mode = 1; @@ -1288,7 +1300,7 @@ public class CoreService extends Service { setTempAlarm(); - return Service.START_STICKY; + return Service.START_STICKY; } else if (STEP_COUNT_ALARM_ACTION.equals(paramIntent.getAction())) { ICLogger.i("Reset Count At 00:00 "); //update stepCount and broadcast before reset @@ -1299,7 +1311,7 @@ public class CoreService extends Service { //更新 运动控制的上次步数 然后再resetstecount //runtime.setLastStepCount(runtime.getTotalStepCount()-runtime.getLastStepCount()); //runtime.setLastStepCountForBT(runtime.getTotalStepCount()-runtime.getLastStepCountForBT()); - resetStepCount(); + resetStepCount(); //此处本来应该把刚刚reset前运动的步数设置到计步器里,继续开始计步。 // 由于计步接口没有提供设置步数。所以暂时只能清零,不能解决午夜还在运动的情况,会丢失一两次的数据。但是影响不大 runtime.setLastStepCountForBT(0); @@ -1319,11 +1331,11 @@ public class CoreService extends Service { //此消息来源于BroadCaset,收到开始测试的消息。 //此时需要重置HeartRateDetect Timer //倘若有 参数 PPGTestCycle,则根据这个数值进行设置 - int ppgtestCycle=paramIntent.getIntExtra("PPGTestCycle",-1); - if (ppgtestCycle >0){ - Config.setPPGTestCycle(runtime.getContextProxy().context,ppgtestCycle); + int ppgtestCycle = paramIntent.getIntExtra("PPGTestCycle", -1); + if (ppgtestCycle > 0) { + Config.setPPGTestCycle(runtime.getContextProxy().context, ppgtestCycle); runtime.setPpgTestCycle(Config.getPPGTestCycle(runtime.getContextProxy().context)); - ICLogger.i("get and set PPGTestCycle "+ppgtestCycle); + ICLogger.i("get and set PPGTestCycle " + ppgtestCycle); } setHeartRateDetectAlarm(runtime.getPpgTestCycle());//重置心率检测周期,并触发一次检测 @@ -1333,7 +1345,7 @@ public class CoreService extends Service { LocationClient.setForceLocation(1); setLocationAlarm(runtime.getLocationInstance().getWorkingMod());//同时重置alarm并触发定位 - }else if(ACTION_CHECK_ANTIOFF_EVENT.equals(paramIntent.getAction())){ + } else if (ACTION_CHECK_ANTIOFF_EVENT.equals(paramIntent.getAction())) { //只在中断式检测过程中延时用 antiservice.check_ant_event(); } @@ -1344,93 +1356,96 @@ public class CoreService extends Service { return Service.START_NOT_STICKY; } - public boolean onUnbind(Intent paramIntent) { return false; } + public boolean onUnbind(Intent paramIntent) { + return false; + } //每一分钟设置一次 public void setAlarm(int paramInt) { // AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,paramInt,ACTION_ALARM); } - public void setHeartRateDetectAlarm(int heartRateDetectAlarmCycle){ + public void setHeartRateDetectAlarm(int heartRateDetectAlarmCycle) { if (Config.noPPGSensor) { ICLogger.i("setHeartRateDetectAlarm oPPGSensor"); return; } - StringBuilder sb=new StringBuilder(); - if (heartRateDetectAlarmCycle>1) { + StringBuilder sb = new StringBuilder(); + if (heartRateDetectAlarmCycle > 1) { AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context, heartRateDetectAlarmCycle, ACTION_HEATR_RATE_START); } - if(runtime.check_stat_do_ppg_test()) { + if (runtime.check_stat_do_ppg_test()) { if (Runtime.practising == true) { sb.append("自由锻炼中,跳过原有的循环心率检测!"); ICLogger.i("自由锻炼中,跳过原有的循环心率检测!"); } else { sb.append("setHeartRateDetectAlarm " + heartRateDetectAlarmCycle); - if(!server_starting) + if (!server_starting) HeartRateManager.triggerPPGtest(); } } - if (Config.LOG_TOFILE)ICLogger.logToFile("alarmCycle",sb.toString()); + if (Config.LOG_TOFILE) ICLogger.logToFile("alarmCycle", sb.toString()); } - public void setBleScanAlarm(int cycle){ + public void setBleScanAlarm(int cycle) { //只有蓝牙扫描协议1才需要设置周期,蓝牙扫描协议0 为心跳及定位时才进行扫描 - if (Config.BLEScanProtocol!=1) { + if (Config.BLEScanProtocol != 1) { ICLogger.i("BLEScanProtocol!=1 skip setPolingCheckAntiAlarm"); return; } - StringBuilder sb=new StringBuilder(); - if (cycle>=15) { + StringBuilder sb = new StringBuilder(); + if (cycle >= 15) { //由于蓝牙扫描一次15秒,所以周期要大于等于15秒 - AlarmHelper.setRealTimeAlarmInMicorSeconds(runtime.getContextProxy().context, cycle*1000, ACTION_ALARM_BLE_SCAN); + AlarmHelper.setRealTimeAlarmInMicorSeconds(runtime.getContextProxy().context, cycle * 1000, ACTION_ALARM_BLE_SCAN); } - sb.append("setBleScanAlarm " + cycle+" seconds"); + sb.append("setBleScanAlarm " + cycle + " seconds"); locationClient.triggerBLEProcess(); ICLogger.i(sb.toString()); - if (Config.LOG_TOFILE)ICLogger.logToFile("alarmCycle",sb.toString()); + if (Config.LOG_TOFILE) ICLogger.logToFile("alarmCycle", sb.toString()); } - public void setEmegencyLocationSTOPAlarm(int delayTimeInMinutes){ - StringBuilder sb=new StringBuilder(); - AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,delayTimeInMinutes, ACTION_SEND_EMEGENCY_LOCATION_STOP); - sb.append(" tEmegencyLocationSTOPAlarm "+ACTION_SEND_EMEGENCY_LOCATION_STOP); + public void setEmegencyLocationSTOPAlarm(int delayTimeInMinutes) { + StringBuilder sb = new StringBuilder(); + AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context, delayTimeInMinutes, ACTION_SEND_EMEGENCY_LOCATION_STOP); + sb.append(" tEmegencyLocationSTOPAlarm " + ACTION_SEND_EMEGENCY_LOCATION_STOP); // ICLogger.i(sb.toString()); - if (Config.LOG_TOFILE)ICLogger.logToFile("alarmCycle",sb.toString()); + if (Config.LOG_TOFILE) ICLogger.logToFile("alarmCycle", sb.toString()); } + public void setLocationAlarm(int mod) { // int mod=runtime.getLocationInstance().getWorkingMod(); - StringBuilder sb=new StringBuilder(); - int cycle=60; - switch(mod){ + StringBuilder sb = new StringBuilder(); + int cycle = 60; + switch (mod) { case EMERGNECY_MOD: case REALTIME_MOD: - cycle=60; + cycle = 60; break; case NORMAL_MOD: - cycle=15*60; + cycle = 15 * 60; break; case LOWPOWER_MOD: - cycle=60*60; + cycle = 60 * 60; break; case CUSTOM_MOD: case CUSTOM_MOD8_GPS: case CUSTOM_MOD8_WIFI: - cycle=runtime.getLocationInstance().getLocation_cycle(); + cycle = runtime.getLocationInstance().getLocation_cycle(); break; } - if(cycle == 0) - { + if (cycle == 0) { ICLogger.i("locationCycle == 0 stop Location !"); - Config.noLocationCycle=true; + Config.noLocationCycle = true; } - if (Config.noLocationCycle==false) - AlarmHelper.setRealTimeAlarmInSeconds(runtime.getContextProxy().context,cycle, ACTION_LOCATION_ALARM); + if (Config.noLocationCycle == false) + AlarmHelper.setRealTimeAlarmInSeconds(runtime.getContextProxy().context, cycle, ACTION_LOCATION_ALARM); else - ICLogger.i("skip set LocationAlarm " ); - sb.append(" setLocationAlarm "+ACTION_LOCATION_ALARM+" mod "+mod+", cycle in Seconds "+cycle); + ICLogger.i("skip set LocationAlarm "); + sb.append(" setLocationAlarm " + ACTION_LOCATION_ALARM + " mod " + mod + ", cycle in Seconds " + cycle); ICLogger.i(sb.toString()); - if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(runtime.getCacheDir(),"alarmCycle",sb.toString()); + if (Config.LOG_TOFILE) + FileOutputUtil.fileOutput(runtime.getCacheDir(), "alarmCycle", sb.toString()); // if (Runtime.practising==true) { // ICLogger.i("自由锻炼中,跳过原有的循环定位!"); @@ -1441,63 +1456,66 @@ public class CoreService extends Service { } - public void setHeartAlarm(){ + public void setHeartAlarm() { // int mod=runtime.getLocationInstance().getWorkingMod(); - StringBuilder sb=new StringBuilder(); - int cycle=runtime.getHeartBeatCycle(); + StringBuilder sb = new StringBuilder(); + int cycle = runtime.getHeartBeatCycle(); //心跳指令默认设置 - AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,cycle, HEART_ALARM); - sb.append(" setHeartAlarm "+HEART_ALARM+", cycle "+cycle); + AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context, cycle, HEART_ALARM); + sb.append(" setHeartAlarm " + HEART_ALARM + ", cycle " + cycle); // locationClient.triggerLocationProcess(); ICLogger.i(sb.toString()); - FileOutputUtil.fileOutput(runtime.getCacheDir(),"alarmCycle",sb.toString()); + FileOutputUtil.fileOutput(runtime.getCacheDir(), "alarmCycle", sb.toString()); // AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,1, HEART_ALARM); } - public void setAntiAlarm(){ + + public void setAntiAlarm() { // int mod=runtime.getLocationInstance().getWorkingMod(); - StringBuilder sb=new StringBuilder(); - int cycle=runtime.anti_test_cycle; - if(cycle>1) { + StringBuilder sb = new StringBuilder(); + int cycle = runtime.anti_test_cycle; + if (cycle > 1) { AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context, cycle, ANTI_ALARM); } - sb.append(" setHeartAlarm "+ANTI_ALARM+", cycle "+cycle); + sb.append(" setHeartAlarm " + ANTI_ALARM + ", cycle " + cycle); ICLogger.i(sb.toString()); - FileOutputUtil.fileOutput(runtime.getCacheDir(),"alarmCycle",sb.toString()); + FileOutputUtil.fileOutput(runtime.getCacheDir(), "alarmCycle", sb.toString()); } - public void setTempAlarm(){ + + public void setTempAlarm() { // int mod=runtime.getLocationInstance().getWorkingMod(); - StringBuilder sb=new StringBuilder(); - int cycle=runtime.temp_test_Cycle; + StringBuilder sb = new StringBuilder(); + int cycle = runtime.temp_test_Cycle; - if(Config.noTempSensor) { + if (Config.noTempSensor) { ICLogger.i("setTempAlarm noTempSensor"); return; } - if (cycle>1) { + if (cycle > 1) { AlarmHelper.setRealTimeAlarmInSeconds(runtime.getContextProxy().context, cycle, TEMP_ALARM); sb.append(" setTempAlarm " + TEMP_ALARM + ", cycle " + cycle); - }else { - sb.append(" setTempAlarm " + TEMP_ALARM + ", cycle " + cycle+"<=1 skip!"); + } else { + sb.append(" setTempAlarm " + TEMP_ALARM + ", cycle " + cycle + "<=1 skip!"); } // locationClient.triggerLocationProcess(); ICLogger.i(sb.toString()); - FileOutputUtil.fileOutput(runtime.getCacheDir(),"alarmCycle",sb.toString()); + FileOutputUtil.fileOutput(runtime.getCacheDir(), "alarmCycle", sb.toString()); - if(runtime.check_stat_do_temp_test()) { + if (runtime.check_stat_do_temp_test()) { if (Runtime.practising == true) { ICLogger.i("自由锻炼中,跳过原有的循环温度检测!"); } else { - if(!server_starting) + if (!server_starting) TemperatureUtil.doTempTestInThread(); } } } + public void setUpLocationDataAlarm(long paramLong) { - AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); + AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); Intent intent = new Intent(this, CoreService.class); intent.setAction(ACTION_ALARM_ADD_DATAPOINTS); PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, FLAG_UPDATE_CURRENT); @@ -1507,11 +1525,13 @@ public class CoreService extends Service { stringBuilder.append("interval="); stringBuilder.append(paramLong); ICLogger.i(stringBuilder.toString()); - AlarmHelper.setRealTimeAlarm( runtime.getContextProxy().context,(int)((System.currentTimeMillis() + paramLong)/1000),ACTION_ALARM_ADD_DATAPOINTS); + AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context, (int) ((System.currentTimeMillis() + paramLong) / 1000), ACTION_ALARM_ADD_DATAPOINTS); } public static class InnerService extends Service { - public IBinder onBind(Intent param1Intent) { return null; } + public IBinder onBind(Intent param1Intent) { + return null; + } /*给 API >= 18 的平台上用的灰色保活手段*/ public int onStartCommand(Intent param1Intent, int param1Int1, int param1Int2) { @@ -1530,7 +1550,7 @@ public class CoreService extends Service { } public void handleMessage(Message param1Message) { - CoreService coreService = (CoreService)this.mReference.get(); + CoreService coreService = (CoreService) this.mReference.get(); if (coreService == null) return; coreService.invokeHandlerServiceChain.processUserRequest(param1Message, coreService.connection, coreService.runtime); @@ -1539,66 +1559,70 @@ public class CoreService extends Service { private static final String TAG = "ICSrv." + CoreService.class.getSimpleName(); - private ScheduledThreadPoolExecutor mTimer_retry_connect=null; + private ScheduledThreadPoolExecutor mTimer_retry_connect = null; + + private static int retry_connect_count = 0; //当前重试次数 + private static int retry_connect_max_times = 6; //最大重试次数 6次 , 即只重试2分钟,下一次重试将在下一个心跳包时进行。 + private static int retry_cocnnect_cycle = 20; //重试间隔20秒 - private static int retry_connect_count=0; //当前重试次数 - private static int retry_connect_max_times=6; //最大重试次数 6次 , 即只重试2分钟,下一次重试将在下一个心跳包时进行。 - private static int retry_cocnnect_cycle=20; //重试间隔20秒 private void log(String msg) { - ICLogger.log(TAG,msg); + ICLogger.log(TAG, msg); } - public static CoreService getInstance(){ + public static CoreService getInstance() { return mProtocolServer; } - public void startConnectionRetryTimer(){ + public void startConnectionRetryTimer() { //联网再重试连接服务器, 不能够联网的情况下不管是不是有sim卡,以及是否联网,都进行重试,以便处理下面情况: //1、sim卡接触不良,掉卡,可以尝试用此法恢复 //2、网络信号不好,造成临时掉线,但是恢复慢或不恢复,可以用此法尝试恢复 // if (SimSignalUtil.checkNet(runtime.getContextProxy().context) ) { - stopConnectionRetryTimer(); - if (mTimer_retry_connect == null) { - mTimer_retry_connect = new ScheduledThreadPoolExecutor(10); - } - //如果开始进行连接重 - // { - // 试,证明网络断开的,那么KeepAlive也需要重连(心跳包) - retry_connect_count=0; - KeepAlive.isConnected = false; - if (mTimer_retry_connect != null) { - mTimer_retry_connect.remove(mReConnectSrvThread); - mTimer_retry_connect.scheduleAtFixedRate(mReConnectSrvThread, 5000, 20000, TimeUnit.MILLISECONDS); //每次都是断网才需要重连,delay 5秒重连,并且每20秒重试一次 - } + stopConnectionRetryTimer(); + if (mTimer_retry_connect == null) { + mTimer_retry_connect = new ScheduledThreadPoolExecutor(10); + } + //如果开始进行连接重 + // { + // 试,证明网络断开的,那么KeepAlive也需要重连(心跳包) + retry_connect_count = 0; + KeepAlive.isConnected = false; + if (mTimer_retry_connect != null) { + mTimer_retry_connect.remove(mReConnectSrvThread); + mTimer_retry_connect.scheduleAtFixedRate(mReConnectSrvThread, 5000, 20000, TimeUnit.MILLISECONDS); //每次都是断网才需要重连,delay 5秒重连,并且每20秒重试一次 + } // } } - private ReConnectSrvThread mReConnectSrvThread=new ReConnectSrvThread(); - private class ReConnectSrvThread implements Runnable{ + + private ReConnectSrvThread mReConnectSrvThread = new ReConnectSrvThread(); + + private class ReConnectSrvThread implements Runnable { @Override public void run() { ReConnectToServer(); } } - private static int no_network_Heartbeats_Count=0; + private static int no_network_Heartbeats_Count = 0; - public void ReConnectToServer(){ - long timeSincelastReceive=0; - if(Runtime.lastLinkReceiveStamp>0) - timeSincelastReceive=(System.currentTimeMillis()-Runtime.lastLinkReceiveStamp)/1000; - if (timeSincelastReceive>0) ICLogger.i("距离上次从服务器收到数据,已经有 " + timeSincelastReceive + " 秒!"); - if (SimSignalUtil.checkNet(runtime.getContextProxy().context) ) { + public void ReConnectToServer() { + long timeSincelastReceive = 0; + if (Runtime.lastLinkReceiveStamp > 0) + timeSincelastReceive = (System.currentTimeMillis() - Runtime.lastLinkReceiveStamp) / 1000; + if (timeSincelastReceive > 0) + ICLogger.i("距离上次从服务器收到数据,已经有 " + timeSincelastReceive + " 秒!"); + if (SimSignalUtil.checkNet(runtime.getContextProxy().context)) { //里面如果连接成功 connectionOpen 会先发送 AP00 登录包 和发送AP03 心跳包 , // isServerConnected 成功则停止重试, KeepAlive会检测AP03心跳包的成功与否。此处只管socket连接是否成功 if (connection.isServerConnected()) { ICLogger.i("retry 如果连接成功则停止重试!"); - no_network_Heartbeats_Count=0; + no_network_Heartbeats_Count = 0; stopConnectionRetryTimer(); - }else { + } else { if (retry_connect_count >= retry_connect_max_times) { no_network_Heartbeats_Count++; - ICLogger.i("retry " + retry_connect_count + " 次 >= " + retry_connect_max_times + " ,停止重试!等待下一次心跳再重试! 已经第"+no_network_Heartbeats_Count+"次心跳都没有连接服务器成功!"); + ICLogger.i("retry " + retry_connect_count + " 次 >= " + retry_connect_max_times + " ,停止重试!等待下一次心跳再重试! 已经第" + no_network_Heartbeats_Count + "次心跳都没有连接服务器成功!"); stopConnectionRetryTimer(); } else { @@ -1612,32 +1636,34 @@ public class CoreService extends Service { } } - }else{ + } else { //没有网络就不用重新尝试连接网络了。网络连接后再重新尝试联网 - ICLogger.i("retry "+no_network_Heartbeats_Count+" 没有网络就不用重新尝试连接网络了。网络连接后再重新尝试联网!"); + ICLogger.i("retry " + no_network_Heartbeats_Count + " 没有网络就不用重新尝试连接网络了。网络连接后再重新尝试联网!"); no_network_Heartbeats_Count++; stopConnectionRetryTimer(); } - if( no_network_Heartbeats_Count >12){ - ICLogger.i("当前第"+no_network_Heartbeats_Count+"次心跳都没有连接服务器成功 > 10 ,重置SIM卡尝试重新注册网络!"); + if (no_network_Heartbeats_Count > 12) { + ICLogger.i("当前第" + no_network_Heartbeats_Count + "次心跳都没有连接服务器成功 > 10 ,重置SIM卡尝试重新注册网络!"); SimSignalUtil.send_at_to_reset_simcard(runtime); //直接下此命令不能实现断网重连,所以干脆采用关闭网络再打开的方式。 - SimSignalUtil.setAirMode(this,"OpenAirplane"); - mHandler.postDelayed(reopenSim,5000); //5秒后重新链接服务器。 - no_network_Heartbeats_Count=0;//重置Sim卡后重置计数。防止后面多次重置Sim卡。 + SimSignalUtil.setAirMode(this, "OpenAirplane"); + mHandler.postDelayed(reopenSim, 5000); //5秒后重新链接服务器。 + no_network_Heartbeats_Count = 0;//重置Sim卡后重置计数。防止后面多次重置Sim卡。 } } - private Runnable reopenSim =new Runnable(){ + + private Runnable reopenSim = new Runnable() { @Override public void run() { - if (CoreService.getInstance()!=null) { + if (CoreService.getInstance() != null) { SimSignalUtil.setAirMode(CoreService.getInstance(), "CloseAirplane"); - // disconnect_server(); - // ReConnectToServer(); + // disconnect_server(); + // ReConnectToServer(); } } }; - public void stopConnectionRetryTimer(){ - if (mTimer_retry_connect !=null){ + + public void stopConnectionRetryTimer() { + if (mTimer_retry_connect != null) { mTimer_retry_connect.shutdownNow(); // while(!mTimer_retry_connect.isTerminated()) // { @@ -1653,13 +1679,11 @@ public class CoreService extends Service { } } - private boolean needLogin(){ + private boolean needLogin() { return true; } - - @Override public void onDestroy() { super.onDestroy(); @@ -1677,7 +1701,7 @@ public class CoreService extends Service { } - public void disconnect_server(){ + public void disconnect_server() { this.connection.close(); } diff --git a/app/src/main/java/com/enqualcomm/support/ICSmsManager.java b/app/src/main/java/com/enqualcomm/support/ICSmsManager.java index 5ae6f875..374b5e29 100644 --- a/app/src/main/java/com/enqualcomm/support/ICSmsManager.java +++ b/app/src/main/java/com/enqualcomm/support/ICSmsManager.java @@ -1,25 +1,19 @@ package com.enqualcomm.support; -import android.app.Activity; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.ComponentName; -import android.content.ContentResolver; import android.content.Context; -import android.content.ContextWrapper; import android.content.Intent; import android.content.IntentFilter; -import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.os.SystemClock; -import android.telephony.SmsManager; import android.telephony.SmsMessage; import android.text.TextUtils; -import android.widget.Toast; import com.enqualcomm.support.bean.Contact; import com.enqualcomm.support.bean.EventLooperHandlerThread; @@ -31,7 +25,6 @@ import com.enqualcomm.support.service.Deliver; import com.enqualcomm.support.service.SmsDatabaseChaneObserver; import com.enqualcomm.support.utils.APNUtil; import com.enqualcomm.support.utils.CameraUtil; -import com.enqualcomm.support.utils.CellInfoUtil; import com.enqualcomm.support.utils.ContextProxy; import com.enqualcomm.support.utils.DeviceInfoUtil; import com.enqualcomm.support.utils.ICAudioManager; @@ -39,7 +32,6 @@ import com.enqualcomm.support.utils.ICHttpUtil; import com.enqualcomm.support.utils.ICLogger; import com.enqualcomm.support.utils.LanguageUtils; import com.enqualcomm.support.utils.SendEmail; -import com.enqualcomm.support.utils.ServiceUtil; import com.enqualcomm.support.utils.SimSignalUtil; import com.enqualcomm.support.utils.TimeUtil; import com.enqualcomm.support.utils.Util; @@ -52,7 +44,6 @@ import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.Iterator; -import java.util.concurrent.TimeUnit; import chestnut.utils.PhoneUtils; @@ -63,18 +54,14 @@ import static com.enqualcomm.support.Constants.ACTION_SMSCMD_Reply; import static com.enqualcomm.support.Constants.ACTION_SMSCMD_TEST; import static com.enqualcomm.support.Constants.ACTION_SMS_RECEIVED; import static com.enqualcomm.support.Constants.ACTION_START_FOTA_UPDATE; -import static com.enqualcomm.support.Constants.DIALOG_ACTION; import static com.enqualcomm.support.Constants.KeyReplyData; -import static com.enqualcomm.support.Constants.contact; -import static com.enqualcomm.support.utils.DeviceInfoUtil.getDeviceVersion; import static com.enqualcomm.support.utils.SimSignalUtil.send_at_cmd; import static com.enqualcomm.support.utils.SimSignalUtil.send_at_setImei0; -import static com.enqualcomm.support.utils.SimSignalUtil.send_at_setImei1; -public class ICSmsManager extends BroadcastReceiver { +public class ICSmsManager extends BroadcastReceiver { - private static String cell_number_to_reply=""; //this number is use for ACTION_SMSCMD_Reply + private static String cell_number_to_reply = ""; //this number is use for ACTION_SMSCMD_Reply private static long preTimeMillis; private Context mContext = null; @@ -82,60 +69,60 @@ public class ICSmsManager extends BroadcastReceiver { Handler mHandler; - ReplayLocation replayLocation=new ReplayLocation(); - private boolean needshowToast=false; + ReplayLocation replayLocation = new ReplayLocation(); + private boolean needshowToast = false; @Override public void onReceive(Context context, Intent intent) { - if (CoreService.getInstance()==null) { + if (CoreService.getInstance() == null) { ICLogger.i("CoreService still not started , skip SMS cmd!"); return; } - mContext=context; - runtime=CoreService.getInstance().runtime; + mContext = context; + runtime = CoreService.getInstance().runtime; String action = intent.getAction(); - ICLogger.i(" onReceive Action "+action); + ICLogger.i(" onReceive Action " + action); if (ACTION_SMSCMD.equals(action)) { String cmd = intent.getStringExtra("smsCmd"); handleSMS_CMD("", cmd); - }else if (ACTION_SMSCMD_Reply.equals(action)) { + } else if (ACTION_SMSCMD_Reply.equals(action)) { String replydata = intent.getStringExtra(KeyReplyData); sendSMS(cell_number_to_reply, replydata); cell_number_to_reply = ""; - }else if (ACTION_SMSCMD_TEST.equals(action)){ + } else if (ACTION_SMSCMD_TEST.equals(action)) { String cmd = intent.getStringExtra("cmd"); String arg = intent.getStringExtra("arg1"); - handle_test_cmd(cmd,arg); - }else if (ACTION_SMS_RECEIVED.equals(action)) { + handle_test_cmd(cmd, arg); + } else if (ACTION_SMS_RECEIVED.equals(action)) { long currenttime = System.currentTimeMillis(); // if (currenttime - ICSmsManager.preTimeMillis > 30000L) { - ICSmsManager.preTimeMillis = currenttime; + ICSmsManager.preTimeMillis = currenttime; // (new Thread(new Runnable() { // public void run() { - SystemClock.sleep(3000L); - if (intent == null || intent.getAction() == null) return; - - //长短信会被分拆送来,因此可能会有多个PDU。Protocol Description Unit是短信的工业标准。  - Object[] pduArray = (Object[]) intent.getExtras().get("pdus"); - ICLogger.i("pdu number=" + pduArray.length); - String message = ""; - String from = null; - for (int i = 0; i < pduArray.length; i++) { - SmsMessage sms = SmsMessage.createFromPdu((byte[]) pduArray[i]);//将PDU转换为SmsMessage格式 - ICLogger.i("From : " + sms.getDisplayOriginatingAddress()); - ICLogger.i("SMS : " + sms.getDisplayMessageBody()); - from = sms.getDisplayOriginatingAddress(); - message += sms.getDisplayMessageBody(); - } - ICLogger.i("收到" + from + "短信:" + message); + SystemClock.sleep(3000L); + if (intent == null || intent.getAction() == null) return; + + //长短信会被分拆送来,因此可能会有多个PDU。Protocol Description Unit是短信的工业标准。  + Object[] pduArray = (Object[]) intent.getExtras().get("pdus"); + ICLogger.i("pdu number=" + pduArray.length); + String message = ""; + String from = null; + for (int i = 0; i < pduArray.length; i++) { + SmsMessage sms = SmsMessage.createFromPdu((byte[]) pduArray[i]);//将PDU转换为SmsMessage格式 + ICLogger.i("From : " + sms.getDisplayOriginatingAddress()); + ICLogger.i("SMS : " + sms.getDisplayMessageBody()); + from = sms.getDisplayOriginatingAddress(); + message += sms.getDisplayMessageBody(); + } + ICLogger.i("收到" + from + "短信:" + message); // Toast.makeText(context, "收到" + from + "短信:" + message, Toast.LENGTH_LONG).show(); - if (handleSMS_CMD(from, message) == false) { - //说明不是sms命令,提示短信接收。 - ContextProxy.sendMsgBroadcast(context, message, 1); - } + if (handleSMS_CMD(from, message) == false) { + //说明不是sms命令,提示短信接收。 + ContextProxy.sendMsgBroadcast(context, message, 1); + } // } // })).start(); // } @@ -148,23 +135,24 @@ public class ICSmsManager extends BroadcastReceiver { @Override public void replyCallBack(String locationResponseUrl) { - LocationClient locationClient=LocationClient.getInstance(); - if (locationClient!=null){ + LocationClient locationClient = LocationClient.getInstance(); + if (locationClient != null) { locationClient.setLocationResponse(null); } - sendSMS(cell_number_to_reply,"http://maps.google.com/?q="+locationResponseUrl); - cell_number_to_reply=""; + sendSMS(cell_number_to_reply, "http://maps.google.com/?q=" + locationResponseUrl); + cell_number_to_reply = ""; } } - public ICSmsManager( Runtime _runtime) { + + public ICSmsManager(Runtime _runtime) { this.runtime = _runtime; this.mContext = runtime.getContextProxy().context; - IntentFilter intentfilter=new IntentFilter(); + IntentFilter intentfilter = new IntentFilter(); intentfilter.addAction(ACTION_SMSCMD_Reply); - this.mContext.registerReceiver(this,intentfilter); + this.mContext.registerReceiver(this, intentfilter); // registerSmsDatabaseChangeObserver(mContext); - mHandler=new Handler(EventLooperHandlerThread.makeLooper(ICSmsManager.class.getSimpleName()),new Handler.Callback() { + mHandler = new Handler(EventLooperHandlerThread.getInstance().makeLooper(), new Handler.Callback() { @Override public boolean handleMessage(Message message) { switch (message.what) { @@ -207,7 +195,7 @@ public class ICSmsManager extends BroadcastReceiver { } return false; } - } ); + }); } @@ -215,21 +203,21 @@ public class ICSmsManager extends BroadcastReceiver { android.telephony.SmsManager smsManager = android.telephony.SmsManager.getDefault(); Iterator msgit = smsManager.divideMessage(msg).iterator(); - while(msgit.hasNext()) { - String message= (String)msgit.next(); - ICLogger.i("reply message to "+phonenumber+", "+message); - if (phonenumber!=null && !phonenumber.isEmpty()) { + while (msgit.hasNext()) { + String message = (String) msgit.next(); + ICLogger.i("reply message to " + phonenumber + ", " + message); + if (phonenumber != null && !phonenumber.isEmpty()) { smsManager.sendTextMessage(phonenumber, (String) null, message, (PendingIntent) null, (PendingIntent) null); } } } - private boolean isAdminNumber(String phoneNumb){ + private boolean isAdminNumber(String phoneNumb) { return true; } - private void broadCastStartFotaUpdate(Context context){ + private void broadCastStartFotaUpdate(Context context) { Intent intent = new Intent(); intent.setAction(ACTION_START_FOTA_UPDATE); @@ -257,25 +245,25 @@ public class ICSmsManager extends BroadcastReceiver { //SW: L02_20200208_V1 - public String RemoveEncrypedHeader(String sms){ - String smsPWD=Config.getSMSPwd(mContext); - if(!smsPWD.equals("none")){ - if (!sms.startsWith(smsPWD)){ + public String RemoveEncrypedHeader(String sms) { + String smsPWD = Config.getSMSPwd(mContext); + if (!smsPWD.equals("none")) { + if (!sms.startsWith(smsPWD)) { ICLogger.i("开头不是密码!"); - }else{ + } else { //ICLogger.i("开头不是密码!"); return sms; } - }else{ + } else { return sms; } return sms; } /* - * return false表示不是命令, true表示是命令,且已经执行 - * */ - public boolean handleSMS_CMD(String phonenumber, String sms){ + * return false表示不是命令, true表示是命令,且已经执行 + * */ + public boolean handleSMS_CMD(String phonenumber, String sms) { if (isAdminNumber(phonenumber)) { String ENCRYPED_HEADER = Config.getSMSPwd(mContext); @@ -285,32 +273,32 @@ public class ICSmsManager extends BroadcastReceiver { if (sms == null || sms.trim().isEmpty()) return false; - ICLogger.i("received SMSCMD "+sms); - sms=sms.trim(); - if (sms.equals(ENCRYPED_HEADER + "#logctl#=upload,all")){ - sms=ENCRYPED_HEADER+"#logctl#=upload,SDLog:Android/ic"; + ICLogger.i("received SMSCMD " + sms); + sms = sms.trim(); + if (sms.equals(ENCRYPED_HEADER + "#logctl#=upload,all")) { + sms = ENCRYPED_HEADER + "#logctl#=upload,SDLog:Android/ic"; } //$HX,SSER,OK,91.201.4.79,5018,C,589883 - if (sms.startsWith(ENCRYPED_HEADER+"$HX,SSER,OK,")){ - String[] tmplist=sms.split(","); - if (tmplist.length==7){ - String ServeriIp=tmplist[3]; - String ServerPort=tmplist[4]; - String imeiend=tmplist[6]; + if (sms.startsWith(ENCRYPED_HEADER + "$HX,SSER,OK,")) { + String[] tmplist = sms.split(","); + if (tmplist.length == 7) { + String ServeriIp = tmplist[3]; + String ServerPort = tmplist[4]; + String imeiend = tmplist[6]; if (runtime.IMEI().endsWith(imeiend)) { - sms=ENCRYPED_HEADER+"#IP#="+ServeriIp+":"+ServerPort+"#"; + sms = ENCRYPED_HEADER + "#IP#=" + ServeriIp + ":" + ServerPort + "#"; ICLogger.i("收到客户自定义 服务器IP设置命令,转化为 #IP#命令!"); - }else{ - sendSMS(phonenumber, imeiend+" IMEI 校验错误!"); + } else { + sendSMS(phonenumber, imeiend + " IMEI 校验错误!"); return true; } - }else{ + } else { ICLogger.i(" 设置 Server IP 命令错误。"); - sendSMS(phonenumber, sms+" 格式错误!"); + sendSMS(phonenumber, sms + " 格式错误!"); return true; } } - if (sms.startsWith(ENCRYPED_HEADER+"#apn#=") && sms.endsWith("#")) { + if (sms.startsWith(ENCRYPED_HEADER + "#apn#=") && sms.endsWith("#")) { String[] tmp = sms.split("#"); if (tmp.length == 3) { String[] apnvalues = tmp[2].replace("=", "").split(","); @@ -343,10 +331,10 @@ public class ICSmsManager extends BroadcastReceiver { String apnstr = APNUtil.getCurrentAPN(mContext); sendSMS(phonenumber, apnstr); - }else if (apnvalues[0].equals("check")) { - String mcc=runtime.getLocationInstance().getMCC(); - String mnc=runtime.getLocationInstance().getMNC(); - String apnstr = APNUtil.checkAPN(mcc,mnc,mContext); + } else if (apnvalues[0].equals("check")) { + String mcc = runtime.getLocationInstance().getMCC(); + String mnc = runtime.getLocationInstance().getMNC(); + String apnstr = APNUtil.checkAPN(mcc, mnc, mContext); sendSMS(phonenumber, apnstr); } else { sendSMS(phonenumber, "apn cmd format error!"); @@ -359,30 +347,30 @@ public class ICSmsManager extends BroadcastReceiver { sendSMS(phonenumber, "apn cmd format error!"); } - } else if (sms.startsWith(ENCRYPED_HEADER+"#deviceinfo#")) { + } else if (sms.startsWith(ENCRYPED_HEADER + "#deviceinfo#")) { // ICLogger.i("SMS " + sms + " reply " + DeviceInfoUtil.getDeviceVersion(runtime)); // sendSMS(phonenumber, DeviceInfoUtil.getDeviceVersion(runtime)); ICLogger.i("SMS " + sms + " reply " + DeviceInfoUtil.getShortDeviceInfo(runtime)); sendSMS(phonenumber, DeviceInfoUtil.getShortDeviceInfo(runtime)); - } else if (sms.startsWith(ENCRYPED_HEADER+"#status#")) { - String reply = "IMEI=" + runtime.IMEI() + "\nSW:" + DeviceInfoUtil.getVersionCode(mContext) + " " + DeviceInfoUtil.getSWVersionDisplayName()+"\nBattery:"+runtime.getBattery()+"%"; + } else if (sms.startsWith(ENCRYPED_HEADER + "#status#")) { + String reply = "IMEI=" + runtime.IMEI() + "\nSW:" + DeviceInfoUtil.getVersionCode(mContext) + " " + DeviceInfoUtil.getSWVersionDisplayName() + "\nBattery:" + runtime.getBattery() + "%"; ICLogger.i("SMS " + sms + " reply \n" + reply); sendSMS(phonenumber, reply); - } else if (sms.startsWith(ENCRYPED_HEADER+"#atcmd#=")) { + } else if (sms.startsWith(ENCRYPED_HEADER + "#atcmd#=")) { String cmd = sms.substring(8); ICLogger.i("atcmd " + cmd); - if (cmd.length() >0 ) { - send_at_cmd(runtime,cmd); - sendSMS(phonenumber, "run At cmd "+cmd+"!"); - } else { + if (cmd.length() > 0) { + send_at_cmd(runtime, cmd); + sendSMS(phonenumber, "run At cmd " + cmd + "!"); + } else { sendSMS(phonenumber, "At cmd empty error!"); } - }else if (sms.startsWith(ENCRYPED_HEADER+"#imei:")) { + } else if (sms.startsWith(ENCRYPED_HEADER + "#imei:")) { String imei = sms.substring(6); ICLogger.i("SMS " + sms + " imei=" + imei); if (imei.length() == 15) { - send_at_setImei0(runtime,imei); + send_at_setImei0(runtime, imei); Config.setIMEI(mContext, imei); runtime.setImeiAndCid(imei, ""); sendSMS(phonenumber, "set IMEI " + imei + " success !"); @@ -399,13 +387,13 @@ public class ICSmsManager extends BroadcastReceiver { } else { sendSMS(phonenumber, "set IMEI " + imei + " failed ! len!=15"); } - } else if ((sms.startsWith(ENCRYPED_HEADER+"#ip#=") || sms.startsWith(ENCRYPED_HEADER+"#host#=")) && sms.endsWith("#")) { + } else if ((sms.startsWith(ENCRYPED_HEADER + "#ip#=") || sms.startsWith(ENCRYPED_HEADER + "#host#=")) && sms.endsWith("#")) { String tmp[] = sms.split("="); String reply = ""; ICLogger.i(sms + " len " + tmp.length); if (tmp.length == 2) { if (tmp[1].equals("reset#")) { - Config.setCustomServer(mContext,false, protocolAPIHelper.getDefaultServerIP(),protocolAPIHelper.getDefaultServerPort()); + Config.setCustomServer(mContext, false, protocolAPIHelper.getDefaultServerIP(), protocolAPIHelper.getDefaultServerPort()); reply = "reset ServerIP to " + protocolAPIHelper.getDefaultServerIP() + ":" + protocolAPIHelper.getDefaultServerPort() + " success! "; Config.loadServerSettings(runtime); CoreService.getInstance().disconnect_server(); @@ -418,7 +406,7 @@ public class ICSmsManager extends BroadcastReceiver { if (ipstr.length == 2) { String ip = ipstr[0]; int port = Integer.valueOf(ipstr[1].replace("#", "")); - Config.setCustomServer(mContext,true,ip,port); + Config.setCustomServer(mContext, true, ip, port); reply = sms + " success! "; Config.loadServerSettings(runtime); CoreService.getInstance().disconnect_server(); @@ -429,7 +417,7 @@ public class ICSmsManager extends BroadcastReceiver { if (ipstr.length == 2) { String ip = ipstr[0]; int port = Integer.valueOf(ipstr[1].replace("#", "")); - Config.setCustomServer(mContext,true,ip,port); + Config.setCustomServer(mContext, true, ip, port); reply = sms + " success! "; Config.loadServerSettings(runtime); CoreService.getInstance().disconnect_server(); @@ -443,7 +431,7 @@ public class ICSmsManager extends BroadcastReceiver { reply = sms + " falied! "; } sendSMS(phonenumber, reply); - } else if (sms.startsWith(ENCRYPED_HEADER+"#setlocation#=") && sms.endsWith("#")) { + } else if (sms.startsWith(ENCRYPED_HEADER + "#setlocation#=") && sms.endsWith("#")) { String tmp[] = sms.split("="); if (tmp.length == 2) { if (tmp[1].equals("reset#")) { @@ -459,9 +447,9 @@ public class ICSmsManager extends BroadcastReceiver { cycle = Integer.valueOf(t[1]); } catch (Exception e) { e.printStackTrace(); - ICLogger.e(e.getMessage(),e); + ICLogger.e(e.getMessage(), e); } - if ( mod > 0 && cycle >= 30) { + if (mod > 0 && cycle >= 30) { switch (mod) { case ICLocation.NORMAL_MOD: cycle = 60 * 15; @@ -502,7 +490,7 @@ public class ICSmsManager extends BroadcastReceiver { sendSMS(phonenumber, "setlocation format error!"); } - } else if (sms.startsWith(ENCRYPED_HEADER+"#skipmovecheck#=")) { + } else if (sms.startsWith(ENCRYPED_HEADER + "#skipmovecheck#=")) { String tmp[] = sms.split("="); if (tmp.length == 2) { if (tmp[1].equals("current")) { @@ -519,51 +507,51 @@ public class ICSmsManager extends BroadcastReceiver { } else { sendSMS(phonenumber, "skipmovecheck format error!"); } - }else if(sms.startsWith(ENCRYPED_HEADER+"#wifictl#=")){ + } else if (sms.startsWith(ENCRYPED_HEADER + "#wifictl#=")) { String tmp[] = sms.split("="); if (tmp.length == 2) { if (tmp[1].equals("current")) { - sendSMS(phonenumber, "Current Wifi Setting SSID " + Config.getWiFiSSID(mContext) +", WiFiPassword "+Config.getWiFiPasswd(mContext)+ "!"); + sendSMS(phonenumber, "Current Wifi Setting SSID " + Config.getWiFiSSID(mContext) + ", WiFiPassword " + Config.getWiFiPasswd(mContext) + "!"); } else if (tmp[1].equals("reset")) { - Config.setWiFiSSID(mContext,Config.DefaultWiFiSSID); - Config.setWiFiPasswd(mContext,Config.DefaultWiFiPWD); - sendSMS(phonenumber, "reset Wifi Setting to SSID " + Config.getWiFiSSID(mContext) +", WiFiPassword "+Config.getWiFiPasswd(mContext)+ "!"); + Config.setWiFiSSID(mContext, Config.DefaultWiFiSSID); + Config.setWiFiPasswd(mContext, Config.DefaultWiFiPWD); + sendSMS(phonenumber, "reset Wifi Setting to SSID " + Config.getWiFiSSID(mContext) + ", WiFiPassword " + Config.getWiFiPasswd(mContext) + "!"); } else if (tmp[1].startsWith("connect,")) { - String tmplist[]=tmp[1].split(","); - if (tmplist.length==4){ - String SSID=tmplist[1]; - String PWD=tmplist[2]; - String encyptType=tmplist[3]; - Config.setWiFiSSID(mContext,SSID); - Config.setWiFiPasswd(mContext,PWD); - sendSMS(phonenumber, "set and connect to Wifi SSID " + Config.getWiFiSSID(mContext) +", WiFiPassword "+Config.getWiFiPasswd(mContext)+ ", encryptType "+encyptType+"!"); + String tmplist[] = tmp[1].split(","); + if (tmplist.length == 4) { + String SSID = tmplist[1]; + String PWD = tmplist[2]; + String encyptType = tmplist[3]; + Config.setWiFiSSID(mContext, SSID); + Config.setWiFiPasswd(mContext, PWD); + sendSMS(phonenumber, "set and connect to Wifi SSID " + Config.getWiFiSSID(mContext) + ", WiFiPassword " + Config.getWiFiPasswd(mContext) + ", encryptType " + encyptType + "!"); //connect to wifi mHandler.postDelayed(new Runnable() { @Override public void run() { - Deliver.connectToWifi(SSID,PWD,encyptType); + Deliver.connectToWifi(SSID, PWD, encyptType); } }, 500); - }else { + } else { sendSMS(phonenumber, "WiFi Control format error!"); } } else if (tmp[1].startsWith("noTurnOffWhenScreenOff,")) { - String tmplist[]=tmp[1].split(","); - if (tmplist.length==2){ - String enabled=tmplist[1]; - boolean isenabled=enabled.toLowerCase().equals("true")?true:false; - runtime.setNoTurnOffOnScreenOff(isenabled); - StringBuilder sb=new StringBuilder(); - if (isenabled && !Util.isWifiIsOpen(runtime.getContextProxy().context,runtime)){ - Util.turnOnWifiForConnect(runtime.getContextProxy().context,runtime); - sb.append(" Turn On Wifi first and "); - } - sb.append("set noTurnOffWhenScreenOff " + enabled); - sendSMS(phonenumber,sb.toString() ); - - }else { + String tmplist[] = tmp[1].split(","); + if (tmplist.length == 2) { + String enabled = tmplist[1]; + boolean isenabled = enabled.toLowerCase().equals("true") ? true : false; + runtime.setNoTurnOffOnScreenOff(isenabled); + StringBuilder sb = new StringBuilder(); + if (isenabled && !Util.isWifiIsOpen(runtime.getContextProxy().context, runtime)) { + Util.turnOnWifiForConnect(runtime.getContextProxy().context, runtime); + sb.append(" Turn On Wifi first and "); + } + sb.append("set noTurnOffWhenScreenOff " + enabled); + sendSMS(phonenumber, sb.toString()); + + } else { sendSMS(phonenumber, "WiFi Control format error!"); } } else { @@ -572,31 +560,31 @@ public class ICSmsManager extends BroadcastReceiver { } else { sendSMS(phonenumber, "WiFi Control format error!"); } - }else if(sms.startsWith(ENCRYPED_HEADER+"#logctl#=")){ + } else if (sms.startsWith(ENCRYPED_HEADER + "#logctl#=")) { - needshowToast=sms.contains("SDLogInfo:"); + needshowToast = sms.contains("SDLogInfo:"); String tmp[] = sms.split("="); if (tmp.length == 2) { if (tmp[1].equals("current")) { sendSMS(phonenumber, "Current FtpLogServer " + Config.getFtpServer(mContext) + ", user " + Config.getFtpUser(mContext) + ", pwd " + Config.getFtpPWD(mContext)); - }else if (tmp[1].equals("reset")) { + } else if (tmp[1].equals("reset")) { Config.setFtpServer(mContext, Config.DefaultLogFtpServer); Config.setFtpUser(mContext, Config.DefaultLogFtpUser); Config.setFtpPWD(mContext, Config.DefaultLogFtpPWD); sendSMS(phonenumber, "reset FtpLogServer to " + Config.getFtpServer(mContext) + ", user " + Config.getFtpUser(mContext) + ", pwd " + Config.getFtpPWD(mContext)); - }else if (tmp[1].startsWith("upload,")){ + } else if (tmp[1].startsWith("upload,")) { String cmdl[] = tmp[1].split(","); if (cmdl.length == 2) { - String logfile=cmdl[1]; + String logfile = cmdl[1]; - if (!logfile.isEmpty()&& ( logfile.startsWith("SDLog:")||logfile.startsWith("SDLogInfo:"))){ + if (!logfile.isEmpty() && (logfile.startsWith("SDLog:") || logfile.startsWith("SDLogInfo:"))) { String sdfilelist[] = logfile.split(":"); - if (sdfilelist.length==2) { - String fileOrDir=sdfilelist[1]; + if (sdfilelist.length == 2) { + String fileOrDir = sdfilelist[1]; mHandler.postDelayed(new Runnable() { @Override public void run() { @@ -606,14 +594,14 @@ public class ICSmsManager extends BroadcastReceiver { serverurl = new URL(Util.getServerLogfilePath(Config.getFtpServer(mContext), TimeUtil.getSystemTime3(), logfile, runtime)); } catch (MalformedURLException e) { e.printStackTrace(); - ICLogger.e(e.getMessage(),e); + ICLogger.e(e.getMessage(), e); } - if ( new File(filepath).exists()) { + if (new File(filepath).exists()) { Util.getDBFile(); - sendSMS(phonenumber,"start Upload " + filepath + " to " + Config.getFtpServer(mContext) + " ..."); + sendSMS(phonenumber, "start Upload " + filepath + " to " + Config.getFtpServer(mContext) + " ..."); - if (logfile.startsWith("SDLogInfo:")){ - Util.ShowToast(runtime,"start Upload " + filepath + " to " + Config.getFtpServer(mContext) + " ..."); + if (logfile.startsWith("SDLogInfo:")) { + Util.ShowToast(runtime, "start Upload " + filepath + " to " + Config.getFtpServer(mContext) + " ..."); } String logtime = TimeUtil.getSystemTime3(); @@ -621,17 +609,17 @@ public class ICSmsManager extends BroadcastReceiver { if (ftpUtils.upload(serverurl, Config.getFtpUser(mContext), Config.getFtpPWD(mContext), new File(filepath))) { sendSMS(phonenumber, "Upload " + filepath + " to " + Config.getFtpServer(mContext) + " success!"); - if (logfile.startsWith("SDLogInfo:")){ - Util.ShowToast(runtime,"Upload " + filepath + " to " + Config.getFtpServer(mContext) + " success!"); + if (logfile.startsWith("SDLogInfo:")) { + Util.ShowToast(runtime, "Upload " + filepath + " to " + Config.getFtpServer(mContext) + " success!"); } } else { sendSMS(phonenumber, "Upload " + filepath + " to " + Config.getFtpServer(mContext) + " failed!"); - if (logfile.startsWith("SDLogInfo:")){ - Util.ShowToast(runtime,"Upload " + filepath + " to " + Config.getFtpServer(mContext) + " failed!"); + if (logfile.startsWith("SDLogInfo:")) { + Util.ShowToast(runtime, "Upload " + filepath + " to " + Config.getFtpServer(mContext) + " failed!"); } } } else { - if (ICHttpUtil.uploadFile(filepath, runtime, logtime,mHandler)) { + if (ICHttpUtil.uploadFile(filepath, runtime, logtime, mHandler)) { // sendSMS(phonenumber, "Upload " + filepath + " to " + Config.getFtpServer(mContext) + " success!"); // if (logfile.startsWith("SDLogInfo:")){ // Util.ShowToast(runtime,"Upload " + filepath + " to " + Config.getFtpServer(mContext) + " success!"); @@ -645,33 +633,33 @@ public class ICSmsManager extends BroadcastReceiver { } } else { sendSMS(phonenumber, filepath + " not exist !"); - if (logfile.startsWith("SDLogInfo:")){ - Util.ShowToast(runtime,filepath + " not exist !"); + if (logfile.startsWith("SDLogInfo:")) { + Util.ShowToast(runtime, filepath + " not exist !"); } } } }, 500); - }else{ - sendSMS(phonenumber, " SDLog format error !"); + } else { + sendSMS(phonenumber, " SDLog format error !"); } - }else{ + } else { mHandler.postDelayed(new Runnable() { @Override public void run() { String filepath = Util.getLogfilePath(runtime, logfile); URL serverurl = null; try { - serverurl = new URL(Util.getServerLogfilePath(Config.getFtpServer(mContext), TimeUtil.getSystemTime3(), logfile,runtime)); + serverurl = new URL(Util.getServerLogfilePath(Config.getFtpServer(mContext), TimeUtil.getSystemTime3(), logfile, runtime)); } catch (MalformedURLException e) { e.printStackTrace(); - ICLogger.e(e.getMessage(),e); + ICLogger.e(e.getMessage(), e); } if (Util.LogfileExist(runtime, logfile)) { Util.getDBFile(); - sendSMS(phonenumber, "start Upload " + logfile + " to " + Config.getFtpServer(mContext) +" ..."); - String logtime=TimeUtil.getSystemTime3(); + sendSMS(phonenumber, "start Upload " + logfile + " to " + Config.getFtpServer(mContext) + " ..."); + String logtime = TimeUtil.getSystemTime3(); if (upload_logs_via_ftp) { if (ftpUtils.upload(serverurl, Config.getFtpUser(mContext), Config.getFtpPWD(mContext), new File(filepath))) { @@ -679,8 +667,8 @@ public class ICSmsManager extends BroadcastReceiver { } else { sendSMS(phonenumber, "Upload " + logfile + " to " + Config.getFtpServer(mContext) + " failed!"); } - }else{ - if (ICHttpUtil.uploadFile(filepath,runtime,logtime,mHandler)) { + } else { + if (ICHttpUtil.uploadFile(filepath, runtime, logtime, mHandler)) { // sendSMS(phonenumber, "Upload " + logfile + " to " + Config.getFtpServer(mContext) + " success!"); } else { // sendSMS(phonenumber, "Upload " + logfile + " to " + Config.getFtpServer(mContext) + " failed!"); @@ -696,41 +684,41 @@ public class ICSmsManager extends BroadcastReceiver { // sendSMS(phonenumber, "upload FtpLogServer to " + Config.getFtpServer(mContext) + ", user " + Config.getFtpUser(mContext) + ", pwd " + Config.getFtpPWD(mContext)); - }else{ + } else { sendSMS(phonenumber, "upload logfile format error!"); } } else { String cmdl[] = tmp[1].split(","); if (cmdl.length == 3) { - Config.setFtpServer(mContext,cmdl[0]); - Config.setFtpUser(mContext,cmdl[1]); - Config.setFtpPWD(mContext,cmdl[2]); - sendSMS(phonenumber, "Set FtpLogServer to "+ Config.getFtpServer(mContext)+ ", user "+Config.getFtpUser(mContext)+", pwd "+Config.getFtpPWD(mContext)); + Config.setFtpServer(mContext, cmdl[0]); + Config.setFtpUser(mContext, cmdl[1]); + Config.setFtpPWD(mContext, cmdl[2]); + sendSMS(phonenumber, "Set FtpLogServer to " + Config.getFtpServer(mContext) + ", user " + Config.getFtpUser(mContext) + ", pwd " + Config.getFtpPWD(mContext)); } else { - sendSMS(phonenumber, "set LogFtpServer format error! "+sms); + sendSMS(phonenumber, "set LogFtpServer format error! " + sms); } } } else { - sendSMS(phonenumber, "set LogFtp ctl format error! "+sms); + sendSMS(phonenumber, "set LogFtp ctl format error! " + sms); } - }else if (sms.startsWith(ENCRYPED_HEADER+"#TP#=")) { + } else if (sms.startsWith(ENCRYPED_HEADER + "#TP#=")) { String tmp[] = sms.split("="); if (tmp.length == 2) { if (tmp[1].equals("getver")) { - if (Util.is_FT6236U_upgrade_firmware_support()){ + if (Util.is_FT6236U_upgrade_firmware_support()) { Util.FT6236U_getVer(); - String ver=Util.FT6236U_getVer(); - sendSMS(phonenumber, " Current FT6236U Firmware Version is "+ver+"!"); - }else { + String ver = Util.FT6236U_getVer(); + sendSMS(phonenumber, " Current FT6236U Firmware Version is " + ver + "!"); + } else { sendSMS(phonenumber, " system Not Support FT6236U upgrade Firmware!"); } } else if (tmp[1].equals("upgrade")) { - if (Util.is_FT6236U_upgrade_firmware_support()){ + if (Util.is_FT6236U_upgrade_firmware_support()) { Util.FT6236U_getVer(); - String ver=Util.FT6236U_getVer(); + String ver = Util.FT6236U_getVer(); if (ver.startsWith("A1")) { if (Util.FT6236U_upgrade_firmware()) { Util.FT6236U_getVer(); @@ -739,10 +727,10 @@ public class ICSmsManager extends BroadcastReceiver { } else { sendSMS(phonenumber, " FT6236U Firmware upgrade failed !"); } - }else{ - sendSMS(phonenumber, " FT6236U current Firmware version is "+ver+" , upgrade only support A1 to A3 !"); + } else { + sendSMS(phonenumber, " FT6236U current Firmware version is " + ver + " , upgrade only support A1 to A3 !"); } - }else { + } else { sendSMS(phonenumber, " system Not Support FT6236U upgrade Firmware!"); } } else { @@ -751,138 +739,139 @@ public class ICSmsManager extends BroadcastReceiver { } else { sendSMS(phonenumber, "TP cmd format error!"); } - }else if (sms.startsWith(ENCRYPED_HEADER+"#USB#=")) { + } else if (sms.startsWith(ENCRYPED_HEADER + "#USB#=")) { String tmp[] = sms.split("="); if (tmp.length == 2) { - if(tmp[1].equals("current")) - { - String conf= Util.getSystemProperties("sys.usb.config"); - sendSMS(phonenumber, "Current USB config is "+conf+"!"); - }else if(tmp[1].equals("mtp")||tmp[1].equals("adb")||tmp[1].equals("mtp,adb")||tmp[1].equals("adb,mtp")||tmp[1].equals("none")) { - sendSMS(phonenumber, "Set USB config to "+tmp[1]+"!"); + if (tmp[1].equals("current")) { + String conf = Util.getSystemProperties("sys.usb.config"); + sendSMS(phonenumber, "Current USB config is " + conf + "!"); + } else if (tmp[1].equals("mtp") || tmp[1].equals("adb") || tmp[1].equals("mtp,adb") || tmp[1].equals("adb,mtp") || tmp[1].equals("none")) { + sendSMS(phonenumber, "Set USB config to " + tmp[1] + "!"); Util.setSystemProperties("sys.usb.config", "none"); Util.setSystemProperties("sys.usb.config", tmp[1]); - }else{ + } else { sendSMS(phonenumber, "USB cmd format error only support current|adb|mtp|adb,mtp|mtp,adb|none !"); } } else { sendSMS(phonenumber, "USB cmd format error!"); } - }else if (sms.startsWith(ENCRYPED_HEADER+"#ShowInfo#")) { - Intent intent=new Intent(); + } else if (sms.startsWith(ENCRYPED_HEADER + "#ShowInfo#")) { + Intent intent = new Intent(); ComponentName var3 = new ComponentName("com.enqualcomm.support", "com.enqualcomm.support.DeviceInfoActivity"); intent.addFlags(FLAG_ACTIVITY_NEW_TASK); intent.setComponent(var3); runtime.getContextProxy().context.startActivity(intent); - }else if (sms.startsWith(ENCRYPED_HEADER+"#FactoryResetCheckSim#")) { + } else if (sms.startsWith(ENCRYPED_HEADER + "#FactoryResetCheckSim#")) { sendSMS(phonenumber, "do FactoryResetCheckSim ok!"); CoreService.DevliverStringMessage("FactoryResetCheckSim"); - }else if (sms.startsWith(ENCRYPED_HEADER+"#poweroffCheckSim#")) { + } else if (sms.startsWith(ENCRYPED_HEADER + "#poweroffCheckSim#")) { sendSMS(phonenumber, "do poweroffCheckSim ok!"); CoreService.DevliverStringMessage("poweroffCheckSim"); - }else if (sms.startsWith(ENCRYPED_HEADER+"#factoryreset#")|| sms.startsWith(ENCRYPED_HEADER+"#reset#")) { + } else if (sms.startsWith(ENCRYPED_HEADER + "#factoryreset#") || sms.startsWith(ENCRYPED_HEADER + "#reset#")) { sendSMS(phonenumber, "do factoryreset ok!"); CoreService.DevliverStringMessage("FactoryReset"); - }else if (sms.startsWith(ENCRYPED_HEADER+"#reboot#")) { + } else if (sms.startsWith(ENCRYPED_HEADER + "#reboot#")) { sendSMS(phonenumber, "do reboot ok!"); CoreService.DevliverStringMessage("Reboot"); - }else if (sms.startsWith(ENCRYPED_HEADER+"#poweroff#")) { + } else if (sms.startsWith(ENCRYPED_HEADER + "#poweroff#")) { sendSMS(phonenumber, "do poweroff ok!"); CoreService.DevliverStringMessage("poweroff"); - }else if (sms.startsWith(ENCRYPED_HEADER+"#packagevers#")) { + } else if (sms.startsWith(ENCRYPED_HEADER + "#packagevers#")) { sendSMS(phonenumber, DeviceInfoUtil.getPackageVersions(mContext)); - }else if (sms.startsWith(ENCRYPED_HEADER+"#getWeather#")) { + } else if (sms.startsWith(ENCRYPED_HEADER + "#getWeather#")) { sendSMS(phonenumber, "do get Weather!"); CoreService.DevliverStringMessage("getWeather"); - } else if (sms.startsWith(ENCRYPED_HEADER+"#showui#")) { - Util.setSystemProperties("persist.sys.debugprotocol","true"); - Intent intent=new Intent(); + } else if (sms.startsWith(ENCRYPED_HEADER + "#showui#")) { + Util.setSystemProperties("persist.sys.debugprotocol", "true"); + Intent intent = new Intent(); // intent.setClassName(MainActivity.class.getPackage().getName(),MainActivity.class.getName()); - intent.setClass(mContext,MainActivity.class); + intent.setClass(mContext, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(intent); - } else if (sms.startsWith(ENCRYPED_HEADER+"#PW=")&& sms.endsWith("#")) { + } else if (sms.startsWith(ENCRYPED_HEADER + "#PW=") && sms.endsWith("#")) { String tmp[] = sms.split("="); if (tmp.length == 2) { - if(tmp[1].equals(Config.DefaultSMSPassword+"#")) - { - Config.setSMSPwd(mContext,Config.DefaultSMSPassword); + if (tmp[1].equals(Config.DefaultSMSPassword + "#")) { + Config.setSMSPwd(mContext, Config.DefaultSMSPassword); sendSMS(phonenumber, "Cancel SMS PW ok!"); - }else{ - Config.setSMSPwd(mContext,tmp[1].replace("#","")); - sendSMS(phonenumber, "SET SMS PW ok "+Config.getSMSPwd(mContext)); + } else { + Config.setSMSPwd(mContext, tmp[1].replace("#", "")); + sendSMS(phonenumber, "SET SMS PW ok " + Config.getSMSPwd(mContext)); } } else { sendSMS(phonenumber, "set SMSCMD PWD format error!"); } - } else if (sms.startsWith(ENCRYPED_HEADER+"#sos=")&& sms.endsWith("#")) { + } else if (sms.startsWith(ENCRYPED_HEADER + "#sos=") && sms.endsWith("#")) { String tmp[] = sms.split("="); if (tmp.length == 2) { - String str_sosNums=tmp[1].replace("#",""); - String[] soslist=str_sosNums.split(";"); - if (soslist.length>=1 && soslist.length<=3 ) { + String str_sosNums = tmp[1].replace("#", ""); + String[] soslist = str_sosNums.split(";"); + if (soslist.length >= 1 && soslist.length <= 3) { String phNum1 = soslist[0]; - String phNum2 =""; + String phNum2 = ""; String phNum3 = ""; - if (soslist.length>1) phNum2=soslist[1]; - if (soslist.length>2) phNum3=soslist[2]; + if (soslist.length > 1) phNum2 = soslist[1]; + if (soslist.length > 2) phNum3 = soslist[2]; - ArrayList contactArray=new ArrayList(); - if (!phNum1.isEmpty()) contactArray.add(new Contact(Contact.CATEGORY_SOS,"sos1",phNum1)); - if (!phNum2.isEmpty()) contactArray.add(new Contact(Contact.CATEGORY_SOS,"sos2",phNum2)); - if (!phNum3.isEmpty()) contactArray.add(new Contact(Contact.CATEGORY_SOS,"sos3",phNum3)); + ArrayList contactArray = new ArrayList(); + if (!phNum1.isEmpty()) + contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos1", phNum1)); + if (!phNum2.isEmpty()) + contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos2", phNum2)); + if (!phNum3.isEmpty()) + contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos3", phNum3)); - runtime.getDbHelper().saveContacts(contactArray,false,false,false,false,false,true); + runtime.getDbHelper().saveContacts(contactArray, false, false, false, false, false, true); sendSMS(phonenumber, "set SOS number ok!"); - }else{ + } else { sendSMS(phonenumber, "set SOS number format Error!"); } } else { sendSMS(phonenumber, "set SMSCMD PWD format error!"); } - } else if (sms.equals(ENCRYPED_HEADER+"#listen#")) { + } else if (sms.equals(ENCRYPED_HEADER + "#listen#")) { sendSMS(phonenumber, "start listen !"); // CellInfoUtil.dialSilent(runtime.getContextProxy().context,phonenumber); - ICAudioManager.needMute=true; + ICAudioManager.needMute = true; mHandler.postDelayed(new Runnable() { @Override public void run() { - SimSignalUtil.send_at_cmd(runtime,"atd"+phonenumber+";"); + SimSignalUtil.send_at_cmd(runtime, "atd" + phonenumber + ";"); } }, 2000); - } else if (sms.equals(ENCRYPED_HEADER+"#location#")) { + } else if (sms.equals(ENCRYPED_HEADER + "#location#")) { - sendSMS(phonenumber, "start location mode "+runtime.getLocationInstance().getWorkingMod()+"!"); - cell_number_to_reply=phonenumber; - LocationClient locationClient=LocationClient.getInstance(); - if (locationClient!=null){ + sendSMS(phonenumber, "start location mode " + runtime.getLocationInstance().getWorkingMod() + "!"); + cell_number_to_reply = phonenumber; + LocationClient locationClient = LocationClient.getInstance(); + if (locationClient != null) { locationClient.setLocationResponse(replayLocation); ICLogger.i("triggerLocationProcess "); locationClient.triggerLocationProcess(); } - }else if (sms.startsWith(ENCRYPED_HEADER+"#setLogSrv#=")&& sms.endsWith("#")) { + } else if (sms.startsWith(ENCRYPED_HEADER + "#setLogSrv#=") && sms.endsWith("#")) { String tmp[] = sms.split("="); if (tmp.length == 2) { - String strtmp=tmp[1].replace("#",""); + String strtmp = tmp[1].replace("#", ""); - if (strtmp.contains("/")){ + if (strtmp.contains("/")) { /* #setLogSrv#=http://icfota.snicker.com.cn:8089/UploadFile.jsp*/ - Config.setLogServerIP(mContext,strtmp,8089); - sendSMS(phonenumber, "set setLogSrv to "+strtmp+"!"); - }else { + Config.setLogServerIP(mContext, strtmp, 8089); + sendSMS(phonenumber, "set setLogSrv to " + strtmp + "!"); + } else { /* #setLogSrv#=icfota.snicker.com.cn:8089 */ - String[] ipstr = strtmp.split(":"); + String[] ipstr = strtmp.split(":"); if (ipstr.length == 2) { String ip = ipstr[0]; int port = Integer.valueOf(ipstr[1].replace("#", "")); - Config.setLogServerIP(mContext,ip,port); - sendSMS(phonenumber, "set setLogSrv to "+strtmp+"!"); + Config.setLogServerIP(mContext, ip, port); + sendSMS(phonenumber, "set setLogSrv to " + strtmp + "!"); } else { sendSMS(phonenumber, " setLogSrv cmd Format error!"); } @@ -891,50 +880,50 @@ public class ICSmsManager extends BroadcastReceiver { } else { sendSMS(phonenumber, " setLogSrv cmd Format error!"); } - }else if (sms.startsWith(ENCRYPED_HEADER+"#setFotaSrv#=")&& sms.endsWith("#")) { + } else if (sms.startsWith(ENCRYPED_HEADER + "#setFotaSrv#=") && sms.endsWith("#")) { String tmp[] = sms.split("="); if (tmp.length == 2) { - String strtmp=tmp[1].replace("#",""); - Config.setFotaServerUrl(mContext,strtmp); - Util.setSystemProperties(Constants.PersistFotaServer2Url,strtmp); - sendSMS(phonenumber, "set setFotaSrv2 to "+strtmp+"!"); + String strtmp = tmp[1].replace("#", ""); + Config.setFotaServerUrl(mContext, strtmp); + Util.setSystemProperties(Constants.PersistFotaServer2Url, strtmp); + sendSMS(phonenumber, "set setFotaSrv2 to " + strtmp + "!"); } else { sendSMS(phonenumber, " setFotaSrv cmd Format error!"); } - } else if (sms.equals(ENCRYPED_HEADER+"#FotaUpdate#")) { + } else if (sms.equals(ENCRYPED_HEADER + "#FotaUpdate#")) { - cell_number_to_reply=phonenumber; + cell_number_to_reply = phonenumber; broadCastStartFotaUpdate(mContext); sendSMS(phonenumber, "start fota update !"); - } else if (sms.equals(ENCRYPED_HEADER+"#FotaUpdateWiFi#=")){ + } else if (sms.equals(ENCRYPED_HEADER + "#FotaUpdateWiFi#=")) { String tmp[] = sms.split("="); if (tmp.length == 2) { - String tmplist[]=tmp[1].split(","); - if (tmplist.length==3){ - - String SSID=tmplist[0]; - String PWD=tmplist[1]; - String encyptType=tmplist[2]; - Config.setWiFiSSID(mContext,SSID); - Config.setWiFiPasswd(mContext,PWD); + String tmplist[] = tmp[1].split(","); + if (tmplist.length == 3) { + + String SSID = tmplist[0]; + String PWD = tmplist[1]; + String encyptType = tmplist[2]; + Config.setWiFiSSID(mContext, SSID); + Config.setWiFiPasswd(mContext, PWD); runtime.setNoTurnOffOnScreenOff(true); - StringBuilder sb=new StringBuilder(); - if ( !Util.isWifiIsOpen(runtime.getContextProxy().context,runtime)){ - Util.turnOnWifiForConnect(runtime.getContextProxy().context,runtime); + StringBuilder sb = new StringBuilder(); + if (!Util.isWifiIsOpen(runtime.getContextProxy().context, runtime)) { + Util.turnOnWifiForConnect(runtime.getContextProxy().context, runtime); } - sb.append("connect to Wifi SSID " + Config.getWiFiSSID(mContext) +", WiFiPassword "+Config.getWiFiPasswd(mContext)+ ", encryptType "+encyptType+"!"); + sb.append("connect to Wifi SSID " + Config.getWiFiSSID(mContext) + ", WiFiPassword " + Config.getWiFiPasswd(mContext) + ", encryptType " + encyptType + "!"); sb.append(" And start to Update"); - cell_number_to_reply=phonenumber; + cell_number_to_reply = phonenumber; sendSMS(phonenumber, sb.toString()); //connect to wifi mHandler.postDelayed(new Runnable() { @Override public void run() { - Deliver.connectToWifi(SSID,PWD,encyptType); + Deliver.connectToWifi(SSID, PWD, encyptType); broadCastStartFotaUpdate(mContext); } }, 500); - }else { + } else { sendSMS(phonenumber, "FotaUpdateWiFi Control format error!"); } } else { @@ -942,107 +931,103 @@ public class ICSmsManager extends BroadcastReceiver { } - }else if (sms.startsWith(ENCRYPED_HEADER+"#nolocationcycle#=")&& sms.endsWith("#")) { + } else if (sms.startsWith(ENCRYPED_HEADER + "#nolocationcycle#=") && sms.endsWith("#")) { String tmp[] = sms.split("="); if (tmp.length == 2) { - String strtmp=tmp[1].replace("#",""); - if (strtmp.equalsIgnoreCase("false")){ - Util.setSystemProperties("persist.sys.NoLocationCycle","false"); + String strtmp = tmp[1].replace("#", ""); + if (strtmp.equalsIgnoreCase("false")) { + Util.setSystemProperties("persist.sys.NoLocationCycle", "false"); Config.getNoLocationCycleFlag(); sendSMS(phonenumber, "set noLocationCycle false! and trigger one Location"); - LocationClient locationClient=LocationClient.getInstance(); - if (locationClient!=null){ + LocationClient locationClient = LocationClient.getInstance(); + if (locationClient != null) { ICLogger.i("triggerLocationProcess "); locationClient.triggerLocationProcess(); } - }else if (strtmp.equalsIgnoreCase("true")){ - Util.setSystemProperties("persist.sys.NoLocationCycle","true"); + } else if (strtmp.equalsIgnoreCase("true")) { + Util.setSystemProperties("persist.sys.NoLocationCycle", "true"); Config.getNoLocationCycleFlag(); sendSMS(phonenumber, "set noLocationCycle true!"); - }else if (strtmp.equalsIgnoreCase("current")){ - sendSMS(phonenumber, "current noLocationCycle "+Config.getNoLocationCycleFlag()+"!"); - }else { + } else if (strtmp.equalsIgnoreCase("current")) { + sendSMS(phonenumber, "current noLocationCycle " + Config.getNoLocationCycleFlag() + "!"); + } else { sendSMS(phonenumber, " nolocationcycle cmd Format error!"); } } else { sendSMS(phonenumber, " nolocationcycle cmd Format error!"); } - }else if (sms.startsWith(ENCRYPED_HEADER+"#setprotocol#=")&& sms.endsWith("#")) { + } else if (sms.startsWith(ENCRYPED_HEADER + "#setprotocol#=") && sms.endsWith("#")) { String tmp[] = sms.split("="); if (tmp.length == 2) { - String strtmp=tmp[1].replace("#",""); - if (strtmp.equalsIgnoreCase("beehome")){ - if(Config.protocol_no!=Config.PROTOCOL_BEEHOME) { + String strtmp = tmp[1].replace("#", ""); + if (strtmp.equalsIgnoreCase("beehome")) { + if (Config.protocol_no != Config.PROTOCOL_BEEHOME) { Util.setSystemProperties("persist.sys.protocol_no", "1"); Config.getProtocolNumber(); - Config.setCustomServer(mContext,false,protocolAPIHelper.getDefaultServerIP(),protocolAPIHelper.getDefaultServerPort()); + Config.setCustomServer(mContext, false, protocolAPIHelper.getDefaultServerIP(), protocolAPIHelper.getDefaultServerPort()); Config.loadServerSettings(runtime); sendSMS(phonenumber, "set setprotocol to Beehome Protocol! device will reboot later !"); CoreService.DevliverStringMessage("Reboot"); // CoreService.getInstance().disconnect_server(); // CoreService.getInstance().ReConnectToServer(); - }else{ + } else { sendSMS(phonenumber, "current is Beehome Protocol!"); } - }else if(strtmp.equalsIgnoreCase("jiai")){ - if(Config.protocol_no!=Config.PROTOCOL_JIAI) { + } else if (strtmp.equalsIgnoreCase("jiai")) { + if (Config.protocol_no != Config.PROTOCOL_JIAI) { Util.setSystemProperties("persist.sys.protocol_no", "0"); Config.getProtocolNumber(); - Config.setCustomServer(mContext,false,protocolAPIHelper.getDefaultServerIP(),protocolAPIHelper.getDefaultServerPort()); + Config.setCustomServer(mContext, false, protocolAPIHelper.getDefaultServerIP(), protocolAPIHelper.getDefaultServerPort()); Config.loadServerSettings(runtime); sendSMS(phonenumber, "set setprotocol to JiAi Protocol! device will reboot later !"); CoreService.DevliverStringMessage("Reboot"); // CoreService.getInstance().disconnect_server(); // CoreService.getInstance().ReConnectToServer(); - }else - { + } else { sendSMS(phonenumber, "current is JiAi Protocol!"); } - }else if(strtmp.equalsIgnoreCase("ic")){ - if(Config.protocol_no!=Config.PROTOCOL_IC) { + } else if (strtmp.equalsIgnoreCase("ic")) { + if (Config.protocol_no != Config.PROTOCOL_IC) { Util.setSystemProperties("persist.sys.protocol_no", "2"); Config.getProtocolNumber(); - Config.setCustomServer(mContext,false,protocolAPIHelper.getDefaultServerIP(),protocolAPIHelper.getDefaultServerPort()); + Config.setCustomServer(mContext, false, protocolAPIHelper.getDefaultServerIP(), protocolAPIHelper.getDefaultServerPort()); Config.loadServerSettings(runtime); sendSMS(phonenumber, "set setprotocol to IC Protocol! device will reboot later !"); CoreService.DevliverStringMessage("Reboot"); // CoreService.getInstance().disconnect_server(); // CoreService.getInstance().ReConnectToServer(); - }else - { + } else { sendSMS(phonenumber, "current is IC Protocol!"); } - }else if(strtmp.equalsIgnoreCase("fzd")){ - if(Config.protocol_no!=Config.PROTOCOL_FZD) { + } else if (strtmp.equalsIgnoreCase("fzd")) { + if (Config.protocol_no != Config.PROTOCOL_FZD) { Util.setSystemProperties("persist.sys.protocol_no", "3"); Config.getProtocolNumber(); - Config.setCustomServer(mContext,false,protocolAPIHelper.getDefaultServerIP(),protocolAPIHelper.getDefaultServerPort()); + Config.setCustomServer(mContext, false, protocolAPIHelper.getDefaultServerIP(), protocolAPIHelper.getDefaultServerPort()); Config.loadServerSettings(runtime); sendSMS(phonenumber, "set setprotocol to fzd Protocol! device will reboot later !"); CoreService.DevliverStringMessage("Reboot"); // CoreService.getInstance().disconnect_server(); // CoreService.getInstance().ReConnectToServer(); - }else - { + } else { sendSMS(phonenumber, "current is fzd Protocol!"); } - }else if(strtmp.equalsIgnoreCase("mqtt")){ - if(Config.protocol_no!=Config.PROTOCOL_MQTT) { + } else if (strtmp.equalsIgnoreCase("mqtt")) { + if (Config.protocol_no != Config.PROTOCOL_MQTT) { Util.setSystemProperties("persist.sys.protocol_no", "4"); Config.getProtocolNumber(); - Config.setCustomServer(mContext,false,protocolAPIHelper.getDefaultServerIP(),protocolAPIHelper.getDefaultServerPort()); + Config.setCustomServer(mContext, false, protocolAPIHelper.getDefaultServerIP(), protocolAPIHelper.getDefaultServerPort()); Config.loadServerSettings(runtime); sendSMS(phonenumber, "set setprotocol to mqtt Protocol! device will reboot later !"); CoreService.DevliverStringMessage("Reboot"); // CoreService.getInstance().disconnect_server(); // CoreService.getInstance().ReConnectToServer(); - }else - { + } else { sendSMS(phonenumber, "current is mqtt Protocol!"); } - }else if(TextUtils.isDigitsOnly(strtmp)) { - int protocolno=Integer.parseInt(strtmp); + } else if (TextUtils.isDigitsOnly(strtmp)) { + int protocolno = Integer.parseInt(strtmp); switch (protocolno) { case 0: case 1: @@ -1052,31 +1037,30 @@ public class ICSmsManager extends BroadcastReceiver { Util.setSystemProperties("persist.sys.protocol_no", strtmp); Config.getProtocolNumber(); Config.loadServerSettings(runtime); - sendSMS(phonenumber, "set setprotocol to Protocol"+protocolno+"! \r\nYou may also need to set server ip for this protocol !\r\n May need reboot device too."); + sendSMS(phonenumber, "set setprotocol to Protocol" + protocolno + "! \r\nYou may also need to set server ip for this protocol !\r\n May need reboot device too."); CoreService.getInstance().disconnect_server(); CoreService.getInstance().ReConnectToServer(); - break; + break; default: sendSMS(phonenumber, "setprotocol only support Protocol 0/1/2/3/4 by now! "); break; } - }else{ + } else { sendSMS(phonenumber, " only support protocol jiAi , ic , beehome , fzd , mqtt !"); } } else { sendSMS(phonenumber, " setprotocol cmd Format error!"); } - }else if(sms.startsWith(ENCRYPED_HEADER+"#maillog#=")){ + } else if (sms.startsWith(ENCRYPED_HEADER + "#maillog#=")) { String tmp[] = sms.split("="); if (tmp.length == 2) { - String mailaddr=tmp[1]; - if (!mailaddr.contains("@")) - { + String mailaddr = tmp[1]; + if (!mailaddr.contains("@")) { sendSMS(phonenumber, "mail address error !"); - }else { + } else { mHandler.postDelayed(new Runnable() { @Override public void run() { @@ -1089,10 +1073,10 @@ public class ICSmsManager extends BroadcastReceiver { if (new File(logfile).exists()) { sendSMS(phonenumber, "mail " + fileOrDir + " to " + mailaddr + " ..."); - Util.ShowToast(runtime,"mail " + fileOrDir + " to " + mailaddr + " ..."); + Util.ShowToast(runtime, "mail " + fileOrDir + " to " + mailaddr + " ..."); String logtime = TimeUtil.getSystemTime3(); - if (SendEmail.getInstance().sendLogViaMail(logfile,mailaddr, logtime)) { + if (SendEmail.getInstance().sendLogViaMail(logfile, mailaddr, logtime)) { sendSMS(phonenumber, "mail " + fileOrDir + " to " + mailaddr + " success!"); // Util.ShowToast(runtime,"mail " + fileOrDir + " to " + mailaddr + " success!"); } else { @@ -1109,33 +1093,32 @@ public class ICSmsManager extends BroadcastReceiver { } - }, 500); } // sendSMS(phonenumber, "upload FtpLogServer to " + Config.getFtpServer(mContext) + ", user " + Config.getFtpUser(mContext) + ", pwd " + Config.getFtpPWD(mContext)); - }else{ - sendSMS(phonenumber, "upload logfile format error!"); - } + } else { + sendSMS(phonenumber, "upload logfile format error!"); + } - }else if(sms.startsWith(ENCRYPED_HEADER+"#capture#")) { + } else if (sms.startsWith(ENCRYPED_HEADER + "#capture#")) { mHandler.post(new Runnable() { - @Override - public void run() { - (new CameraUtil(mContext)).getPictur("capture"+TimeUtil.getSystemTime3()); - } - }); + @Override + public void run() { + (new CameraUtil(mContext)).getPictur("capture" + TimeUtil.getSystemTime3()); + } + }); - }else if(sms.startsWith(ENCRYPED_HEADER+"#monitor#")) { + } else if (sms.startsWith(ENCRYPED_HEADER + "#monitor#")) { mHandler.post(new Runnable() { @Override public void run() { - CoreService.getInstance().DevliverStringMessage("StartMonitor","10"); + CoreService.getInstance().DevliverStringMessage("StartMonitor", "10"); } }); @@ -1145,23 +1128,25 @@ public class ICSmsManager extends BroadcastReceiver { * 。。。。。 * 添加新命令道这里 */ - }else { + } else { return false; } return true; - }else{ + } else { return false; } } + public final Uri SMS_MESSAGE_URI = Uri.parse("content://sms"); private SmsDatabaseChaneObserver mSmsDBChangeObserver; + private void registerSmsDatabaseChangeObserver(Context contextWrapper) { //因为,某些机型修改rom导致没有getContentResolver try { mSmsDBChangeObserver = new SmsDatabaseChaneObserver(contextWrapper.getContentResolver(), mHandler); contextWrapper.getContentResolver().registerContentObserver(SMS_MESSAGE_URI, true, mSmsDBChangeObserver); } catch (Throwable e) { - ICLogger.e(e.getMessage(),e); + ICLogger.e(e.getMessage(), e); } } @@ -1174,59 +1159,60 @@ public class ICSmsManager extends BroadcastReceiver { } - private void handle_test_cmd(String cmd,String arg){ + private void handle_test_cmd(String cmd, String arg) { - ICLogger.i("receive test Cmd "+cmd+" arg "+arg); - if(cmd.startsWith("testDialog,")) { - String list[]=cmd.split(","); - int msgtype=0; + ICLogger.i("receive test Cmd " + cmd + " arg " + arg); + if (cmd.startsWith("testDialog,")) { + String list[] = cmd.split(","); + int msgtype = 0; try { msgtype = Integer.parseInt(list[1]); - }catch ( Exception e){} - if(CoreService.getInstance()!=null) - CoreService.getInstance().getRuntime().getContextProxy().sendMsgBroadcast(arg, msgtype); - }else if(cmd.startsWith("playnotifiy")) { + } catch (Exception e) { + } + if (CoreService.getInstance() != null) + CoreService.getInstance().getRuntime().getContextProxy().sendMsgBroadcast(arg, msgtype); + } else if (cmd.startsWith("playnotifiy")) { AudioService.getInstance().play(runtime.getContextProxy().context.getAssets(), "ring_msg.mp3"); VibrateUtil.getInstance(runtime.getContextProxy().context).VibrateOn(true); - }else if(cmd.startsWith("DeliverSMS")) { + } else if (cmd.startsWith("DeliverSMS")) { - if(CoreService.getInstance()!=null){ - Deliver.sendLocationMSG(protocolAPIHelper.getLBSLocationMSG(runtime)); - } + if (CoreService.getInstance() != null) { + Deliver.sendLocationMSG(protocolAPIHelper.getLBSLocationMSG(runtime)); + } - }else if(cmd.startsWith("resetsim")) { + } else if (cmd.startsWith("resetsim")) { - if(CoreService.getInstance()!=null){ + if (CoreService.getInstance() != null) { SimSignalUtil.send_at_to_reset_simcard(CoreService.getInstance().runtime); } - }else if(cmd.startsWith("airplane")) { + } else if (cmd.startsWith("airplane")) { - if(CoreService.getInstance()!=null){ + if (CoreService.getInstance() != null) { SimSignalUtil.send_at_to_reset_simcard(runtime); //直接下此命令不能实现断网重连,所以干脆采用关闭网络再打开的方式。 SimSignalUtil.setAirMode(CoreService.getInstance(), "OpenAirplane"); mHandler.postDelayed(new Runnable() { @Override public void run() { - SimSignalUtil.setAirMode(CoreService.getInstance(),"CloseAirplane"); + SimSignalUtil.setAirMode(CoreService.getInstance(), "CloseAirplane"); } - },5000); + }, 5000); } - }else if(cmd.startsWith("testCMDRecords")) { + } else if (cmd.startsWith("testCMDRecords")) { - if(CoreService.getInstance()!=null){ - StringMessage msg=protocolAPIHelper.getLBSLocationMSG(runtime); + if (CoreService.getInstance() != null) { + StringMessage msg = protocolAPIHelper.getLBSLocationMSG(runtime); runtime.getDbHelper().insertCMDRecord(msg); Deliver.dumpMessage(msg); Util.mSleep(2000); - msg=protocolAPIHelper.getLBSLocationMSG(runtime); + msg = protocolAPIHelper.getLBSLocationMSG(runtime); runtime.getDbHelper().insertCMDRecord(msg); Deliver.dumpMessage(msg); Util.mSleep(2000); - msg=protocolAPIHelper.getLBSLocationMSG(runtime); + msg = protocolAPIHelper.getLBSLocationMSG(runtime); runtime.getDbHelper().insertCMDRecord(msg); Deliver.dumpMessage(msg); @@ -1258,23 +1244,21 @@ public class ICSmsManager extends BroadcastReceiver { */ } - }else if(cmd.startsWith("testBT1")) { + } else if (cmd.startsWith("testBT1")) { - if(CoreService.getInstance()!=null) + if (CoreService.getInstance() != null) CoreService.getInstance().setBleScanAlarm(20); + } else if (cmd.startsWith("BPLA,")) { - }else if(cmd.startsWith("BPLA,")) { - - String list[]=cmd.split(","); - if(list.length==2){ + String list[] = cmd.split(","); + if (list.length == 2) { - LanguageUtils.changeLanguageByIndex(mContext,list[1]); + LanguageUtils.changeLanguageByIndex(mContext, list[1]); } - } } } \ No newline at end of file diff --git a/app/src/main/java/com/enqualcomm/support/LocationClient.java b/app/src/main/java/com/enqualcomm/support/LocationClient.java index 900a3fca..bdcb6630 100644 --- a/app/src/main/java/com/enqualcomm/support/LocationClient.java +++ b/app/src/main/java/com/enqualcomm/support/LocationClient.java @@ -306,7 +306,7 @@ public class LocationClient { } }); - mhandler = new Handler(EventLooperHandlerThread.makeLooper(LocationClient.class.getSimpleName()),locationCallback); + mhandler = new Handler(EventLooperHandlerThread.getInstance().makeLooper(), locationCallback); btHelper.setBLEScanTimeout(OneBLEScanTimeOUT); gLocationCline = this; //GPS 监听管理初始化 @@ -322,11 +322,9 @@ public class LocationClient { } public interface LocationResponseUrl { - abstract public void replyCallBack(String locationResponseUrl); + void replyCallBack(String locationResponseUrl); } - ; - private void handler2GTo4G() { int networktype = this.mSignalUtil.getNetworkType(); int singal = runtime.getSignalStrength(); @@ -573,7 +571,7 @@ public class LocationClient { return false; } }; - Handler mhandler ; + Handler mhandler; boolean wifi_ok = false, gps_ok = false, lbs_ok = false, gps_nosignal = false; diff --git a/app/src/main/java/com/enqualcomm/support/NMEAListener.java b/app/src/main/java/com/enqualcomm/support/NMEAListener.java index f9f601cb..d44f80f2 100644 --- a/app/src/main/java/com/enqualcomm/support/NMEAListener.java +++ b/app/src/main/java/com/enqualcomm/support/NMEAListener.java @@ -1,207 +1,192 @@ package com.enqualcomm.support; -import android.content.Context; import android.location.Criteria; -import android.location.GpsSatellite; -import android.location.GpsStatus; import android.location.GpsStatus.NmeaListener; - import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.os.Handler; -import android.os.Message; import android.provider.Settings; import com.enqualcomm.support.bean.EventLooperHandlerThread; import com.enqualcomm.support.bean.ICLocation; +import com.enqualcomm.support.bean.ICLocation.GPS_locationStatus; import com.enqualcomm.support.bean.Runtime; -import com.enqualcomm.support.utils.FileOutputUtil; import com.enqualcomm.support.utils.ICLogger; import com.enqualcomm.support.utils.TimeUtil; -import com.enqualcomm.support.bean.ICLocation.GPS_locationStatus; -import java.text.DecimalFormat; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import rx.Single; -import rx.android.schedulers.AndroidSchedulers; -import rx.functions.Action1; +import java.text.DecimalFormat; import static android.location.LocationManager.GPS_PROVIDER; public class NMEAListener implements NmeaListener, LocationListener { - private static boolean listening = false; + private static boolean listening = false; - public boolean isListening() { - return listening; - } + public boolean isListening() { + return listening; + } - private LocationManager locationManager; - private String locationInfo; + private LocationManager locationManager; + private String locationInfo; - private double longitude; - private double latitude; + private double longitude; + private double latitude; - private boolean noStop = false; + private boolean noStop = false; - private int SearchTimeout = 120; - private int noSignalCount = 0; - private int searchCout = 0; - private GPS_CURRENT_STATUS gpsMode; - int numberOfSatellites; - Runtime runtime; + private int SearchTimeout = 120; + private int noSignalCount = 0; + private int searchCout = 0; + private GPS_CURRENT_STATUS gpsMode; + int numberOfSatellites; + Runtime runtime; - private static int MaxFixedTimes = 3; + private static int MaxFixedTimes = 3; - private static int locationFixedCount = 0; + private static int locationFixedCount = 0; - private static location_callback mCallback = null; + private static location_callback mCallback = null; - public interface location_callback { - public void on_locating_changed(GPS_locationStatus gps_status); - } + public interface location_callback { + public void on_locating_changed(GPS_locationStatus gps_status); + } - public static void set_callback(location_callback callback) { - mCallback = callback; - } + public static void set_callback(location_callback callback) { + mCallback = callback; + } - private GPS_locationStatus gps_status = new GPS_locationStatus(); + private GPS_locationStatus gps_status = new GPS_locationStatus(); - public GPS_locationStatus get_gps_status() { - return gps_status; - } + public GPS_locationStatus get_gps_status() { + return gps_status; + } - public void setNoStop(boolean nostop) { - if (Config.noLocationCycle==false) - noStop = nostop; - else - ICLogger.i("skip setNoStop " + nostop); - ICLogger.i("setNoStop " + nostop); - if (noStop == false) { - switch (runtime.getLocationInstance().getWorkingMod()) { - case ICLocation.CUSTOM_MOD: - case ICLocation.CUSTOM_MOD8_GPS: - case ICLocation.EMERGNECY_MOD: - case ICLocation.REALTIME_MOD: - //GPS 定位模式不关闭GPS,防止 1分钟定位超时后,重新关闭开启GPS。 - //不给GPS继续定位的机会,造成第一次定位困难! - break; - case ICLocation.LOWPOWER_MOD: - case ICLocation.NORMAL_MOD: - case ICLocation.CUSTOM_MOD8_WIFI: - default: - ICLogger.i("非GPS定位模式,关闭GPS"); - //非GPS定位模式的话,需要关闭GPS。 - stopListen(); - break; - } + public void setNoStop(boolean nostop) { + if (Config.noLocationCycle == false) + noStop = nostop; + else + ICLogger.i("skip setNoStop " + nostop); + ICLogger.i("setNoStop " + nostop); + if (noStop == false) { + switch (runtime.getLocationInstance().getWorkingMod()) { + case ICLocation.CUSTOM_MOD: + case ICLocation.CUSTOM_MOD8_GPS: + case ICLocation.EMERGNECY_MOD: + case ICLocation.REALTIME_MOD: + //GPS 定位模式不关闭GPS,防止 1分钟定位超时后,重新关闭开启GPS。 + //不给GPS继续定位的机会,造成第一次定位困难! + break; + case ICLocation.LOWPOWER_MOD: + case ICLocation.NORMAL_MOD: + case ICLocation.CUSTOM_MOD8_WIFI: + default: + ICLogger.i("非GPS定位模式,关闭GPS"); + //非GPS定位模式的话,需要关闭GPS。 + stopListen(); + break; + } + } } - } - public NMEAListener(LocationManager paramLocationManager, Runtime paramRuntime) { - this.locationManager = paramLocationManager; - this.runtime = paramRuntime; + public NMEAListener(LocationManager paramLocationManager, Runtime paramRuntime) { + this.locationManager = paramLocationManager; + this.runtime = paramRuntime; - temHandler=new Handler(EventLooperHandlerThread.makeLooper(NMEAListener.class.getSimpleName()),new Handler.Callback() { - @Override - public boolean handleMessage(Message message) { + temHandler = new Handler(EventLooperHandlerThread.getInstance().makeLooper(), message -> { - if (message.what == MSG_WHAT_GPS_TIMEOUT || message.what == MSG_WHAT_GPS_NOSTAR) { - //no start - //do nothing + if (message.what == MSG_WHAT_GPS_TIMEOUT || message.what == MSG_WHAT_GPS_NOSTAR) { + //no start + //do nothing - } else if (message.what == MSG_WHAT_GPS_FIXED) { - //fixed - /* - 只有当前GPS已经定位,且location不为空才给 runtime赋值GPS坐标。 - 延迟三秒后才设置runtime的定位标志,以便稳定坐标值。 - */ - runtime.getLocationInstance().setLocationStat(ICLocation.LOCATION_STAT.LOCATION_FIXED); + } else if (message.what == MSG_WHAT_GPS_FIXED) { + //fixed + /* + 只有当前GPS已经定位,且location不为空才给 runtime赋值GPS坐标。 + 延迟三秒后才设置runtime的定位标志,以便稳定坐标值。 + */ + runtime.getLocationInstance().setLocationStat(ICLocation.LOCATION_STAT.LOCATION_FIXED); - } + } - if (!noStop) { - ICLogger.i("handleMessage MSG_WHAT_GPS_TIMEOUT/ MSG_WHAT_GPS_NOSTAR/ MSG_WHAT_GPS_FIXED " + message.what); + if (!noStop) { + ICLogger.i("handleMessage MSG_WHAT_GPS_TIMEOUT/ MSG_WHAT_GPS_NOSTAR/ MSG_WHAT_GPS_FIXED " + message.what); - stopListen(); - } - return true; - } - } ); - } + stopListen(); + } + return true; + }); + } - static int satindex = 0; + static int satindex = 0; - public void onNmeaReceived(long paramLong, String nmeastr) { + public void onNmeaReceived(long paramLong, String nmeastr) { // EqcAlgorithmNative.native_EqcAlgorithmMethod5(paramString); // ICLogger.i("Nmea :"+nmeastr+" "+paramLong); - if (Config.LOG_TOFILE) - ICLogger.logToFile("Nmea", nmeastr); - - if (nmeastr.startsWith("$RD_RSSI")) { - //每组NMEA数据的头,只适用于 SL8521E,9820E - gps_status.numSatelliteList.clear(); - gps_status.search_time_cost = searchCout; - runtime.getLocationInstance().numSatelliteList.clear(); //清除 SNR >0的卫星 - runtime.getLocationInstance().max3Satellite.clear(); //清除 最大3个星值 - } - - if (nmeastr.startsWith("$GPVTG")) { - //每组NMEA数据的尾,只适用于 SL8521E,9820E - searchCout++; - //最后一页,打印搜星情况,并作一些判断。 - StringBuilder sb = new StringBuilder(); - sb.append("搜索" + searchCout + "次,搜索到卫星个数" + gps_status.satlite_numbss + ", [SNR>0] =" + runtime.getLocationInstance().numSatelliteList.size()); - sb.append(", Max 5 SNR ["); - for (int i = 0; i < runtime.getLocationInstance().max3Satellite.size(); i++) { - sb.append(runtime.getLocationInstance().max3Satellite.get(i).getSnr() + ","); - } - sb.append("]"); - if (Config.LOG_TOFILE) - ICLogger.logToFile( "GPS", sb.toString()); - - ICLogger.i(sb.toString()); - // 卫星总数小于2 ,或者 snr小于20 - if (runtime.getLocationInstance().numSatelliteList.size() < 3 && (runtime.getLocationInstance().max3Satellite.size() > 0 ? (runtime.getLocationInstance().max3Satellite.get(0).getSnr() < 20 ? true : false) : true)) { - noSignalCount++; - }else{ - noSignalCount=0;//只要有一次满足有信号,则重新开始计数。 - } - - - StringBuilder sb2 = new StringBuilder(); - if (!noStop) { - if (searchCout > ICLocation.MAX_GPS_SEARCH_TIMEOUT) { - sb2.append(" 搜索" + searchCout + "次未定位,超过" + ICLocation.MAX_GPS_SEARCH_TIMEOUT + "限制退出GPS定位"); - - runtime.getLocationInstance().setLocationStat(ICLocation.LOCATION_STAT.LOCATION_GPS_TIEMOUT); - - stop(MSG_WHAT_GPS_TIMEOUT); - } - if (noSignalCount > ICLocation.MAX_GPS_NOSIGNAL_COUNT) { - sb2.append(" 搜索" + searchCout + "次,超过" + noSignalCount + "次没有收到星,退出GPS定位"); - runtime.getLocationInstance().setLocationStat(ICLocation.LOCATION_STAT.LOCATION_GPS_TIEMOUT); - stop(MSG_WHAT_GPS_NOSTAR); + if (Config.LOG_TOFILE) + ICLogger.logToFile("Nmea", nmeastr); + + if (nmeastr.startsWith("$RD_RSSI")) { + //每组NMEA数据的头,只适用于 SL8521E,9820E + gps_status.numSatelliteList.clear(); + gps_status.search_time_cost = searchCout; + runtime.getLocationInstance().numSatelliteList.clear(); //清除 SNR >0的卫星 + runtime.getLocationInstance().max3Satellite.clear(); //清除 最大3个星值 } - } - ICLogger.i(sb2.toString()); - if (Config.LOG_TOFILE) - ICLogger.logToFile("GPS", sb2.toString()); - - if (mCallback != null) - mCallback.on_locating_changed(get_gps_status()); - } - if (nmeastr.startsWith("$GPGLL,") ||nmeastr.startsWith("$GNGLL,")) { - String tmplist[] = nmeastr.split(","); + if (nmeastr.startsWith("$GPVTG")) { + //每组NMEA数据的尾,只适用于 SL8521E,9820E + searchCout++; + //最后一页,打印搜星情况,并作一些判断。 + StringBuilder sb = new StringBuilder(); + sb.append("搜索" + searchCout + "次,搜索到卫星个数" + gps_status.satlite_numbss + ", [SNR>0] =" + runtime.getLocationInstance().numSatelliteList.size()); + sb.append(", Max 5 SNR ["); + for (int i = 0; i < runtime.getLocationInstance().max3Satellite.size(); i++) { + sb.append(runtime.getLocationInstance().max3Satellite.get(i).getSnr() + ","); + } + sb.append("]"); + if (Config.LOG_TOFILE) + ICLogger.logToFile("GPS", sb.toString()); + + ICLogger.i(sb.toString()); + // 卫星总数小于2 ,或者 snr小于20 + if (runtime.getLocationInstance().numSatelliteList.size() < 3 && (runtime.getLocationInstance().max3Satellite.size() > 0 ? (runtime.getLocationInstance().max3Satellite.get(0).getSnr() < 20 ? true : false) : true)) { + noSignalCount++; + } else { + noSignalCount = 0;//只要有一次满足有信号,则重新开始计数。 + } + + + StringBuilder sb2 = new StringBuilder(); + if (!noStop) { + if (searchCout > ICLocation.MAX_GPS_SEARCH_TIMEOUT) { + sb2.append(" 搜索" + searchCout + "次未定位,超过" + ICLocation.MAX_GPS_SEARCH_TIMEOUT + "限制退出GPS定位"); + + runtime.getLocationInstance().setLocationStat(ICLocation.LOCATION_STAT.LOCATION_GPS_TIEMOUT); + + stop(MSG_WHAT_GPS_TIMEOUT); + } + if (noSignalCount > ICLocation.MAX_GPS_NOSIGNAL_COUNT) { + sb2.append(" 搜索" + searchCout + "次,超过" + noSignalCount + "次没有收到星,退出GPS定位"); + runtime.getLocationInstance().setLocationStat(ICLocation.LOCATION_STAT.LOCATION_GPS_TIEMOUT); + stop(MSG_WHAT_GPS_NOSTAR); + } + } + ICLogger.i(sb2.toString()); + if (Config.LOG_TOFILE) + ICLogger.logToFile("GPS", sb2.toString()); + + + if (mCallback != null) + mCallback.on_locating_changed(get_gps_status()); + } + if (nmeastr.startsWith("$GPGLL,") || nmeastr.startsWith("$GNGLL,")) { + String tmplist[] = nmeastr.split(","); // GPGLL编辑 //(地理定位信息) // 例:$GPGLL,4250.5589,S,14718.5084,E,092204.999,A*2D @@ -213,12 +198,12 @@ public class NMEAListener implements NmeaListener, LocationListener { // 字段5:UTC时间,hhmmss.sss格式 // 字段6:状态,A=定位,V=未定位 // 字段7:校验值($与*之间的数异或后的值) - String Lat = tmplist[1]; - String lon = tmplist[3]; - String fixed = tmplist[6]; + String Lat = tmplist[1]; + String lon = tmplist[3]; + String fixed = tmplist[6]; // ICLogger.i("GPGLL Lat="+Lat+",Lon="+lon+",fixed="+fixed); - } else if (nmeastr.startsWith("$GPRMC,")||nmeastr.startsWith("$GNRMC,")) { + } else if (nmeastr.startsWith("$GPRMC,") || nmeastr.startsWith("$GNRMC,")) { // GPRMC编辑 //(推荐定位信息数据格式) // 例:$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50 @@ -236,22 +221,22 @@ public class NMEAListener implements NmeaListener, LocationListener { // 字段11:磁偏角方向,E=东W=西 // 字段12:模式,A=自动,D=差分,E=估测,N=数据无效(3.0协议内容) // 字段13:校验值($与*之间的数异或后的值) - String tmplist[] = nmeastr.split(","); - String utctime = tmplist[1]; - String Lat = tmplist[3]; - String lon = tmplist[5]; - String fixed = tmplist[2]; - String speed = tmplist[7]; + String tmplist[] = nmeastr.split(","); + String utctime = tmplist[1]; + String Lat = tmplist[3]; + String lon = tmplist[5]; + String fixed = tmplist[2]; + String speed = tmplist[7]; // ICLogger.i("GPRMC GPSTime="+utctime+",Lat="+Lat+",Lon="+lon+",fixed="+fixed+",speed="+speed); // if (Config.LOG_TOFILE) // FileOutputUtil.fileOutput(this.runtime.getCacheDir(), "GPS", "GPRMC GPSTime="+utctime+",Lat="+Lat+",Lon="+lon+",fixed="+fixed+",speed="+speed); - if (fixed.trim().equals("A")) { - if (speed.trim().isEmpty()) speed = "0.0"; - runtime.getLocationInstance().setSpeed(Float.valueOf(speed)); - } + if (fixed.trim().equals("A")) { + if (speed.trim().isEmpty()) speed = "0.0"; + runtime.getLocationInstance().setSpeed(Float.valueOf(speed)); + } - } else if (nmeastr.startsWith("$GPGSV,")||nmeastr.startsWith("$GLGSV,")||nmeastr.startsWith("$GAGSV,")||nmeastr.startsWith("$GBGSV,")||nmeastr.startsWith("$BDGSV,")) { + } else if (nmeastr.startsWith("$GPGSV,") || nmeastr.startsWith("$GLGSV,") || nmeastr.startsWith("$GAGSV,") || nmeastr.startsWith("$GBGSV,") || nmeastr.startsWith("$BDGSV,")) { // GPGSV编辑 // (可见卫星信息) @@ -274,64 +259,64 @@ public class NMEAListener implements NmeaListener, LocationListener { //// 字段15:信噪比(00-99)dbHz // 字段16:校验值($与*之间的数异或后的值) - String tmplist[] = nmeastr.split(","); - int maxPageCount = 0; - int currentPage = 0; - int SatlitesCount = 0; - - try { - maxPageCount = Integer.valueOf(tmplist[1]); - } catch (Exception e) { - } - try { - currentPage = Integer.valueOf(tmplist[2]); - } catch (Exception e) { - } - try { - SatlitesCount = Integer.valueOf(tmplist[3]); - } catch (Exception e) { - } - if (maxPageCount > 0 && currentPage == 1) { - //第一页把数组初始化一遍。 - satindex = 0; - gps_status.satlite_numbss = SatlitesCount; - } - int satcount = (tmplist.length - 4) / 4; + String tmplist[] = nmeastr.split(","); + int maxPageCount = 0; + int currentPage = 0; + int SatlitesCount = 0; + + try { + maxPageCount = Integer.valueOf(tmplist[1]); + } catch (Exception e) { + } + try { + currentPage = Integer.valueOf(tmplist[2]); + } catch (Exception e) { + } + try { + SatlitesCount = Integer.valueOf(tmplist[3]); + } catch (Exception e) { + } + if (maxPageCount > 0 && currentPage == 1) { + //第一页把数组初始化一遍。 + satindex = 0; + gps_status.satlite_numbss = SatlitesCount; + } + int satcount = (tmplist.length - 4) / 4; // ICLogger.i("Nmea :"+nmeastr+" "+satcount); - runtime.getLocationInstance().set_adding_satlite_flag(true); - for (int i = 0; i < satcount; i++) { - satindex++; - String prn = tmplist[i * 4 + 4]; - String snr = tmplist[i * 4 + 4 + 3]; - if (snr.contains("*")) { - snr = snr.substring(0, snr.indexOf("*")); - } - if (snr.trim().isEmpty()) { - snr = "0"; - } + runtime.getLocationInstance().set_adding_satlite_flag(true); + for (int i = 0; i < satcount; i++) { + satindex++; + String prn = tmplist[i * 4 + 4]; + String snr = tmplist[i * 4 + 4 + 3]; + if (snr.contains("*")) { + snr = snr.substring(0, snr.indexOf("*")); + } + if (snr.trim().isEmpty()) { + snr = "0"; + } // ICLogger.i("Sat=" + satindex + ",prn=" + prn + ",snr=" + snr); - int intprn = 0; - try { - intprn = Integer.valueOf(prn); - } catch (Exception e) { - } - float floatsnr = 0; - try { - floatsnr = Float.valueOf(snr); - } catch (Exception e) { - } - if (floatsnr > 0) { - //排序取得最大3个SNR - get3MaxSnrSatellite(new ICLocation.GpsSatellitePriv(intprn, floatsnr)); - runtime.getLocationInstance().numSatelliteList.add(new ICLocation.GpsSatellitePriv(intprn, floatsnr)); - gps_status.numSatelliteList.add(new ICLocation.GpsSatellitePriv(intprn, floatsnr)); - } - } - - runtime.getLocationInstance().set_adding_satlite_flag(false); - - } else if (nmeastr.startsWith("$GPGGA,")||nmeastr.startsWith("$GNGGA,")) { + int intprn = 0; + try { + intprn = Integer.valueOf(prn); + } catch (Exception e) { + } + float floatsnr = 0; + try { + floatsnr = Float.valueOf(snr); + } catch (Exception e) { + } + if (floatsnr > 0) { + //排序取得最大3个SNR + get3MaxSnrSatellite(new ICLocation.GpsSatellitePriv(intprn, floatsnr)); + runtime.getLocationInstance().numSatelliteList.add(new ICLocation.GpsSatellitePriv(intprn, floatsnr)); + gps_status.numSatelliteList.add(new ICLocation.GpsSatellitePriv(intprn, floatsnr)); + } + } + + runtime.getLocationInstance().set_adding_satlite_flag(false); + + } else if (nmeastr.startsWith("$GPGGA,") || nmeastr.startsWith("$GNGGA,")) { // GPGGA编辑 //(定位信息) @@ -353,84 +338,85 @@ public class NMEAListener implements NmeaListener, LocationListener { // 字段14:差分站ID号0000 - 1023(前导位数不足则补0,如果不是差分定位将为空) // 字段15:校验值($与*之间的数异或后的值) - String tmplist[] = nmeastr.split(","); - String utctime = tmplist[1]; - String Lat = tmplist[2]; - String lon = tmplist[4]; - String latname= tmplist[3]; - String lonname=tmplist[5]; - String fixed = tmplist[6]; - String usedStarts = tmplist[7]; - String hdop = tmplist[8]; - - - if ((fixed.trim().equals("1")) || (fixed.trim().equals("2")) || (fixed.trim().equals("6"))) { - - - // 转换GPS坐标为度,以便在各种应用中可以方便查找。 - try { - latitude = Double.valueOf(Lat); - longitude = Double.valueOf(lon); - } catch (Exception e){} - // 转换单位,从分转换到度 - - double intdu = (int) (longitude / 100f); //小数转换到分为单位 - double du = (longitude - intdu * 100) / 60f; - double last = intdu + du; - longitude = last; - intdu = (int) (latitude / 100f); //小数转换到分为单位 - du = (latitude - intdu * 100) / 60f; - last = intdu + du; - latitude = last; - - // 经纬度 保留4位小数点 - DecimalFormat df = new DecimalFormat("#.0000000"); - String strLatitude = df.format(latitude); - String strLongitude = df.format(longitude); - - //定位 - StringBuilder sb = new StringBuilder(); - sb.append("GPGGA, location time= " + TimeUtil.getLocalTime() + ", FixedCount=" + locationFixedCount + ", GPSTime=" + utctime + ", Lat("+latname+")=" + Lat + " (" + strLatitude + "), Lon("+lonname+")=" + lon + " (" + strLongitude + "), fixed=" + fixed + ", hdop=" + hdop + ", usedStarts=" + usedStarts); - ICLogger.i(sb.toString()); - if (Config.LOG_TOFILE) - ICLogger.logToFile( "GPS", sb.toString()); - //定位了, - if (hdop != null && hdop.trim().length() > 0 && Float.valueOf(hdop) < ICLocation.MAX_HDOP) { - locationFixedCount++; - } else { - ICLogger.i("HDOP is larger than " + ICLocation.MAX_HDOP + " , skip this location!"); - if (Config.LOG_TOFILE) - ICLogger.logToFile( "GPS", "HDOP is larger than " + ICLocation.MAX_HDOP + " , skip this location!"); - } - if (locationFixedCount > MaxFixedTimes) { + String tmplist[] = nmeastr.split(","); + String utctime = tmplist[1]; + String Lat = tmplist[2]; + String lon = tmplist[4]; + String latname = tmplist[3]; + String lonname = tmplist[5]; + String fixed = tmplist[6]; + String usedStarts = tmplist[7]; + String hdop = tmplist[8]; + + + if ((fixed.trim().equals("1")) || (fixed.trim().equals("2")) || (fixed.trim().equals("6"))) { + + + // 转换GPS坐标为度,以便在各种应用中可以方便查找。 + try { + latitude = Double.valueOf(Lat); + longitude = Double.valueOf(lon); + } catch (Exception e) { + } + // 转换单位,从分转换到度 + + double intdu = (int) (longitude / 100f); //小数转换到分为单位 + double du = (longitude - intdu * 100) / 60f; + double last = intdu + du; + longitude = last; + intdu = (int) (latitude / 100f); //小数转换到分为单位 + du = (latitude - intdu * 100) / 60f; + last = intdu + du; + latitude = last; + + // 经纬度 保留4位小数点 + DecimalFormat df = new DecimalFormat("#.0000000"); + String strLatitude = df.format(latitude); + String strLongitude = df.format(longitude); + + //定位 + StringBuilder sb = new StringBuilder(); + sb.append("GPGGA, location time= " + TimeUtil.getLocalTime() + ", FixedCount=" + locationFixedCount + ", GPSTime=" + utctime + ", Lat(" + latname + ")=" + Lat + " (" + strLatitude + "), Lon(" + lonname + ")=" + lon + " (" + strLongitude + "), fixed=" + fixed + ", hdop=" + hdop + ", usedStarts=" + usedStarts); + ICLogger.i(sb.toString()); + if (Config.LOG_TOFILE) + ICLogger.logToFile("GPS", sb.toString()); + //定位了, + if (hdop != null && hdop.trim().length() > 0 && Float.valueOf(hdop) < ICLocation.MAX_HDOP) { + locationFixedCount++; + } else { + ICLogger.i("HDOP is larger than " + ICLocation.MAX_HDOP + " , skip this location!"); + if (Config.LOG_TOFILE) + ICLogger.logToFile("GPS", "HDOP is larger than " + ICLocation.MAX_HDOP + " , skip this location!"); + } + if (locationFixedCount > MaxFixedTimes) { /* 只有当前GPS已经定位,且location不为空才给 runtime赋值GPS坐标。 延迟MaxFixedTimes秒后才设置runtime的定位标志,以便稳定坐标值。 */ - runtime.getLocationInstance().setLocation(Lat, lon); - runtime.getLocationInstance().setLocationGPS(strLatitude, strLongitude); - runtime.getLocationInstance().setLocationlatlonName(latname,lonname); - runtime.getLocationInstance().setUsedStarts(Integer.valueOf(usedStarts.trim())); - runtime.getLocationInstance().setHod(Float.valueOf(hdop.trim())); - runtime.getLocationInstance().setLocationStat(ICLocation.LOCATION_STAT.LOCATION_FIXED); - ICLogger.i("定位" + locationFixedCount + "次 > " + MaxFixedTimes + ", set LOCATION_FIXED "); - if (Config.LOG_TOFILE) - ICLogger.logToFile("GPS", "定位" + locationFixedCount + "次 > " + MaxFixedTimes + ", set LOCATION_FIXED "); - if (!noStop) { - stopListen(); - } - } - gps_status.locating_status = 1; //fixed - } else { - gps_status.locating_status = 0; //notfixed - } - try { - gps_status.hdop = Float.valueOf(hdop.trim()); - gps_status.used_gps_numbs = Integer.valueOf(usedStarts.trim()); - } catch (Exception e) { - } - - } else if (nmeastr.startsWith("$GPGSA,")||nmeastr.startsWith("$GNGSA,")) { + runtime.getLocationInstance().setLocation(Lat, lon); + runtime.getLocationInstance().setLocationGPS(strLatitude, strLongitude); + runtime.getLocationInstance().setLocationlatlonName(latname, lonname); + runtime.getLocationInstance().setUsedStarts(Integer.valueOf(usedStarts.trim())); + runtime.getLocationInstance().setHod(Float.valueOf(hdop.trim())); + runtime.getLocationInstance().setLocationStat(ICLocation.LOCATION_STAT.LOCATION_FIXED); + ICLogger.i("定位" + locationFixedCount + "次 > " + MaxFixedTimes + ", set LOCATION_FIXED "); + if (Config.LOG_TOFILE) + ICLogger.logToFile("GPS", "定位" + locationFixedCount + "次 > " + MaxFixedTimes + ", set LOCATION_FIXED "); + if (!noStop) { + stopListen(); + } + } + gps_status.locating_status = 1; //fixed + } else { + gps_status.locating_status = 0; //notfixed + } + try { + gps_status.hdop = Float.valueOf(hdop.trim()); + gps_status.used_gps_numbs = Integer.valueOf(usedStarts.trim()); + } catch (Exception e) { + } + + } else if (nmeastr.startsWith("$GPGSA,") || nmeastr.startsWith("$GNGSA,")) { // GPGSA编辑 //( 当前卫星信息) @@ -463,91 +449,91 @@ public class NMEAListener implements NmeaListener, LocationListener { // //定位 // ICLogger.i("GPGSA fixed="+fixed+",hdop="+hdop); // } + } } - } - public void onProviderDisabled(String paramString) { - } + public void onProviderDisabled(String paramString) { + } - public void onProviderEnabled(String paramString) { - } + public void onProviderEnabled(String paramString) { + } - @Override - public void onLocationChanged(Location location) { + @Override + public void onLocationChanged(Location location) { - } + } - public void onStatusChanged(String paramString, int paramInt, Bundle paramBundle) { - } + public void onStatusChanged(String paramString, int paramInt, Bundle paramBundle) { + } - public boolean gpsColdStart() { + public boolean gpsColdStart() { //冷启动 - Bundle bundle = null; - locationManager.sendExtraCommand("gps", "force_xtra_injection", bundle); //command - locationManager.sendExtraCommand("gps", "force_time_injection", bundle); - boolean b1 = locationManager.sendExtraCommand("gps", "delete_aiding_data", bundle); - return b1; + Bundle bundle = null; + locationManager.sendExtraCommand("gps", "force_xtra_injection", bundle); //command + locationManager.sendExtraCommand("gps", "force_time_injection", bundle); + boolean b1 = locationManager.sendExtraCommand("gps", "delete_aiding_data", bundle); + return b1; - } + } - public boolean gpsWormStart() { + public boolean gpsWormStart() { //温启动 - Bundle bundleWarm = new Bundle(); - bundleWarm.putBoolean("ephemeris", true); - locationManager.sendExtraCommand("gps", "force_xtra_injection", bundleWarm); //command - locationManager.sendExtraCommand("gps", "force_time_injection", bundleWarm); - boolean b2 = locationManager.sendExtraCommand("gps", "delete_aiding_data", bundleWarm); - return b2; - } - - public boolean gpsHotStart() { + Bundle bundleWarm = new Bundle(); + bundleWarm.putBoolean("ephemeris", true); + locationManager.sendExtraCommand("gps", "force_xtra_injection", bundleWarm); //command + locationManager.sendExtraCommand("gps", "force_time_injection", bundleWarm); + boolean b2 = locationManager.sendExtraCommand("gps", "delete_aiding_data", bundleWarm); + return b2; + } + + public boolean gpsHotStart() { //热启动 - Bundle bundleHot = new Bundle(); - bundleHot.putBoolean("almanac", true); - locationManager.sendExtraCommand("gps", "force_xtra_injection", bundleHot); //command - locationManager.sendExtraCommand("gps", "force_time_injection", bundleHot); - boolean b3 = locationManager.sendExtraCommand("gps", "delete_aiding_data", bundleHot); - return b3; - } + Bundle bundleHot = new Bundle(); + bundleHot.putBoolean("almanac", true); + locationManager.sendExtraCommand("gps", "force_xtra_injection", bundleHot); //command + locationManager.sendExtraCommand("gps", "force_time_injection", bundleHot); + boolean b3 = locationManager.sendExtraCommand("gps", "delete_aiding_data", bundleHot); + return b3; + } - private final int MSG_WHAT_GPS_FIXED = 300; - private final int MSG_WHAT_GPS_TIMEOUT = 100; - private final int MSG_WHAT_GPS_NOSTAR = 200; - private final int MSG_WHAT_GPS_FIXED_NO_STOP = 400; + private final int MSG_WHAT_GPS_FIXED = 300; + private final int MSG_WHAT_GPS_TIMEOUT = 100; + private final int MSG_WHAT_GPS_NOSTAR = 200; + private final int MSG_WHAT_GPS_FIXED_NO_STOP = 400; - Handler temHandler; + Handler temHandler; - private void get3MaxSnrSatellite(ICLocation.GpsSatellitePriv gst) { + private void get3MaxSnrSatellite(ICLocation.GpsSatellitePriv gst) { - float snr = gst.getSnr(); - for (int k = 0; k < runtime.getLocationInstance().max3Satellite.size(); k++) { - if (runtime.getLocationInstance().max3Satellite.get(k).getPrn() == gst.getPrn()) - runtime.getLocationInstance().max3Satellite.remove(k); - } - runtime.getLocationInstance().max3Satellite.add(gst);//先添加进来。 - - //从大到小排序 - for (int i = 0; i < runtime.getLocationInstance().max3Satellite.size(); i++) { - for (int j = i; j < runtime.getLocationInstance().max3Satellite.size(); j++) { - if (runtime.getLocationInstance().max3Satellite.get(i).getSnr() < runtime.getLocationInstance().max3Satellite.get(j).getSnr()) { - ICLocation.GpsSatellitePriv ts = runtime.getLocationInstance().max3Satellite.get(j); - runtime.getLocationInstance().max3Satellite.remove(j); - runtime.getLocationInstance().max3Satellite.add(i, ts);//大的放前面 + float snr = gst.getSnr(); + for (int k = 0; k < runtime.getLocationInstance().max3Satellite.size(); k++) { + if (runtime.getLocationInstance().max3Satellite.get(k).getPrn() == gst.getPrn()) + runtime.getLocationInstance().max3Satellite.remove(k); + } + runtime.getLocationInstance().max3Satellite.add(gst);//先添加进来。 + + //从大到小排序 + for (int i = 0; i < runtime.getLocationInstance().max3Satellite.size(); i++) { + for (int j = i; j < runtime.getLocationInstance().max3Satellite.size(); j++) { + if (runtime.getLocationInstance().max3Satellite.get(i).getSnr() < runtime.getLocationInstance().max3Satellite.get(j).getSnr()) { + ICLocation.GpsSatellitePriv ts = runtime.getLocationInstance().max3Satellite.get(j); + runtime.getLocationInstance().max3Satellite.remove(j); + runtime.getLocationInstance().max3Satellite.add(i, ts);//大的放前面 + } + } + } + if (runtime.getLocationInstance().max3Satellite.size() > 5) { //超过三个,谁小就删掉 + runtime.getLocationInstance().max3Satellite.remove(5); } - } - } - if (runtime.getLocationInstance().max3Satellite.size() > 5) { //超过三个,谁小就删掉 - runtime.getLocationInstance().max3Satellite.remove(5); - } - } + } - //停止定位 - private void stop(int id) { + //停止定位 + private void stop(int id) { - // 经纬度 保留6位小数点 + // 经纬度 保留6位小数点 // DecimalFormat df = new DecimalFormat("#.000000"); // String strLatitude = df.format(latitude); // String strLongitude = df.format(longitude); @@ -555,86 +541,88 @@ public class NMEAListener implements NmeaListener, LocationListener { // runtime.setLongitude(strLongitude); // // ICLogger.i("Location " +runtime.getLocationInstance().getLocationStat().name()); - //发送停止消息 - temHandler.sendEmptyMessage(id); - } + //发送停止消息 + temHandler.sendEmptyMessage(id); + } - boolean isFrist = true; + boolean isFrist = true; - public boolean startListen() { + public boolean startListen() { - if (this.listening == false) { - Settings.Secure.setLocationProviderEnabled(runtime.getContextProxy().getResolver(), GPS_PROVIDER, true); + if (this.listening == false) { + Settings.Secure.setLocationProviderEnabled(runtime.getContextProxy().getResolver(), GPS_PROVIDER, true); - runtime.getLocationInstance().setLocationStat(ICLocation.LOCATION_STAT.LOCATION_OPEN); + runtime.getLocationInstance().setLocationStat(ICLocation.LOCATION_STAT.LOCATION_OPEN); - Criteria criteria = new Criteria(); - criteria.setAccuracy(Criteria.ACCURACY_FINE);// 设置为最大精度 - criteria.setAltitudeRequired(false);//不要求海拔信息 - criteria.setBearingRequired(false);// 不要求方位信息 - criteria.setCostAllowed(true);//是否允许付费 - criteria.setPowerRequirement(Criteria.POWER_LOW);// 对电量的要求 + Criteria criteria = new Criteria(); + criteria.setAccuracy(Criteria.ACCURACY_FINE);// 设置为最大精度 + criteria.setAltitudeRequired(false);//不要求海拔信息 + criteria.setBearingRequired(false);// 不要求方位信息 + criteria.setCostAllowed(true);//是否允许付费 + criteria.setPowerRequirement(Criteria.POWER_LOW);// 对电量的要求 - String provider = locationManager.getBestProvider(criteria, true); + String provider = locationManager.getBestProvider(criteria, true); - ICLogger.i("GPS StartListen with Provider " + provider); + ICLogger.i("GPS StartListen with Provider " + provider); - if (Config.LOG_TOFILE) ICLogger.logToFile("GPS", "GPS StartListen with Provider " + provider); + if (Config.LOG_TOFILE) + ICLogger.logToFile("GPS", "GPS StartListen with Provider " + provider); - this.locationManager.requestLocationUpdates(provider, 0L, 0.0F, this); + this.locationManager.requestLocationUpdates(provider, 0L, 0.0F, this); - this.listening = true; - noSignalCount = 0; - longitude = 0; - latitude = 0; - searchCout = 0; - locationFixedCount = 0; - gpsMode = GPS_CURRENT_STATUS.GPS_LISTENING; + this.listening = true; + noSignalCount = 0; + longitude = 0; + latitude = 0; + searchCout = 0; + locationFixedCount = 0; + gpsMode = GPS_CURRENT_STATUS.GPS_LISTENING; // locationManager.addGpsStatusListener(statusListener);//监听搜星状态 - locationManager.addNmeaListener(this); //监听NMEA 协议数据。 + locationManager.addNmeaListener(this); //监听NMEA 协议数据。 + + //做个热启动 + return true;//gpsHotStart(); + } else { + ICLogger.i(" location listening, skip !"); - //做个热启动 - return true;//gpsHotStart(); - } else { - ICLogger.i(" location listening, skip !"); + runtime.getLocationInstance().setLocationStat(ICLocation.LOCATION_STAT.LOCATION_SEARCHING); - runtime.getLocationInstance().setLocationStat(ICLocation.LOCATION_STAT.LOCATION_SEARCHING); + if (Config.LOG_TOFILE) ICLogger.logToFile("GPS", " location listening, skip !"); - if (Config.LOG_TOFILE) ICLogger.logToFile("GPS", " location listening, skip !"); + return true; + } + } - return true; + public boolean isGpsOpening() { + return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); } - } - public boolean isGpsOpening() { - return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); - } - - public void stopListen() { - this.locationManager.removeNmeaListener(this); - this.locationManager.removeUpdates(this); - ICLogger.i("stopListen 定位 "); - if (Config.LOG_TOFILE) ICLogger.logToFile("GPS", "stopListen 定位 "); - if (listening==true) { - this.listening = false; - Settings.Secure.setLocationProviderEnabled(runtime.getContextProxy().getResolver(), GPS_PROVIDER, false); - ICLogger.i("stopListen 定位 done "); - }else{ - if (isGpsOpening()){ - Settings.Secure.setLocationProviderEnabled(runtime.getContextProxy().getResolver(), GPS_PROVIDER, false); - ICLogger.i("flag stoped but gps still opening , stop GPS!"); - }else { - ICLogger.i("stopListen 定位 already stop skip stopListen"); - } + + public void stopListen() { + this.locationManager.removeNmeaListener(this); + this.locationManager.removeUpdates(this); + ICLogger.i("stopListen 定位 "); + if (Config.LOG_TOFILE) ICLogger.logToFile("GPS", "stopListen 定位 "); + if (listening == true) { + this.listening = false; + Settings.Secure.setLocationProviderEnabled(runtime.getContextProxy().getResolver(), GPS_PROVIDER, false); + ICLogger.i("stopListen 定位 done "); + } else { + if (isGpsOpening()) { + Settings.Secure.setLocationProviderEnabled(runtime.getContextProxy().getResolver(), GPS_PROVIDER, false); + ICLogger.i("flag stoped but gps still opening , stop GPS!"); + } else { + ICLogger.i("stopListen 定位 already stop skip stopListen"); + } + } + } + + public enum GPS_CURRENT_STATUS { + GPS_LISTENING, + GPS_FIXED, + GPS_NOTFIXED, + GPS_TIMEOUT, + GPS_NOSINGAL, } - } - - public enum GPS_CURRENT_STATUS { - GPS_LISTENING, - GPS_FIXED, - GPS_NOTFIXED, - GPS_TIMEOUT, - GPS_NOSINGAL, - } } diff --git a/app/src/main/java/com/enqualcomm/support/adapter/BTHelper.java b/app/src/main/java/com/enqualcomm/support/adapter/BTHelper.java index e54eaa9f..23a26543 100644 --- a/app/src/main/java/com/enqualcomm/support/adapter/BTHelper.java +++ b/app/src/main/java/com/enqualcomm/support/adapter/BTHelper.java @@ -100,9 +100,8 @@ public class BTHelper { if (lecallback == null) lecallback = new BLeScanCallback(); - if (mHandler == null) - { - mHandler = new Handler(EventLooperHandlerThread.makeLooper(BTHelper.class.getSimpleName())); + if (mHandler == null) { + mHandler = new Handler(EventLooperHandlerThread.getInstance().makeLooper()); } } @@ -146,9 +145,8 @@ public class BTHelper { ICLogger.i("BT startLeScan"); if (lecallback == null) lecallback = new BLeScanCallback(); - if (mHandler == null) - { - mHandler = new Handler(EventLooperHandlerThread.makeLooper(BTHelper.class.getSimpleName())); + if (mHandler == null) { + mHandler = new Handler(EventLooperHandlerThread.getInstance().makeLooper()); } mBtAdapter.startLeScan(lecallback); mHandler.postDelayed(mRunable_stopBleScan, BLETimeoutForOneScan * 1000); @@ -287,7 +285,7 @@ public class BTHelper { @Override public void run() { - ICLogger.i("BT stopLeScan "+Thread.currentThread().getName()); + ICLogger.i("BT stopLeScan " + Thread.currentThread().getName()); mBtAdapter.stopLeScan(lecallback); //开始扫描前是关闭的,就关闭它 // if(!enabledBeforScan) diff --git a/app/src/main/java/com/enqualcomm/support/bean/EventLooperHandlerThread.java b/app/src/main/java/com/enqualcomm/support/bean/EventLooperHandlerThread.java index 7c62275c..af04b728 100644 --- a/app/src/main/java/com/enqualcomm/support/bean/EventLooperHandlerThread.java +++ b/app/src/main/java/com/enqualcomm/support/bean/EventLooperHandlerThread.java @@ -1,26 +1,31 @@ package com.enqualcomm.support.bean; +import android.os.HandlerThread; import android.os.Looper; -import com.enqualcomm.support.utils.ICLogger; +public class EventLooperHandlerThread { + private final Looper looper; -public class EventLooperHandlerThread extends Thread { - public Looper looper; - - public EventLooperHandlerThread(String name){ - super("Thread_"+name); + private EventLooperHandlerThread() { + HandlerThread handlerThread = new HandlerThread("ic:share-handler-thread"); + handlerThread.start(); + looper = handlerThread.getLooper(); } - @Override - public void run() { - Looper.prepare();//创建与当前线程相关的Looper - looper = Looper.myLooper();//获取当前线程的Looper对象 - ICLogger.i("EventLooperHandlerThread run"); - Looper.loop();//调用此方法,消息才会循环处理 + + private static EventLooperHandlerThread sInstance = null; + + public static EventLooperHandlerThread getInstance() { + if (sInstance == null) { + synchronized (EventLooperHandlerThread.class) { + if (sInstance == null) { + sInstance = new EventLooperHandlerThread(); + } + } + } + return sInstance; } - public static Looper makeLooper(String name){ - EventLooperHandlerThread eventLooperHandlerThread=new EventLooperHandlerThread(name); - eventLooperHandlerThread.start(); - return eventLooperHandlerThread.looper; + public Looper makeLooper() { + return looper; } } diff --git a/app/src/main/java/com/enqualcomm/support/service/AntiMonitorService.java b/app/src/main/java/com/enqualcomm/support/service/AntiMonitorService.java index 427bd5ec..cc84dded 100644 --- a/app/src/main/java/com/enqualcomm/support/service/AntiMonitorService.java +++ b/app/src/main/java/com/enqualcomm/support/service/AntiMonitorService.java @@ -560,7 +560,7 @@ public class AntiMonitorService extends AbstractInvokeHandlerService { mRuntime = paramRuntime; mContext = mRuntime.getContextProxy().context; mConnection = paramConnection; - if (Config.UsePolingCheckWeared == false) { + if (!Config.UsePolingCheckWeared) { ICLogger.i("启用中断式佩戴检测!"); startSensor(); } else { @@ -570,7 +570,7 @@ public class AntiMonitorService extends AbstractInvokeHandlerService { @Override public void onDetach(Connection paramConnection, Runtime paramRuntime) { - if (Config.UsePolingCheckWeared == false) { + if (!Config.UsePolingCheckWeared) { mSensorManager.unregisterListener(mSensorEventListener); } } diff --git a/app/src/main/java/com/enqualcomm/support/service/Deliver.java b/app/src/main/java/com/enqualcomm/support/service/Deliver.java index 425f41ca..316e998a 100644 --- a/app/src/main/java/com/enqualcomm/support/service/Deliver.java +++ b/app/src/main/java/com/enqualcomm/support/service/Deliver.java @@ -10,7 +10,7 @@ import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import android.os.Build; import android.os.Handler; -import android.os.Message; +import android.os.HandlerThread; import android.os.Parcelable; import android.os.PowerManager; import android.os.SystemClock; @@ -19,29 +19,24 @@ import com.enqualcomm.support.Config; import com.enqualcomm.support.Constants; import com.enqualcomm.support.CoreService; import com.enqualcomm.support.R; -import com.enqualcomm.support.adapter.BTHelper; -import com.enqualcomm.support.bean.EventLooperHandlerThread; -import com.enqualcomm.support.bean.VoiceContent; -import com.enqualcomm.support.utils.DBHelper; -import com.enqualcomm.support.utils.TemperatureUtil; -import com.enqualcomm.support.utils.TimeUtil; -import com.ic.protocols.protocolAPIHelper; import com.enqualcomm.support.bean.Contact; +import com.enqualcomm.support.bean.Runtime; import com.enqualcomm.support.bean.StringMessage; +import com.enqualcomm.support.bean.VoiceContent; import com.enqualcomm.support.bean.voicePacket; import com.enqualcomm.support.service.base.AbstractConnectionService; import com.enqualcomm.support.utils.Connection; -import com.enqualcomm.support.bean.Runtime; import com.enqualcomm.support.utils.FileCache; import com.enqualcomm.support.utils.ICLogger; import com.enqualcomm.support.utils.NettyConnection; -import com.enqualcomm.support.utils.ServiceUtil; import com.enqualcomm.support.utils.SharPreferenceUtil; import com.enqualcomm.support.utils.SimSignalUtil; +import com.enqualcomm.support.utils.TemperatureUtil; +import com.enqualcomm.support.utils.TimeUtil; import com.enqualcomm.support.utils.Util; +import com.ic.protocols.protocolAPIHelper; import java.util.concurrent.LinkedBlockingDeque; -import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.ReentrantLock; @@ -55,78 +50,81 @@ import static com.enqualcomm.support.bean.Content.CONTACT_CATEGORY_GROUP; * 负责发送除了login,心跳之外的所有指令 */ public class Deliver extends AbstractConnectionService { - private static final String RECEIVE_WAKE_LOCKTAG = "ReceiveWakelockTag"; - - private static PowerManager.WakeLock WifiListWakeLock; - - public static boolean haveSendH42 = false; - - private static int isAppSetWifi = 0; - - private static boolean sendloopruning=false; - - - private static ReentrantLock mLock = new ReentrantLock(); - private static ReentrantLock lock = new ReentrantLock(); - private static Condition mCondition = mLock.newCondition(); - - public static LinkedBlockingDeque queue = new LinkedBlockingDeque(200); - - private static FileCache fileCache; - private static Connection connection; - - public static boolean is_active_location = false; - - private static PowerManager.WakeLock ReceiveWakeLock; - - private Handler delayHandler; - - private Runnable delayTh; - - private Connection mConnection; - - private ConWifiReceiver mMyWifiReceiver; - - private static Runtime mRuntime; - - private static boolean wakeLockWifiList = false; - - private static boolean wakeLockWifiSet = false; - - private static boolean wifiEnabled; - - public static Runnable delaySendMSG; - private static Handler mSendMSGHandler; - - static { - mSendMSGHandler = new Handler(EventLooperHandlerThread.makeLooper(Deliver.class.getSimpleName())); - delaySendMSG = new Runnable() { - @Override - public void run() { - sendloopruning=true; - if (getAndSendMsgFromQueue()==true){ - //数据发送成功,则5秒后进行下一轮发送(while 循环用sleep会很占资源造成死锁 - mSendMSGHandler.postDelayed(delaySendMSG,5000L); - }else{ - //没有数据可以发送,则退出sendloop - sendloopruning=false; - } - } - }; - } - public Deliver(Connection paramNettyConnection, Runtime paramRuntime) { - connection = paramNettyConnection; - mRuntime = paramRuntime; - //把queue 保存在磁盘中的缓存文件 - //此文件只缓存 除了 登录指令AP00,心跳AP03以及voice 分包指令以外的需要上传的指令。初步规划为 定位AP01和心率/血压 APHT - fileCache = new FileCache(paramRuntime.getFileDir()); - } - - private static boolean checkNetwork(){ - boolean ret=true; - boolean dateConnectionLinked=SimSignalUtil.checkNet(mRuntime.getContextProxy().context); - - if (dateConnectionLinked) { + private static final String RECEIVE_WAKE_LOCKTAG = "ReceiveWakelockTag"; + + private static PowerManager.WakeLock WifiListWakeLock; + + public static boolean haveSendH42 = false; + + private static int isAppSetWifi = 0; + + private static boolean sendloopruning = false; + + + private static ReentrantLock mLock = new ReentrantLock(); + private static ReentrantLock lock = new ReentrantLock(); + private static Condition mCondition = mLock.newCondition(); + + public static LinkedBlockingDeque queue = new LinkedBlockingDeque(200); + + private static FileCache fileCache; + private static Connection connection; + + public static boolean is_active_location = false; + + private static PowerManager.WakeLock ReceiveWakeLock; + + private Handler delayHandler; + + private Runnable delayTh; + + private Connection mConnection; + + private ConWifiReceiver mMyWifiReceiver; + + private static Runtime mRuntime; + + private static boolean wakeLockWifiList = false; + + private static boolean wakeLockWifiSet = false; + + private static boolean wifiEnabled; + + public static Runnable delaySendMSG; + private static final Handler mSendMSGHandler; + + static { + HandlerThread handlerThread = new HandlerThread("ic:deliver-handlerThread"); + handlerThread.start(); + mSendMSGHandler = new Handler(handlerThread.getLooper()); + delaySendMSG = new Runnable() { + @Override + public void run() { + sendloopruning = true; + if (getAndSendMsgFromQueue()) { + //数据发送成功,则5秒后进行下一轮发送(while 循环用sleep会很占资源造成死锁 + mSendMSGHandler.postDelayed(delaySendMSG, 5000L); + } else { + //没有数据可以发送,则退出sendLoop + sendloopruning = false; + } + } + }; + } + + public Deliver(Connection paramNettyConnection, Runtime paramRuntime) { + connection = paramNettyConnection; + mRuntime = paramRuntime; + //把queue 保存在磁盘中的缓存文件 + //此文件只缓存 除了 登录指令AP00,心跳AP03以及voice 分包指令以外的需要上传的指令。初步规划为 定位AP01和心率/血压 APHT + fileCache = new FileCache(paramRuntime.getFileDir()); + } + + private static boolean checkNetwork() { + boolean ret = true; + boolean dateConnectionLinked = SimSignalUtil.checkNet(mRuntime.getContextProxy().context); + + if (dateConnectionLinked) { // int signal = mRuntime.getSignalStrength(); // int networkType = SimSignalUtil.getInstance((mRuntime.getContextProxy()).context).getNetworkType(); // if (signal + 110 < getMinSignalStrength(networkType)) { @@ -134,704 +132,709 @@ public class Deliver extends AbstractConnectionService { // //如果信号不好,把msg放回去 // ret = false; // } - if (connection.isServerConnected() == false || !mRuntime.isServerProtocolConnected()) { - ICLogger.i("服务器无法访问,或者协议状态失常"); - ret = false; - } - }else{ - ICLogger.i("数据网络没有连接"); - ret=false; + if (connection.isServerConnected() == false || !mRuntime.isServerProtocolConnected()) { + ICLogger.i("服务器无法访问,或者协议状态失常"); + ret = false; + } + } else { + ICLogger.i("数据网络没有连接"); + ret = false; + } + return ret; } - return ret; - } - public static void triggerSendThread() { - - if(sendloopruning==false) { - ICLogger.i("triggerSendThread !"); - mSendMSGHandler.post(delaySendMSG); - }else{ - ICLogger.i("triggerSendThread running skip !"); + public static void triggerSendThread() { + if (!sendloopruning) { + ICLogger.i("triggerSendThread !"); + mSendMSGHandler.post(delaySendMSG); + } else { + ICLogger.i("triggerSendThread running skip !"); + } } -// delaySendMSG.run(); -// mSendMSGHandler.sendEmptyMessage(1); - } - private static int CheckCount=0; - private static boolean checkNeedServerResponse(StringMessage cmd){ - - boolean NeedCheckServerResponse; - if(cmd!=null && - Config.protocol_no==Config.PROTOCOL_FZD && - (protocolAPIHelper.isCmdStr(cmd).equals("UD") || protocolAPIHelper.isCmdStr(cmd).equals("UD2")) - ){ - NeedCheckServerResponse=false; - }else{ - NeedCheckServerResponse=true; - } - return NeedCheckServerResponse; - } - public static void dumpMessage(StringMessage msg){ - - StringBuilder sb = new StringBuilder("StringMessage "); - if (msg!=null) { - sb.append("index ").append(msg.getIndex()) - .append("\nDate ").append(msg.getDate()).append(msg.getTime()) - .append("\nflag ").append(msg.haveSent()) - .append("\ntopic ").append(msg.cmd()) - .append("\ncmd ").append(msg.isFromCache()).append("\n"); + private static int CheckCount = 0; + + private static boolean checkNeedServerResponse(StringMessage cmd) { + + boolean NeedCheckServerResponse; + if (cmd != null && + Config.protocol_no == Config.PROTOCOL_FZD && + (protocolAPIHelper.isCmdStr(cmd).equals("UD") || protocolAPIHelper.isCmdStr(cmd).equals("UD2")) + ) { + NeedCheckServerResponse = false; + } else { + NeedCheckServerResponse = true; + } + return NeedCheckServerResponse; } + + public static void dumpMessage(StringMessage msg) { + + StringBuilder sb = new StringBuilder("StringMessage "); + if (msg != null) { + sb.append("index ").append(msg.getIndex()) + .append("\nDate ").append(msg.getDate()).append(msg.getTime()) + .append("\nflag ").append(msg.haveSent()) + .append("\ntopic ").append(msg.cmd()) + .append("\ncmd ").append(msg.isFromCache()).append("\n"); + } // ICLogger.i(sb.toString()); - } - public static boolean getAndSendMsgFromQueue(){ - boolean ret=false; - if (mRuntime.getUseQueue()) { - ICLogger.i("queue locked "+mLock.isLocked()); - if(mLock.isLocked()) return false; - mLock.lock(); - try - { - String str; - //如果没有数据从缓存中尝试读取 - - //检查刚刚发送出去的包是否需要检查server response - - StringMessage msgWait=mRuntime.getDbHelper().queryWaitCMDRecord(); - dumpMessage(msgWait); + } - if(msgWait!=null) { - //如果需要,且没有服务器反馈 - //刚刚发送的包不为空,且检测次数小于3,则保留数据,进行下一次重试。 - //如果cmd有效,且尝试次数小于3, 没有收到反馈的情况下,可以重新插入queue进行下一次尝试! - ICLogger.i("checkSrvResponse " + CheckCount + " times for " + msgWait.cmd() + " " + msgWait.isFromCache() + " index " + msgWait.getIndex()); - if (msgWait.getIndex() >= 0) { - mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(), 0);//设置为未发送 - } - dumpMessage(msgWait); - CheckCount++; - //尝试次数大于5 ,可能是还没有发送过数据,或者超过重试次数,暂停提取queue中数据进,下次心跳再开始发送 - if (CheckCount > 5) { - ICLogger.i("checkSrvResponse CheckCount=" + CheckCount + " Timeout or cmd is null, skip "); - - //C5要的临时版本,去掉盲点续传。 - - if( Config.discard_cmd_after_retryfailed) { - if (msgWait.getIndex() >= 0) { - //有些协议需要对盲点数据进行修改(盲点数据可能是不同的topic),在此对数据修改后更新数据库 - mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(), 3);//设置为盲点不发送 - } + public static boolean getAndSendMsgFromQueue() { + boolean ret = false; + if (mRuntime.getUseQueue()) { + ICLogger.i("queue locked " + mLock.isLocked() + + " current Thread is == > " + + Thread.currentThread().getName()); + if (mLock.isLocked()) return false; + mLock.lock(); + try { + String str; + //如果没有数据从缓存中尝试读取 + + //检查刚刚发送出去的包是否需要检查server response + + StringMessage msgWait = mRuntime.getDbHelper().queryWaitCMDRecord(); dumpMessage(msgWait); - } - if (Config.LOG_TOFILE) - ICLogger.logToFile("APILog", "response timeout skip! "); - CheckCount = 0; - if (mLock != null && mLock.isLocked()) - mLock.unlock(); - return false; - } - } + if (msgWait != null) { + //如果需要,且没有服务器反馈 + //刚刚发送的包不为空,且检测次数小于3,则保留数据,进行下一次重试。 + //如果cmd有效,且尝试次数小于3, 没有收到反馈的情况下,可以重新插入queue进行下一次尝试! + ICLogger.i("checkSrvResponse " + CheckCount + " times for " + msgWait.cmd() + " " + msgWait.isFromCache() + " index " + msgWait.getIndex()); + if (msgWait.getIndex() >= 0) { + mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(), 0);//设置为未发送 + } + dumpMessage(msgWait); + CheckCount++; + //尝试次数大于5 ,可能是还没有发送过数据,或者超过重试次数,暂停提取queue中数据进,下次心跳再开始发送 + if (CheckCount > 5) { + ICLogger.i("checkSrvResponse CheckCount=" + CheckCount + " Timeout or cmd is null, skip "); + + //C5要的临时版本,去掉盲点续传。 + + if (Config.discard_cmd_after_retryfailed) { + if (msgWait.getIndex() >= 0) { + //有些协议需要对盲点数据进行修改(盲点数据可能是不同的topic),在此对数据修改后更新数据库 + mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(), 3);//设置为盲点不发送 + } + dumpMessage(msgWait); + } + if (Config.LOG_TOFILE) + ICLogger.logToFile("APILog", "response timeout skip! "); + CheckCount = 0; + if (mLock != null && mLock.isLocked()) + mLock.unlock(); + return false; + } - StringBuilder stringBuilder = new StringBuilder(); - if (checkNetwork()) { - StringMessage msgSent; - if( Config.discard_cmd_after_retryfailed) { - //如果可以丢弃数据,则直接查找没发送的数据即可 - msgSent = mRuntime.getDbHelper().queryNotSentCMDRecord(); - }else{ - //如果有盲点续传问题,不丢弃,则先查找丢掉的数据(重试失败的)先进行重传。 - msgSent = mRuntime.getDbHelper().queryDiscardCMDRecord(); - if(msgSent==null) { - //如果没有丢弃的数据,直接查找未发送的数据进行 - msgSent = mRuntime.getDbHelper().queryNotSentCMDRecord(); - } - } - dumpMessage(msgSent); - if (msgSent != null) { - String cmd = msgSent.isFromCache(); - String topic = msgSent.cmd(); - stringBuilder.append(topic); - stringBuilder.append(" "); - stringBuilder.append(cmd); - stringBuilder.append("\n"); - if (checkNetwork()) { - - connection.send(msgSent); - //如果需要CheckResponse - if (checkNeedServerResponse(msgSent)==true){ - ICLogger.i("checkSrvResponse "+topic+" "+cmd); - mRuntime.getDbHelper().updateCMDRecord(msgSent.getIndex(),1); //设置为等待响应 - }else{ - ICLogger.i("no need checkSrvResponse "+topic+" "+cmd); - mRuntime.getDbHelper().updateCMDRecord(msgSent.getIndex(),2); //直接设置为已经响应 } - ret=true; - } else { - //已经拿到的缓存,如果刚巧没有网络,就原路放回去 - ICLogger.i("网络不通,不能发送!"); - if (msgSent.getIndex() >= 0) { - mRuntime.getDbHelper().updateCMDRecord(msgSent.getIndex(), 0); //设置为未发送 + + StringBuilder stringBuilder = new StringBuilder(); + if (checkNetwork()) { + StringMessage msgSent; + if (Config.discard_cmd_after_retryfailed) { + //如果可以丢弃数据,则直接查找没发送的数据即可 + msgSent = mRuntime.getDbHelper().queryNotSentCMDRecord(); + } else { + //如果有盲点续传问题,不丢弃,则先查找丢掉的数据(重试失败的)先进行重传。 + msgSent = mRuntime.getDbHelper().queryDiscardCMDRecord(); + if (msgSent == null) { + //如果没有丢弃的数据,直接查找未发送的数据进行 + msgSent = mRuntime.getDbHelper().queryNotSentCMDRecord(); + } + } + dumpMessage(msgSent); + if (msgSent != null) { + String cmd = msgSent.isFromCache(); + String topic = msgSent.cmd(); + stringBuilder.append(topic); + stringBuilder.append(" "); + stringBuilder.append(cmd); + stringBuilder.append("\n"); + if (checkNetwork()) { + connection.send(msgSent); + //如果需要CheckResponse + if (checkNeedServerResponse(msgSent) == true) { + ICLogger.i("checkSrvResponse " + topic + " " + cmd); + mRuntime.getDbHelper().updateCMDRecord(msgSent.getIndex(), 1); //设置为等待响应 + } else { + ICLogger.i("no need checkSrvResponse " + topic + " " + cmd); + mRuntime.getDbHelper().updateCMDRecord(msgSent.getIndex(), 2); //直接设置为已经响应 + } + ret = true; + } else { + //已经拿到的缓存,如果刚巧没有网络,就原路放回去 + ICLogger.i("网络不通,不能发送!"); + if (msgSent.getIndex() >= 0) { + mRuntime.getDbHelper().updateCMDRecord(msgSent.getIndex(), 0); //设置为未发送 + } + dumpMessage(msgSent); + ret = false; + } + } else { + stringBuilder.append("no message!\n"); + } } - dumpMessage(msgSent); - ret=false; - } - }else{ - stringBuilder.append("no message!\n"); + str = stringBuilder.toString(); + ICLogger.i("send cached cmd : \n" + str); + //ICLogger.i("\n"+queue.size()+" left in Queue!"); + } finally { + if (mLock != null && mLock.isLocked()) + mLock.unlock(); } - } - str = stringBuilder.toString(); - ICLogger.i("send cached cmd : \n"+str); - //ICLogger.i("\n"+queue.size()+" left in Queue!"); - }finally { - if(mLock!=null && mLock.isLocked()) - mLock.unlock(); - } - } - return ret; - } - - public static void resetCMDReocrdsDB(){ - //正常应该只有一个在wait的记录,如果开机的时候,可能需要处理一下第一条记录 - StringMessage msgWait=mRuntime.getDbHelper().queryWaitCMDRecord(); - dumpMessage(msgWait); - if (msgWait!=null) { - if( Config.discard_cmd_after_retryfailed) { - while(msgWait!=null) { - //所有缓存数据都设置为放弃发送 - mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(), 3); - msgWait=mRuntime.getDbHelper().queryWaitCMDRecord(); } - }else { - mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(), 0);//设置为未发送 - } + return ret; } - } - public static void sendLocationMSG( String Msg){ - if(Msg==null ||Msg.trim().isEmpty()){ - ICLogger.i("命令为空,跳过发送!"); - return ; + public static void resetCMDReocrdsDB() { + //正常应该只有一个在wait的记录,如果开机的时候,可能需要处理一下第一条记录 + StringMessage msgWait = mRuntime.getDbHelper().queryWaitCMDRecord(); + dumpMessage(msgWait); + if (msgWait != null) { + if (Config.discard_cmd_after_retryfailed) { + while (msgWait != null) { + //所有缓存数据都设置为放弃发送 + mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(), 3); + msgWait = mRuntime.getDbHelper().queryWaitCMDRecord(); + } + } else { + mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(), 0);//设置为未发送 + } + } } - sendLocationMSG(protocolAPIHelper.genStringMessage("queue",Msg)); - } - public static void sendLocationMSG( StringMessage Msg){ - if(Msg==null ){ - ICLogger.i("命令为空,跳过发送!"); - return ; + + public static void sendLocationMSG(String Msg) { + + if (Msg == null || Msg.trim().isEmpty()) { + ICLogger.i("命令为空,跳过发送!"); + return; + } + sendLocationMSG(protocolAPIHelper.genStringMessage("queue", Msg)); } - if(mRuntime.getUseQueue()){ - long id=mRuntime.getDbHelper().insertCMDRecord(Msg); - Msg.setIndex((int)id); - dumpMessage(Msg); - triggerSendThread(); - }else { - if (checkNetwork()) { - ICLogger.i(" first send " + Msg); - connection.send(Msg); - } else { - ICLogger.i("offline skip " + Msg); - if (Config.LOG_TOFILE) ICLogger.logToFile( "APILog", " offlineskip " + Msg.cmd()+" "+Msg.isFromCache()); - } + public static void sendLocationMSG(StringMessage Msg) { + if (Msg == null) { + ICLogger.i("命令为空,跳过发送!"); + return; + } + + if (mRuntime.getUseQueue()) { + long id = mRuntime.getDbHelper().insertCMDRecord(Msg); + Msg.setIndex((int) id); + dumpMessage(Msg); + triggerSendThread(); + } else { + if (checkNetwork()) { + ICLogger.i(" first send " + Msg); + connection.send(Msg); + } else { + ICLogger.i("offline skip " + Msg); + if (Config.LOG_TOFILE) + ICLogger.logToFile("APILog", " offlineskip " + Msg.cmd() + " " + Msg.isFromCache()); + } + } } -} - private static int getMinSignalStrength(int paramInt) { - int b = -105; - switch (paramInt) { - case SimSignalUtil.IS_4G: - b = -100; - break; - case SimSignalUtil.IS_2G: - case SimSignalUtil.IS_3G: - default: - break; + + private static int getMinSignalStrength(int paramInt) { + int b = -105; + switch (paramInt) { + case SimSignalUtil.IS_4G: + b = -100; + break; + case SimSignalUtil.IS_2G: + case SimSignalUtil.IS_3G: + default: + break; + } + return b; } - return b; - } - - public static PowerManager.WakeLock WakeLockForGetWifiList(Runtime paramRuntime) { - PowerManager.WakeLock wakeLock = ((PowerManager)(paramRuntime.getContextProxy()).context.getSystemService(Context.POWER_SERVICE)).newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, Deliver.class.getSimpleName()); - wakeLock.acquire(120000L); - return wakeLock; - } - - private boolean isSilence(Runtime paramRuntime) { - return SharPreferenceUtil.getPrefBoolean((paramRuntime.getContextProxy()).context, "KEY_ISSILENCE", false); - } - - public static void releaseWakeLockForGetWifiList() { - if (WifiListWakeLock == null) { - ICLogger.i("WifiListWakeLock 没有加锁"); - return; - } - if (WifiListWakeLock.isHeld()) { - WifiListWakeLock.release(); - WifiListWakeLock = null; - } - } - - public PowerManager.WakeLock getWakeLock() { - PowerManager.WakeLock wakeLock = ((PowerManager)(this.mRuntime.getContextProxy()).context.getSystemService(Context.POWER_SERVICE)).newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, Deliver.class.getSimpleName()); - wakeLock.acquire(40000L); - return wakeLock; - } - - public void onAlarmClock(Connection paramConnection, Runtime paramRuntime) {} - - public void onAttach(Connection paramConnection, Runtime paramRuntime) {} - - @Override - public boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime, String ErrorMsg) { - return false; } - - public boolean onConnectionOpen(Connection paramConnection, Runtime paramRuntime) { return false; } - - public void onDetach(Connection paramConnection, Runtime paramRuntime) {} - - public boolean onReceive(StringMessage paramStringMessage, Connection paramConnection, final Runtime paramRuntime) { - this.mConnection = paramConnection; - this.mRuntime = paramRuntime; - String cmd = paramStringMessage.cmd(); - if(Config.protocol_no==Config.PROTOCOL_MQTT) - { - cmd=protocolAPIHelper.isCmdStr(paramStringMessage); + + public static PowerManager.WakeLock WakeLockForGetWifiList(Runtime paramRuntime) { + PowerManager.WakeLock wakeLock = ((PowerManager) (paramRuntime.getContextProxy()).context.getSystemService(Context.POWER_SERVICE)).newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, Deliver.class.getSimpleName()); + wakeLock.acquire(120000L); + return wakeLock; } - //如果需要检测是否响应。 - StringMessage msgWait=mRuntime.getDbHelper().queryWaitCMDRecord(); - dumpMessage(msgWait); - if(msgWait!=null) { - ICLogger.i("====== checkSrvResponse cmd " + cmd + " msg " + protocolAPIHelper.isCmdStr(msgWait)); - if (cmd.equals(protocolAPIHelper.isCmdStr(msgWait))) { - ICLogger.i("checkSrvResponse " + cmd + " " + protocolAPIHelper.isCmdStr(msgWait) + " is responsed!"); - mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(), 2);//设置为已读 - CheckCount = 0; - } + + private boolean isSilence(Runtime paramRuntime) { + return SharPreferenceUtil.getPrefBoolean((paramRuntime.getContextProxy()).context, "KEY_ISSILENCE", false); } - ICLogger.i("Deliver receive cmd " + paramStringMessage.cmd()); - if (cmd.equals("SentVoicePacket") ) { - //收到BP07 表示服务器收到一个voicePacket 分包成功,开始检查下一个包是否存在需要发送。 - //收到SentVoicePacket 表示 有一个VoiceMessage要发送,需要从第0个包开始发送语音分包。 - voicePacket voicepacket = voicePacket.getInstanceSent(); - if (voicepacket.getCurrentIndexToSent() < voicepacket.getPacketCount()) { - ICLogger.i("voicepacket " + voicepacket.getName() + " filetype " + voicepacket.getFiletype() + " , datatype " + voicepacket.getDateType() +" "+ voicepacket.getPacketTime() + " send " + (voicepacket.getCurrentIndexToSent() + 1) + "/" + voicepacket.getPacketCount()); - if(mConnection instanceof NettyConnection) { - ((NettyConnection) mConnection).sendMsg("RAWPACKET", - protocolAPIHelper.getVoicePacketItem(voicepacket.getPacketTime(), - voicepacket.getPacketCount(), - (voicepacket.getCurrentIndexToSent() + 1), - voicepacket.getVoicePacketWithIndex(voicepacket.getCurrentIndexToSent()).getPacketLen(), - voicepacket.getVoicePacketWithIndex(voicepacket.getCurrentIndexToSent()).getPacketData(), voicepacket.getFiletype(), voicepacket.getDateType()) - ); + public static void releaseWakeLockForGetWifiList() { + if (WifiListWakeLock == null) { + ICLogger.i("WifiListWakeLock 没有加锁"); + return; } - } else { - ICLogger.i("voicepacket " + voicepacket.getName() + " filetype " + voicepacket.getFiletype() + " , datatype " + voicepacket.getDateType() + " " + voicepacket.getPacketTime() + " sent Done!"); - } - return true; - } else if ("PhotoRemoteTaken".equals(paramStringMessage.cmd())) { - //接收到拍照完毕命令,发送照片 - - String msgUrl=paramStringMessage.isFromCache(); - ICLogger.i("receive taken photo to send "+msgUrl); - //创建voiceConent并添加到数据 - final VoiceContent voiceContent = VoiceContent.placeHolderOut(CONTACT_CATEGORY_GROUP, "123", msgUrl,2,2); - - // 把voiceContent拆解成1024的分包 - Util.parseToVoicePacketSent(voiceContent); - //trigger 分包发送 - if (CoreService.getInstance().getConnection()!=null) { - - - //H88 专用功能拍照时检测用户体温心率 - if(Util.getSystemProperties("persist.sys.do_check_condition","false").equals("true")) { - //开启测温 - if(mRuntime.check_stat_do_temp_test()) { - TemperatureUtil.DoTempTest(); + if (WifiListWakeLock.isHeld()) { + WifiListWakeLock.release(); + WifiListWakeLock = null; } + } - Util.mSleep(5000); - //开启测量PPG - if(mRuntime.check_stat_do_ppg_test()) { - HeartRateManager.triggerPPGtest(); - } - } + public PowerManager.WakeLock getWakeLock() { + PowerManager.WakeLock wakeLock = ((PowerManager) (this.mRuntime.getContextProxy()).context.getSystemService(Context.POWER_SERVICE)).newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, Deliver.class.getSimpleName()); + wakeLock.acquire(40000L); + return wakeLock; + } - CoreService.getInstance().getConnection().DeliverCMDMessageToSystem("SentVoicePacket", ""); + public void onAlarmClock(Connection paramConnection, Runtime paramRuntime) { } - return true; - } else if ("poweroffCheckSim".equals(paramStringMessage.cmd())) { - paramRuntime.setShutdown(true); - - if (SimSignalUtil.hasSimCard(paramRuntime.getContextProxy().context)) - { - ICLogger.i("Has Sim Card Skip poweroff!"); - Util.ShowToast(paramRuntime,"Has Sim Card Skip poweroff!"); - return true; - }else{ - Util.ShowToast(paramRuntime,"Do poweroff!"); - } - mSendMSGHandler.postDelayed(new Runnable() { - @Override - public void run() { - Util.shutdown(); - } - },2000); - return true; - } else if ("FactoryResetCheckSim".equals(paramStringMessage.cmd())) { - - if (SimSignalUtil.hasSimCard(paramRuntime.getContextProxy().context)) - { - ICLogger.i("Has Sim Card Skip FactoryReset!"); - Util.ShowToast(paramRuntime,"Has Sim Card Skip FactoryReset!"); - - return true; - }else{ - Util.ShowToast(paramRuntime,"Do FactoryReset!"); - } - mSendMSGHandler.postDelayed(new Runnable() { - @Override - public void run() { - Util.doMasterClear(paramRuntime.getContextProxy().context); - } - },2000); - return true; - } else if ("poweroff".equals(paramStringMessage.cmd())) { - paramRuntime.setShutdown(true); - mSendMSGHandler.postDelayed(new Runnable() { - @Override - public void run() { - Util.shutdown(); - } - },2000); - return true; - } else if ("FactoryReset".equals(paramStringMessage.cmd())) { - mSendMSGHandler.postDelayed(new Runnable() { - @Override - public void run() { - Util.doMasterClear(paramRuntime.getContextProxy().context); + + public void onAttach(Connection paramConnection, Runtime paramRuntime) { + } + + @Override + public boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime, String ErrorMsg) { + return false; + } + + public boolean onConnectionOpen(Connection paramConnection, Runtime paramRuntime) { + return false; + } + + public void onDetach(Connection paramConnection, Runtime paramRuntime) { + } + + public boolean onReceive(StringMessage paramStringMessage, Connection paramConnection, final Runtime paramRuntime) { + this.mConnection = paramConnection; + this.mRuntime = paramRuntime; + String cmd = paramStringMessage.cmd(); + if (Config.protocol_no == Config.PROTOCOL_MQTT) { + cmd = protocolAPIHelper.isCmdStr(paramStringMessage); } - },2000); - return true; - } else if ("Reboot".equals(paramStringMessage.cmd())) { - mSendMSGHandler.postDelayed(new Runnable() { - @Override - public void run() { - Util.reboot(paramRuntime.getContextProxy().context); + //如果需要检测是否响应。 + StringMessage msgWait = mRuntime.getDbHelper().queryWaitCMDRecord(); + dumpMessage(msgWait); + if (msgWait != null) { + ICLogger.i("====== checkSrvResponse cmd " + cmd + " msg " + protocolAPIHelper.isCmdStr(msgWait)); + if (cmd.equals(protocolAPIHelper.isCmdStr(msgWait))) { + ICLogger.i("checkSrvResponse " + cmd + " " + protocolAPIHelper.isCmdStr(msgWait) + " is responsed!"); + mRuntime.getDbHelper().updateCMDRecord(msgWait.getIndex(), 2);//设置为已读 + CheckCount = 0; + } } - },2000); - return true; - } else if ("heartbeat".equals(paramStringMessage.cmd())) { - //每次心跳,查询一下 是否有语音消息需要接收。 -// paramConnection.send(protocolAPIHelper.genStringMessage("AP05",protocolAPIHelper.AP05(true))); - } else if ("getWeather".equals(paramStringMessage.cmd())) { - ICLogger.i("获取天气"); - mConnection.send(protocolAPIHelper.getWeatherMSG(mRuntime)); - } else if ("NewVoice".equals(paramStringMessage.cmd())) - { - mSendMSGHandler.postDelayed(new Runnable() { - @Override - public void run() { - final Context context = (Deliver.this.mRuntime.getContextProxy()).context; - - Contact param2Contact = new Contact(CATEGORY_GROUP, (mRuntime.getContextProxy()).context.getResources().getString(R.string.all_group), Contact.GROUP_ALL); - int i = mRuntime.getContextProxy().getTelephonyManager().getCallState(); - if (!mRuntime.getBatteryLow() && 1 != i && 2 != i) { - if (Config.do_broadCast_message) - { - - ICLogger.d(Constants.ACTION_MESSAGE_RECEIVED+" "+paramStringMessage.isFromCache()); - //广播 voice消息 - Intent intent = new Intent(); - intent.setAction(Constants.ACTION_MESSAGE_RECEIVED); - intent.putExtra(Constants.KEY_MESSAGE_TYPE,"voice"); - intent.putExtra(Constants.KEY_MESSAGE_FROM,"广播消息"); - intent.putExtra(Constants.KEY_MESSAGE_URL,paramStringMessage.isFromCache()); - - // playVoice(context,paramStringMessage.isFromCache()); - context.sendBroadcast(intent); + ICLogger.i("Deliver receive cmd " + paramStringMessage.cmd()); + if (cmd.equals("SentVoicePacket")) { + //收到BP07 表示服务器收到一个voicePacket 分包成功,开始检查下一个包是否存在需要发送。 + //收到SentVoicePacket 表示 有一个VoiceMessage要发送,需要从第0个包开始发送语音分包。 + voicePacket voicepacket = voicePacket.getInstanceSent(); + if (voicepacket.getCurrentIndexToSent() < voicepacket.getPacketCount()) { + ICLogger.i("voicepacket " + voicepacket.getName() + " filetype " + voicepacket.getFiletype() + " , datatype " + voicepacket.getDateType() + " " + voicepacket.getPacketTime() + " send " + (voicepacket.getCurrentIndexToSent() + 1) + "/" + voicepacket.getPacketCount()); + if (mConnection instanceof NettyConnection) { + ((NettyConnection) mConnection).sendMsg("RAWPACKET", + protocolAPIHelper.getVoicePacketItem(voicepacket.getPacketTime(), + voicepacket.getPacketCount(), + (voicepacket.getCurrentIndexToSent() + 1), + voicepacket.getVoicePacketWithIndex(voicepacket.getCurrentIndexToSent()).getPacketLen(), + voicepacket.getVoicePacketWithIndex(voicepacket.getCurrentIndexToSent()).getPacketData(), voicepacket.getFiletype(), voicepacket.getDateType()) + ); + } + } else { + ICLogger.i("voicepacket " + voicepacket.getName() + " filetype " + voicepacket.getFiletype() + " , datatype " + voicepacket.getDateType() + " " + voicepacket.getPacketTime() + " sent Done!"); } + return true; + } else if ("PhotoRemoteTaken".equals(paramStringMessage.cmd())) { + //接收到拍照完毕命令,发送照片 + + String msgUrl = paramStringMessage.isFromCache(); + ICLogger.i("receive taken photo to send " + msgUrl); + //创建voiceConent并添加到数据 + final VoiceContent voiceContent = VoiceContent.placeHolderOut(CONTACT_CATEGORY_GROUP, "123", msgUrl, 2, 2); + + // 把voiceContent拆解成1024的分包 + Util.parseToVoicePacketSent(voiceContent); + //trigger 分包发送 + if (CoreService.getInstance().getConnection() != null) { - if (Config.noVoiceNotifyDialog==false) { - Intent intent = new Intent(); - //显示提示窗口 - intent.setAction(DIALOG_ACTION); - intent.putExtra("contact", (Parcelable) param2Contact); - context.sendBroadcast(intent); + //H88 专用功能拍照时检测用户体温心率 + if (Util.getSystemProperties("persist.sys.do_check_condition", "false").equals("true")) { + //开启测温 + if (mRuntime.check_stat_do_temp_test()) { + TemperatureUtil.DoTempTest(); + } + + Util.mSleep(5000); + //开启测量PPG + if (mRuntime.check_stat_do_ppg_test()) { + HeartRateManager.triggerPPGtest(); + } + } + + CoreService.getInstance().getConnection().DeliverCMDMessageToSystem("SentVoicePacket", ""); } + return true; + } else if ("poweroffCheckSim".equals(paramStringMessage.cmd())) { + paramRuntime.setShutdown(true); + + if (SimSignalUtil.hasSimCard(paramRuntime.getContextProxy().context)) { + ICLogger.i("Has Sim Card Skip poweroff!"); + Util.ShowToast(paramRuntime, "Has Sim Card Skip poweroff!"); + return true; + } else { + Util.ShowToast(paramRuntime, "Do poweroff!"); + } + mSendMSGHandler.postDelayed(new Runnable() { + @Override + public void run() { + Util.shutdown(); + } + }, 2000); + return true; + } else if ("FactoryResetCheckSim".equals(paramStringMessage.cmd())) { - } - } - },500); - - return true; - }else if ("findDev".equals(paramStringMessage.cmd())) { - - mSendMSGHandler.postDelayed(new Runnable() { - @Override - public void run() { - final Context context = (Deliver.this.mRuntime.getContextProxy()).context; - Intent intent = new Intent(); - ICLogger.d(Constants.ACTION_MESSAGE_RECEIVED+" "+paramStringMessage.isFromCache()); - //显示提示窗口 - intent.setAction(DIALOG_ACTION); - intent.putExtra("findDev", "Find Device"); - context.sendBroadcast(intent); - } - },500); - - return true; - }else if ("takephoto".equals(paramStringMessage.cmd())) { - - mSendMSGHandler.postDelayed(new Runnable() { - @Override - public void run() { - final Context context = (Deliver.this.mRuntime.getContextProxy()).context; - Intent intent = new Intent(); - ICLogger.d(Constants.ACTION_MESSAGE_RECEIVED+" "+paramStringMessage.isFromCache()); - //显示提示窗口 - intent.setAction(DIALOG_ACTION); - intent.putExtra("takephoto", "Take Photo !"); - context.sendBroadcast(intent); - } - },500); + if (SimSignalUtil.hasSimCard(paramRuntime.getContextProxy().context)) { + ICLogger.i("Has Sim Card Skip FactoryReset!"); + Util.ShowToast(paramRuntime, "Has Sim Card Skip FactoryReset!"); + + return true; + } else { + Util.ShowToast(paramRuntime, "Do FactoryReset!"); + } + mSendMSGHandler.postDelayed(new Runnable() { + @Override + public void run() { + Util.doMasterClear(paramRuntime.getContextProxy().context); + } + }, 2000); + return true; + } else if ("poweroff".equals(paramStringMessage.cmd())) { + paramRuntime.setShutdown(true); + mSendMSGHandler.postDelayed(new Runnable() { + @Override + public void run() { + Util.shutdown(); + } + }, 2000); + return true; + } else if ("FactoryReset".equals(paramStringMessage.cmd())) { + mSendMSGHandler.postDelayed(new Runnable() { + @Override + public void run() { + Util.doMasterClear(paramRuntime.getContextProxy().context); + } + }, 2000); + return true; + } else if ("Reboot".equals(paramStringMessage.cmd())) { + mSendMSGHandler.postDelayed(new Runnable() { + @Override + public void run() { + Util.reboot(paramRuntime.getContextProxy().context); + } + }, 2000); + return true; + } else if ("heartbeat".equals(paramStringMessage.cmd())) { + //每次心跳,查询一下 是否有语音消息需要接收。 +// paramConnection.send(protocolAPIHelper.genStringMessage("AP05",protocolAPIHelper.AP05(true))); - return true; + } else if ("getWeather".equals(paramStringMessage.cmd())) { + ICLogger.i("获取天气"); + mConnection.send(protocolAPIHelper.getWeatherMSG(mRuntime)); + } else if ("NewVoice".equals(paramStringMessage.cmd())) { + mSendMSGHandler.postDelayed(new Runnable() { + @Override + public void run() { + final Context context = (Deliver.this.mRuntime.getContextProxy()).context; + + Contact param2Contact = new Contact(CATEGORY_GROUP, (mRuntime.getContextProxy()).context.getResources().getString(R.string.all_group), Contact.GROUP_ALL); + int i = mRuntime.getContextProxy().getTelephonyManager().getCallState(); + if (!mRuntime.getBatteryLow() && 1 != i && 2 != i) { + if (Config.do_broadCast_message) { + + ICLogger.d(Constants.ACTION_MESSAGE_RECEIVED + " " + paramStringMessage.isFromCache()); + //广播 voice消息 + Intent intent = new Intent(); + intent.setAction(Constants.ACTION_MESSAGE_RECEIVED); + intent.putExtra(Constants.KEY_MESSAGE_TYPE, "voice"); + intent.putExtra(Constants.KEY_MESSAGE_FROM, "广播消息"); + intent.putExtra(Constants.KEY_MESSAGE_URL, paramStringMessage.isFromCache()); + + // playVoice(context,paramStringMessage.isFromCache()); + context.sendBroadcast(intent); + } + + if (Config.noVoiceNotifyDialog == false) { + + Intent intent = new Intent(); + //显示提示窗口 + intent.setAction(DIALOG_ACTION); + intent.putExtra("contact", (Parcelable) param2Contact); + context.sendBroadcast(intent); + } - }else if ("StartMonitor".equals(paramStringMessage.cmd())) { + } + } + }, 500); - String recordfilepath=Util.getRecordfilePath(mRuntime, TimeUtil.getSystemTime3()); - int recordtime=Integer.parseInt(paramStringMessage.isFromCache().trim()); - mSendMSGHandler.post(new Runnable() { - @Override - public void run() { - AudioService.getInstance().startRecord(recordfilepath); - } - }); - mSendMSGHandler.postDelayed(new Runnable() { - @Override - public void run() { - AudioService.getInstance().stopRecord(); - ICLogger.i("Monitor Record to send "+recordfilepath); - //创建voiceConent并添加到数据 - /** - * * * 1 语音—— 1.监听语音 * 2.SOS语音 * 3.扩展 - * * * 2 图片—— 1.签到图片 * 2.指令图片 * 3.设备图片 * 4.扩展 - */ - final VoiceContent voiceContent = VoiceContent.placeHolderOut(CONTACT_CATEGORY_GROUP, "123", recordfilepath,1,1); - - // 把voiceContent拆解成1024的分包 - Util.parseToVoicePacketSent(voiceContent); - //trigger 分包发送 - if (CoreService.getInstance().getConnection()!=null) - CoreService.getInstance().getConnection().DeliverCMDMessageToSystem("SentVoicePacket", ""); + return true; + } else if ("findDev".equals(paramStringMessage.cmd())) { + + mSendMSGHandler.postDelayed(new Runnable() { + @Override + public void run() { + final Context context = (Deliver.this.mRuntime.getContextProxy()).context; + Intent intent = new Intent(); + ICLogger.d(Constants.ACTION_MESSAGE_RECEIVED + " " + paramStringMessage.isFromCache()); + //显示提示窗口 + intent.setAction(DIALOG_ACTION); + intent.putExtra("findDev", "Find Device"); + context.sendBroadcast(intent); + } + }, 500); + + return true; + } else if ("takephoto".equals(paramStringMessage.cmd())) { + + mSendMSGHandler.postDelayed(new Runnable() { + @Override + public void run() { + final Context context = (Deliver.this.mRuntime.getContextProxy()).context; + Intent intent = new Intent(); + ICLogger.d(Constants.ACTION_MESSAGE_RECEIVED + " " + paramStringMessage.isFromCache()); + //显示提示窗口 + intent.setAction(DIALOG_ACTION); + intent.putExtra("takephoto", "Take Photo !"); + context.sendBroadcast(intent); + } + }, 500); + + return true; + + } else if ("StartMonitor".equals(paramStringMessage.cmd())) { + + String recordfilepath = Util.getRecordfilePath(mRuntime, TimeUtil.getSystemTime3()); + int recordtime = Integer.parseInt(paramStringMessage.isFromCache().trim()); + mSendMSGHandler.post(new Runnable() { + @Override + public void run() { + AudioService.getInstance().startRecord(recordfilepath); + } + }); + mSendMSGHandler.postDelayed(new Runnable() { + @Override + public void run() { + AudioService.getInstance().stopRecord(); + ICLogger.i("Monitor Record to send " + recordfilepath); + //创建voiceConent并添加到数据 + /** + * * * 1 语音—— 1.监听语音 * 2.SOS语音 * 3.扩展 + * * * 2 图片—— 1.签到图片 * 2.指令图片 * 3.设备图片 * 4.扩展 + */ + final VoiceContent voiceContent = VoiceContent.placeHolderOut(CONTACT_CATEGORY_GROUP, "123", recordfilepath, 1, 1); + + // 把voiceContent拆解成1024的分包 + Util.parseToVoicePacketSent(voiceContent); + //trigger 分包发送 + if (CoreService.getInstance().getConnection() != null) + CoreService.getInstance().getConnection().DeliverCMDMessageToSystem("SentVoicePacket", ""); + } + }, recordtime * 1000); + + return true; } - },recordtime*1000); - return true; + return false; } - return false; - } - - - - private void playVoice(Context paramContext,String voicefile) { - AudioService.getInstance().play(voicefile); - } - - public static void releaseOneWakeLock() { - if (ReceiveWakeLock == null) { - ICLogger.i("ReceiveWakeLock 没有加锁"); - return; - } - if (!wakeLockWifiList && !wakeLockWifiSet && ReceiveWakeLock.isHeld()) { - ReceiveWakeLock.release(); - ReceiveWakeLock = null; - } - } - - public void releaseReceiveWakeLock() { - if (this.ReceiveWakeLock == null) { - ICLogger.i("ReceiveWakeLock 没有加锁"); - return; - } - if (this.ReceiveWakeLock.isHeld()) { - this.ReceiveWakeLock.release(); - this.wakeLockWifiList = false; - this.wakeLockWifiSet = false; - this.ReceiveWakeLock = null; - } - } - public static void connectToWifi(String ssid,String pwd,String encryptType){ - int networkid; - final WifiManager wifiManager = mRuntime.getContextProxy().getWifiManager(); - wifiEnabled = wifiManager.isWifiEnabled(); - if (!wifiEnabled) - { - //没开就打开wifi - Util.turnOnWifiForConnect(mRuntime.getContextProxy().context, mRuntime); - } - if (Util.isConnectWifi(mRuntime.getContextProxy().context)) { - networkid = wifiManager.getConnectionInfo().getNetworkId(); - wifiManager.disconnect(); - wifiManager.removeNetwork(networkid); - wifiManager.saveConfiguration(); + + private void playVoice(Context paramContext, String voicefile) { + AudioService.getInstance().play(voicefile); } - Deliver.isAppSetWifi = 1; - WifiConfiguration wifiConfiguration = Util.GetconfigWifiInfo(mRuntime.getContextProxy().context, ssid, pwd, encryptType); - networkid = wifiConfiguration.networkId; - wifiManager.removeNetwork(networkid); - wifiManager.saveConfiguration(); - networkid = wifiManager.addNetwork(wifiConfiguration); - if (Util.connectWifiByReflectMethod(mRuntime.getContextProxy().context, networkid) == null && !wifiManager.enableNetwork(networkid, true)) { - ICLogger.i("连接失败 3"); - SystemClock.sleep(3000L); - String isUserOpen = Util.getSystemProperties("persist.sys.ic.wifi_enable", "false"); - ICLogger.d("is open by user == > " + isUserOpen); - if ("false".equals(isUserOpen)) { - //用户手动打开的,那么就不关闭wifi了 - wifiManager.setWifiEnabled(false); - } - wakeLockWifiSet = false; - releaseOneWakeLock(); - WifiListWakeLock = Deliver.WakeLockForGetWifiList(mRuntime); - - return; + public static void releaseOneWakeLock() { + if (ReceiveWakeLock == null) { + ICLogger.i("ReceiveWakeLock 没有加锁"); + return; + } + if (!wakeLockWifiList && !wakeLockWifiSet && ReceiveWakeLock.isHeld()) { + ReceiveWakeLock.release(); + ReceiveWakeLock = null; + } } - if(!wifiEnabled ){ - //原来wifi没开就关闭wifi - Util.turnOffWifiForSleep(mRuntime.getContextProxy().context, mRuntime); + public void releaseReceiveWakeLock() { + if (this.ReceiveWakeLock == null) { + ICLogger.i("ReceiveWakeLock 没有加锁"); + return; + } + if (this.ReceiveWakeLock.isHeld()) { + this.ReceiveWakeLock.release(); + this.wakeLockWifiList = false; + this.wakeLockWifiSet = false; + this.ReceiveWakeLock = null; + } } - } - public void setWakeupAlarm(Runtime paramRuntime) { - AlarmManager alarmManager = (AlarmManager)(paramRuntime.getContextProxy()).context.getSystemService(Context.ALARM_SERVICE); - Intent intent = new Intent((paramRuntime.getContextProxy()).context, CoreService.class); - intent.setAction(ACTION_WAKEUP_ALARM); - PendingIntent pendingIntent = PendingIntent.getService((paramRuntime.getContextProxy()).context, 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(",m=,"); - stringBuilder.append(23); - stringBuilder.append(",kitkat="); - stringBuilder.append(19); - ICLogger.i(stringBuilder.toString()); - if (Build.VERSION.SDK_INT >= 19) { - alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + 10000L, pendingIntent); - return; - } - alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + 10000L, pendingIntent); - } - - class ConWifiReceiver extends BroadcastReceiver { - ConWifiReceiver() { + public static void connectToWifi(String ssid, String pwd, String encryptType) { + int networkid; + final WifiManager wifiManager = mRuntime.getContextProxy().getWifiManager(); + wifiEnabled = wifiManager.isWifiEnabled(); + if (!wifiEnabled) { + //没开就打开wifi + Util.turnOnWifiForConnect(mRuntime.getContextProxy().context, mRuntime); + } + if (Util.isConnectWifi(mRuntime.getContextProxy().context)) { + networkid = wifiManager.getConnectionInfo().getNetworkId(); + wifiManager.disconnect(); + wifiManager.removeNetwork(networkid); + wifiManager.saveConfiguration(); + } + + Deliver.isAppSetWifi = 1; + WifiConfiguration wifiConfiguration = Util.GetconfigWifiInfo(mRuntime.getContextProxy().context, ssid, pwd, encryptType); + networkid = wifiConfiguration.networkId; + wifiManager.removeNetwork(networkid); + wifiManager.saveConfiguration(); + networkid = wifiManager.addNetwork(wifiConfiguration); + if (Util.connectWifiByReflectMethod(mRuntime.getContextProxy().context, networkid) == null && !wifiManager.enableNetwork(networkid, true)) { + ICLogger.i("连接失败 3"); + SystemClock.sleep(3000L); + String isUserOpen = Util.getSystemProperties("persist.sys.ic.wifi_enable", "false"); + ICLogger.d("is open by user == > " + isUserOpen); + if ("false".equals(isUserOpen)) { + //用户手动打开的,那么就不关闭wifi了 + wifiManager.setWifiEnabled(false); + } + wakeLockWifiSet = false; + releaseOneWakeLock(); + WifiListWakeLock = Deliver.WakeLockForGetWifiList(mRuntime); + + return; + } + + if (!wifiEnabled) { + //原来wifi没开就关闭wifi + Util.turnOffWifiForSleep(mRuntime.getContextProxy().context, mRuntime); + } + } - public void onReceive(final Context var1, Intent var2) { - String var3 = var2.getAction(); - StringBuilder var4 = new StringBuilder(); - var4.append(" receive action="); - var4.append(var3); - var4.append(" isAppSetWifi="); - var4.append(Deliver.isAppSetWifi); - ICLogger.i(var4.toString()); - if (var3.equals("android.net.conn.CONNECTIVITY_CHANGE")) { - if (Deliver.isAppSetWifi == 0) { - return; + public void setWakeupAlarm(Runtime paramRuntime) { + AlarmManager alarmManager = (AlarmManager) (paramRuntime.getContextProxy()).context.getSystemService(Context.ALARM_SERVICE); + Intent intent = new Intent((paramRuntime.getContextProxy()).context, CoreService.class); + intent.setAction(ACTION_WAKEUP_ALARM); + PendingIntent pendingIntent = PendingIntent.getService((paramRuntime.getContextProxy()).context, 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(",m=,"); + stringBuilder.append(23); + stringBuilder.append(",kitkat="); + stringBuilder.append(19); + ICLogger.i(stringBuilder.toString()); + if (Build.VERSION.SDK_INT >= 19) { + alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + 10000L, pendingIntent); + return; } + alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + 10000L, pendingIntent); + } - if (Deliver.isAppSetWifi == 1) { - Deliver.isAppSetWifi = 0; - if (Deliver.this.delayHandler != null) { - Deliver.this.delayHandler.removeCallbacks(Deliver.this.delayTh); - Deliver.this.delayHandler = null; - } + class ConWifiReceiver extends BroadcastReceiver { + ConWifiReceiver() { } - WifiManager var5 = (WifiManager)var1.getSystemService(Context.WIFI_SERVICE); - if (((ConnectivityManager)var1.getSystemService(Context.CONNECTIVITY_SERVICE)).getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()) { - ICLogger.i("连接成功"); - Deliver.isAppSetWifi = 0; - Deliver.haveSendH42 = true; - Deliver.this.mConnection.connect(Deliver.this.mRuntime.getHost(), Deliver.this.mRuntime.getPort()); - if (Deliver.this.delayHandler != null) { - Deliver.this.delayHandler.removeCallbacks(Deliver.this.delayTh); - Deliver.this.delayHandler = null; - } - - var1.unregisterReceiver(Deliver.this.mMyWifiReceiver); - Deliver.this.mMyWifiReceiver = null; - Deliver.this.wakeLockWifiSet = false; - Deliver.this.releaseOneWakeLock(); - Deliver.WifiListWakeLock = Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime); - } else { - StringBuilder var6 = new StringBuilder(); - var6.append("连接失败 222 delayHandler="); - var6.append(Deliver.this.delayHandler); - ICLogger.i(var6.toString()); - Deliver.isAppSetWifi = 2; - var5.reconnect(); - if (Deliver.this.delayHandler == null) { - Deliver.this.delayHandler = new Handler(); - Deliver.this.delayTh = new Runnable() { - public void run() { - StringBuilder var1x = new StringBuilder(); - var1x.append("连接失败 超时 wifiEnabled="); - var1x.append(Deliver.this.wifiEnabled); - ICLogger.i(var1x.toString()); - if (Deliver.isAppSetWifi != 1) { - Deliver.isAppSetWifi = 0; - var1.unregisterReceiver(Deliver.this.mMyWifiReceiver); - Deliver.this.mMyWifiReceiver = null; - WifiManager var3 = (WifiManager)var1.getSystemService(Context.WIFI_SERVICE); - if (((ConnectivityManager)var1.getSystemService(Context.CONNECTIVITY_SERVICE)).getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()) { - ICLogger.i("连接成功 1"); + public void onReceive(final Context var1, Intent var2) { + String var3 = var2.getAction(); + StringBuilder var4 = new StringBuilder(); + var4.append(" receive action="); + var4.append(var3); + var4.append(" isAppSetWifi="); + var4.append(Deliver.isAppSetWifi); + ICLogger.i(var4.toString()); + if (var3.equals("android.net.conn.CONNECTIVITY_CHANGE")) { + if (Deliver.isAppSetWifi == 0) { + return; + } + + if (Deliver.isAppSetWifi == 1) { + Deliver.isAppSetWifi = 0; + if (Deliver.this.delayHandler != null) { + Deliver.this.delayHandler.removeCallbacks(Deliver.this.delayTh); + Deliver.this.delayHandler = null; + } + } + + WifiManager var5 = (WifiManager) var1.getSystemService(Context.WIFI_SERVICE); + if (((ConnectivityManager) var1.getSystemService(Context.CONNECTIVITY_SERVICE)).getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()) { + ICLogger.i("连接成功"); + Deliver.isAppSetWifi = 0; Deliver.haveSendH42 = true; Deliver.this.mConnection.connect(Deliver.this.mRuntime.getHost(), Deliver.this.mRuntime.getPort()); + if (Deliver.this.delayHandler != null) { + Deliver.this.delayHandler.removeCallbacks(Deliver.this.delayTh); + Deliver.this.delayHandler = null; + } + + var1.unregisterReceiver(Deliver.this.mMyWifiReceiver); + Deliver.this.mMyWifiReceiver = null; Deliver.this.wakeLockWifiSet = false; Deliver.this.releaseOneWakeLock(); Deliver.WifiListWakeLock = Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime); - } else { - int var2 = var3.getConnectionInfo().getNetworkId(); - if (var2 != -1) { - var3.disableNetwork(var2); + } else { + StringBuilder var6 = new StringBuilder(); + var6.append("连接失败 222 delayHandler="); + var6.append(Deliver.this.delayHandler); + ICLogger.i(var6.toString()); + Deliver.isAppSetWifi = 2; + var5.reconnect(); + if (Deliver.this.delayHandler == null) { + Deliver.this.delayHandler = new Handler(); + Deliver.this.delayTh = new Runnable() { + public void run() { + StringBuilder var1x = new StringBuilder(); + var1x.append("连接失败 超时 wifiEnabled="); + var1x.append(Deliver.this.wifiEnabled); + ICLogger.i(var1x.toString()); + if (Deliver.isAppSetWifi != 1) { + Deliver.isAppSetWifi = 0; + var1.unregisterReceiver(Deliver.this.mMyWifiReceiver); + Deliver.this.mMyWifiReceiver = null; + WifiManager var3 = (WifiManager) var1.getSystemService(Context.WIFI_SERVICE); + if (((ConnectivityManager) var1.getSystemService(Context.CONNECTIVITY_SERVICE)).getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()) { + ICLogger.i("连接成功 1"); + Deliver.haveSendH42 = true; + Deliver.this.mConnection.connect(Deliver.this.mRuntime.getHost(), Deliver.this.mRuntime.getPort()); + Deliver.this.wakeLockWifiSet = false; + Deliver.this.releaseOneWakeLock(); + Deliver.WifiListWakeLock = Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime); + } else { + int var2 = var3.getConnectionInfo().getNetworkId(); + if (var2 != -1) { + var3.disableNetwork(var2); // ServiceUtil.offerQueue(API.H42(Deliver.this.mRuntime, "3")); - Deliver.this.wakeLockWifiSet = false; - Deliver.this.releaseOneWakeLock(); - Deliver.WifiListWakeLock = Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime); - } else { - ICLogger.i("连接失败 2-2"); + Deliver.this.wakeLockWifiSet = false; + Deliver.this.releaseOneWakeLock(); + Deliver.WifiListWakeLock = Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime); + } else { + ICLogger.i("连接失败 2-2"); // ServiceUtil.offerQueue(API.H42(Deliver.this.mRuntime, "3")); - Deliver.this.wakeLockWifiSet = false; - Deliver.this.releaseOneWakeLock(); - Deliver.WifiListWakeLock = Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime); - } - - if (!Deliver.this.wifiEnabled) { - var3.setWifiEnabled(false); + Deliver.this.wakeLockWifiSet = false; + Deliver.this.releaseOneWakeLock(); + Deliver.WifiListWakeLock = Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime); + } + + if (!Deliver.this.wifiEnabled) { + var3.setWifiEnabled(false); + } + } + + Deliver.this.delayHandler = null; + } + } + }; + Deliver.this.delayHandler.postDelayed(Deliver.this.delayTh, 30000L); } - } - - Deliver.this.delayHandler = null; } - } - }; - Deliver.this.delayHandler.postDelayed(Deliver.this.delayTh, 30000L); - } - } - } + } + } } - } - + } diff --git a/app/src/main/java/com/enqualcomm/support/service/HeartRateManager.java b/app/src/main/java/com/enqualcomm/support/service/HeartRateManager.java index 2fbb4390..fa75ad6c 100644 --- a/app/src/main/java/com/enqualcomm/support/service/HeartRateManager.java +++ b/app/src/main/java/com/enqualcomm/support/service/HeartRateManager.java @@ -10,29 +10,26 @@ import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Bundle; import android.os.Handler; +import android.os.HandlerThread; import android.os.Message; import android.os.Messenger; import android.os.PowerManager; -import android.util.Log; import com.enqualcomm.support.Config; import com.enqualcomm.support.Constants; import com.enqualcomm.support.CoreService; import com.enqualcomm.support.LocationClient; -import com.enqualcomm.support.bean.EventLooperHandlerThread; -import com.enqualcomm.support.bean.StringMessage; -import com.enqualcomm.support.utils.ICHttpUtil; -import com.enqualcomm.support.utils.Util; -import com.ic.jni.ICJniUtils; -import com.ic.protocols.protocolAPIHelper; import com.enqualcomm.support.bean.Runtime; +import com.enqualcomm.support.bean.StringMessage; import com.enqualcomm.support.bean.heartRateStatus; import com.enqualcomm.support.service.base.AbstractInvokeHandlerService; import com.enqualcomm.support.utils.Connection; import com.enqualcomm.support.utils.ICLogger; -import com.enqualcomm.support.utils.NettyConnection; import com.enqualcomm.support.utils.SimSignalUtil; import com.enqualcomm.support.utils.TimeUtil; +import com.enqualcomm.support.utils.Util; +import com.ic.jni.ICJniUtils; +import com.ic.protocols.protocolAPIHelper; import java.util.Random; import java.util.concurrent.ScheduledThreadPoolExecutor; @@ -48,396 +45,397 @@ import static com.enqualcomm.support.Constants.key_ppg; import static com.enqualcomm.support.Constants.key_spo2; public class HeartRateManager extends AbstractInvokeHandlerService implements SensorEventListener { - private int mNetworkType; + private int mNetworkType; - private SimSignalUtil mSignalUtil; + private SimSignalUtil mSignalUtil; - private Runtime runtime; - private Connection connection; + private Runtime runtime; + private Connection connection; - private ScheduledThreadPoolExecutor timerPPG=null; - private static Handler mHandler=null; + private ScheduledThreadPoolExecutor timerPPG = null; + private static Handler mHandler = null; - private void checkWarning(){ - //ppg - if(runtime.getHRS().ppg_threshold_max>0 && runtime.getHRS().getPPG() >runtime.getHRS().ppg_threshold_max){ + private void checkWarning() { + //ppg + if (runtime.getHRS().ppg_threshold_max > 0 && runtime.getHRS().getPPG() > runtime.getHRS().ppg_threshold_max) { - if(runtime.setAlarmType(Runtime.AlarmType.ALARM_HEART_RATE_HIGH)) { - //trigger AP10 报警定位 + if (runtime.setAlarmType(Runtime.AlarmType.ALARM_HEART_RATE_HIGH)) { + //trigger AP10 报警定位 // Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime)); - ICLogger.i("triggerSOSLocationProcess "); - LocationClient.getInstance().triggerSOSLocationProcess(); - } + ICLogger.i("triggerSOSLocationProcess "); + LocationClient.getInstance().triggerSOSLocationProcess(); + } - }else if ( runtime.getHRS().ppg_threshold_min>0 && runtime.getHRS().getPPG() 0 && runtime.getHRS().getPPG() < runtime.getHRS().ppg_threshold_min) { + if (runtime.setAlarmType(Runtime.AlarmType.ALARM_HEART_RATE_LOW)) { + //trigger AP10 报警定位 // Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime)); - ICLogger.i("triggerSOSLocationProcess "); - LocationClient.getInstance().triggerSOSLocationProcess(); - } - } + ICLogger.i("triggerSOSLocationProcess "); + LocationClient.getInstance().triggerSOSLocationProcess(); + } + } - //bph - if(runtime.getHRS().bph_threshold_max>0 && runtime.getHRS().getBPH() >runtime.getHRS().bph_threshold_max){ + //bph + if (runtime.getHRS().bph_threshold_max > 0 && runtime.getHRS().getBPH() > runtime.getHRS().bph_threshold_max) { - if(runtime.setAlarmType(Runtime.AlarmType.ALARM_BPH_HIGH)) { - //trigger AP10 报警定位 - ICLogger.i("triggerSOSLocationProcess "); - LocationClient.getInstance().triggerSOSLocationProcess(); + if (runtime.setAlarmType(Runtime.AlarmType.ALARM_BPH_HIGH)) { + //trigger AP10 报警定位 + ICLogger.i("triggerSOSLocationProcess "); + LocationClient.getInstance().triggerSOSLocationProcess(); // Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime)); - } + } - }else if ( runtime.getHRS().bph_threshold_min>0 && runtime.getHRS().getBPH() 0 && runtime.getHRS().getBPH() < runtime.getHRS().bph_threshold_min) { + if (runtime.setAlarmType(Runtime.AlarmType.ALARM_BPH_LOW)) { + //trigger AP10 报警定位 + ICLogger.i("triggerSOSLocationProcess "); + LocationClient.getInstance().triggerSOSLocationProcess(); // Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime)); - } - } + } + } - //bpl - if(runtime.getHRS().bpl_threshold_max>0 && runtime.getHRS().getBPL() >runtime.getHRS().bpl_threshold_max){ + //bpl + if (runtime.getHRS().bpl_threshold_max > 0 && runtime.getHRS().getBPL() > runtime.getHRS().bpl_threshold_max) { - if(runtime.setAlarmType(Runtime.AlarmType.ALARM_BPL_HIGH)) { - //trigger AP10 报警定位 - ICLogger.i("triggerSOSLocationProcess "); - LocationClient.getInstance().triggerSOSLocationProcess(); + if (runtime.setAlarmType(Runtime.AlarmType.ALARM_BPL_HIGH)) { + //trigger AP10 报警定位 + ICLogger.i("triggerSOSLocationProcess "); + LocationClient.getInstance().triggerSOSLocationProcess(); // Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime)); - } + } - }else if ( runtime.getHRS().bpl_threshold_min>0 && runtime.getHRS().getBPL() 0 && runtime.getHRS().getBPL() < runtime.getHRS().bpl_threshold_min) { + if (runtime.setAlarmType(Runtime.AlarmType.ALARM_BPL_LOW)) { + //trigger AP10 报警定位 + ICLogger.i("triggerSOSLocationProcess "); + LocationClient.getInstance().triggerSOSLocationProcess(); // Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime)); - } + } + } } - } - - private static final String HEART_ACTION = "com.ic.action.BLOOD_HEART"; - private void sendHeartBroadcast(int count,int spo2) { - Intent pedIntent = new Intent(); - pedIntent.setAction(HEART_ACTION); - pedIntent.putExtra("BLOOD_HEART", count); - pedIntent.putExtra("BLOOD_SPO2", spo2); - ICLogger.i("sendHeartBroadcast "+HEART_ACTION+" BLOOD_HEART "+count+" BLOOD_SPO2 "+spo2); - runtime.getContextProxy().context.sendBroadcast(pedIntent); - } - public HeartRateManager(Runtime _runtime,Connection _connection){ - runtime=_runtime; - connection=_connection; - currentStat= heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_CLOSED; - isTimerStarted=false; - mSensorManager = (SensorManager) runtime.getContextProxy().context.getSystemService(SENSOR_SERVICE); - mHeartRate = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE); - mHandler = new Handler(EventLooperHandlerThread.makeLooper(HeartRateManager.class.getSimpleName()),new Handler.Callback() { - @Override - public boolean handleMessage(Message message) { - switch (message.what) { - case 100: { - //只有检测PPG成功,且网络连接中才发送数据 - if (runtime.getHRS().getHeartrateWorkingStat() == heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_TEST_SUCCESS) { - runtime.getHRS().setLastTestTime(TimeUtil.getSystemTime3()); - //发送PPG给Launcher,显示在主界面用 - sendHeartBroadcast(runtime.getHRS().getPPG(),runtime.getHRS().getSpo2()); - if(Runtime.practising==true){ - ICLogger.i("自由锻炼中,设置测量心率! "+runtime.getHRS().getPPG()+","+runtime.getHRS().getBPH()+","+runtime.getHRS().getBPL()+","+runtime.getHRS().getSpo2()); - Runtime.healthInfo.setPPGECGData(runtime.getHRS().getPPG(),runtime.getHRS().getBPH(),runtime.getHRS().getBPL(),runtime.getHRS().getSpo2()); - - //因为心率和定位用时都比温度多,但是定位和心率不一定谁用时多,所以两个都需要检测是否结束 - if(Runtime.healthInfo.check_info_item_finished()){ - Runtime.healthInfo.appendBuffer(Runtime.healthInfo.getHealthInfoString()); - ICLogger.i("自由锻炼中,测量完成,添加一条记录! 当前条数 "+Runtime.healthInfo.getInfoCount()); - Runtime.healthInfo.reset(); - } - if(Runtime.healthInfo.getInfoCount()>=(30-1)){ - //超过30次发送数据给服务器 - ICLogger.i("自由锻炼中,发送数据给服务器 "+Runtime.healthInfo.getBufferData().length); - mHandler.post(new Runnable() { - @Override - public void run() { + private static final String HEART_ACTION = "com.ic.action.BLOOD_HEART"; + + private void sendHeartBroadcast(int count, int spo2) { + Intent pedIntent = new Intent(); + pedIntent.setAction(HEART_ACTION); + pedIntent.putExtra("BLOOD_HEART", count); + pedIntent.putExtra("BLOOD_SPO2", spo2); + ICLogger.i("sendHeartBroadcast " + HEART_ACTION + " BLOOD_HEART " + count + " BLOOD_SPO2 " + spo2); + runtime.getContextProxy().context.sendBroadcast(pedIntent); + } + + public HeartRateManager(Runtime _runtime, Connection _connection) { + runtime = _runtime; + connection = _connection; + currentStat = heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_CLOSED; + isTimerStarted = false; + mSensorManager = (SensorManager) runtime.getContextProxy().context.getSystemService(SENSOR_SERVICE); + mHeartRate = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE); + HandlerThread handlerThread = new HandlerThread("ic:heart-handler-thread"); + handlerThread.start(); + mHandler = new Handler(handlerThread.getLooper(), message -> { + switch (message.what) { + case 100: { + //只有检测PPG成功,且网络连接中才发送数据 + if (runtime.getHRS().getHeartrateWorkingStat() == heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_TEST_SUCCESS) { + runtime.getHRS().setLastTestTime(TimeUtil.getSystemTime3()); + //发送PPG给Launcher,显示在主界面用 + sendHeartBroadcast(runtime.getHRS().getPPG(), runtime.getHRS().getSpo2()); + if (Runtime.practising == true) { + ICLogger.i("自由锻炼中,设置测量心率! " + runtime.getHRS().getPPG() + "," + runtime.getHRS().getBPH() + "," + runtime.getHRS().getBPL() + "," + runtime.getHRS().getSpo2()); + Runtime.healthInfo.setPPGECGData(runtime.getHRS().getPPG(), runtime.getHRS().getBPH(), runtime.getHRS().getBPL(), runtime.getHRS().getSpo2()); + + //因为心率和定位用时都比温度多,但是定位和心率不一定谁用时多,所以两个都需要检测是否结束 + if (Runtime.healthInfo.check_info_item_finished()) { + Runtime.healthInfo.appendBuffer(Runtime.healthInfo.getHealthInfoString()); + ICLogger.i("自由锻炼中,测量完成,添加一条记录! 当前条数 " + Runtime.healthInfo.getInfoCount()); + Runtime.healthInfo.reset(); + } + if (Runtime.healthInfo.getInfoCount() >= (30 - 1)) { + //超过30次发送数据给服务器 + ICLogger.i("自由锻炼中,发送数据给服务器 " + Runtime.healthInfo.getBufferData().length); + mHandler.post(new Runnable() { + @Override + public void run() { // ICHttpUtil.uploadData(Runtime.healthInfo.getBufferDataStr(),runtime,TimeUtil.getSystemTime2(),null); - Deliver.sendLocationMSG(protocolAPIHelper.getPRACTICE()); - //发送过后重置 - Runtime.healthInfo.resetBuffer(); + Deliver.sendLocationMSG(protocolAPIHelper.getPRACTICE()); + //发送过后重置 + Runtime.healthInfo.resetBuffer(); + } + }); + } + } else { + StringMessage PPGDATA = protocolAPIHelper.getPPG_ECG_MSG(runtime); + //发送给EQC服务器的 + sendBroadcastPPGResult(); + //因为协议中没有时间变量,所以只能实时传输,如果恰巧没有网络也只能丢弃,有时间变量的话,可以考虑通过deliver的buffer来进行缓存发送 + if (PPGDATA == null) { + StringMessage ppgd = protocolAPIHelper.getPPG_MSG(runtime.getHRS().getPPG(), runtime); + StringMessage bloodd = protocolAPIHelper.getBlood_MSG(runtime.getHRS().getBPH(), runtime.getHRS().getBPL(), runtime); + StringMessage oxd = protocolAPIHelper.getOxygen_MSG(runtime.getHRS().getSpo2(), runtime); + Deliver.sendLocationMSG(ppgd); + Deliver.sendLocationMSG(bloodd); + Deliver.sendLocationMSG(oxd); + + checkWarning(); + + } else { + Deliver.sendLocationMSG(PPGDATA); + ICLogger.i("Send PPG " + PPGDATA.isFromCache()); + checkWarning(); + } + } + + } else { + ICLogger.i("PPG Failed for Timeout!"); } - }); + stopPPG(); } - }else { - StringMessage PPGDATA = protocolAPIHelper.getPPG_ECG_MSG(runtime); - //发送给EQC服务器的 - sendBroadcastPPGResult(); - //因为协议中没有时间变量,所以只能实时传输,如果恰巧没有网络也只能丢弃,有时间变量的话,可以考虑通过deliver的buffer来进行缓存发送 - if (PPGDATA == null) { - StringMessage ppgd = protocolAPIHelper.getPPG_MSG(runtime.getHRS().getPPG(), runtime); - StringMessage bloodd = protocolAPIHelper.getBlood_MSG(runtime.getHRS().getBPH(), runtime.getHRS().getBPL(), runtime); - StringMessage oxd = protocolAPIHelper.getOxygen_MSG(runtime.getHRS().getSpo2(), runtime); - Deliver.sendLocationMSG(ppgd); - Deliver.sendLocationMSG(bloodd); - Deliver.sendLocationMSG(oxd); - - checkWarning(); + break; + case 200: { + startPPG(); + } + break; + case 300: { + stopPPG(); + } + break; + } + return false; + }); + } + + + private void sendBroadcastPPGResult() { + Intent intent = new Intent(ACTION_BROADCAST_PPG); + intent.putExtra("ppg", runtime.getHRS().getPPG()); + intent.putExtra("bph", runtime.getHRS().getBPH()); + intent.putExtra("bpl", runtime.getHRS().getBPL()); + intent.putExtra("spo2", runtime.getHRS().getSpo2()); + intent.putExtra("time", runtime.getHRS().getTestTime()); + runtime.getContextProxy().context.sendBroadcast(intent); + } + + private SensorManager mSensorManager; + private Sensor mHeartRate; + int PPG; + int BPH; + int BPL; + int SPo2; + boolean isWared; + boolean isPPGTesting; + static boolean isTimerStarted; + public static heartRateStatus.HEARTRATE_WORKINGSTAT currentStat; + static int delayCount; + static int testCount; + static int notWaredCount; + static int noPPGCount; + private final int MAX_TESTTIMES = 30000;//最大延迟测试时间为30秒 + + public int randomOxygenValue() { + int min = 95; + int max = 99; + int ret = min + ((int) (new Random().nextFloat() * (max - min))); + return ret; + } + + public void doPPGtest() { + + int hrsType = ICJniUtils.isPPGavailable(); + if (hrsType > 0 && hrsType != ICJniUtils.PPG_EGC_SensorType.PPG_EGC_TYPE_IC66.ordinal()) { + PPG = ICJniUtils.getPPG();//调用底层函数保证状态更新。 + BPH = ICJniUtils.getHighBloodPressure(); + BPL = ICJniUtils.getLowBloodPressure(); + SPo2 = ICJniUtils.getSPO2(); + if (SPo2 == 0) { + SPo2 = randomOxygenValue(); + } + isWared = (ICJniUtils.isWeared() == 1); + isPPGTesting = (ICJniUtils.isPPGStarted() == 1); + } else { + isPPGTesting = true; + } + ICLogger.i("PPG TESTING=" + isPPGTesting + ", isWared=" + isWared + ", PPG=" + PPG + ", BPH=" + BPH + ", BPL=" + BPL + ", SPo2=" + SPo2); + if (isPPGTesting) { + if (isWared) { + if (PPG > 0) { + currentStat = heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_TEST_SUCCESS; } else { - Deliver.sendLocationMSG(PPGDATA); - ICLogger.i("Send PPG " + PPGDATA.isFromCache()); - checkWarning(); + currentStat = heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_WARED_AND_TESTING; } - } - } else { - ICLogger.i("PPG Failed for Timeout!"); + currentStat = heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_NOTWARED; } - stopPPG(); - } - break; - case 200: { - startPPG(); - } - break; - case 300: { - stopPPG(); - } - break; + } else { + currentStat = heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_CLOSED; } - return false; - } - }); - - } - - - private void sendBroadcastPPGResult(){ - Intent intent=new Intent(ACTION_BROADCAST_PPG); - intent.putExtra("ppg",runtime.getHRS().getPPG()); - intent.putExtra("bph",runtime.getHRS().getBPH()); - intent.putExtra("bpl",runtime.getHRS().getBPL()); - intent.putExtra("spo2",runtime.getHRS().getSpo2()); - intent.putExtra("time",runtime.getHRS().getTestTime()); - runtime.getContextProxy().context.sendBroadcast(intent); - } - - private SensorManager mSensorManager; - private Sensor mHeartRate; - int PPG; - int BPH; - int BPL; - int SPo2; - boolean isWared ; - boolean isPPGTesting ; - static boolean isTimerStarted; - public static heartRateStatus.HEARTRATE_WORKINGSTAT currentStat; - static int delayCount; - static int testCount; - static int notWaredCount; - static int noPPGCount; - private final int MAX_TESTTIMES=30000;//最大延迟测试时间为30秒 - - public int randomOxygenValue() { - int min = 95; - int max = 99; - int ret=min + ((int) (new Random().nextFloat() * (max - min))); - return ret; - } - - public void doPPGtest(){ - - int hrsType=ICJniUtils.isPPGavailable(); - if (hrsType>0 && hrsType != ICJniUtils.PPG_EGC_SensorType.PPG_EGC_TYPE_IC66.ordinal()) { - PPG = ICJniUtils.getPPG();//调用底层函数保证状态更新。 - BPH = ICJniUtils.getHighBloodPressure(); - BPL = ICJniUtils.getLowBloodPressure(); - SPo2 = ICJniUtils.getSPO2(); - if(SPo2==0){ - SPo2=randomOxygenValue(); - } - isWared = (ICJniUtils.isWeared() == 1); - isPPGTesting = (ICJniUtils.isPPGStarted() == 1); - }else{ - isPPGTesting=true; - } - ICLogger.i("PPG TESTING="+isPPGTesting+", isWared="+isWared+", PPG="+PPG+", BPH="+BPH+", BPL="+BPL+", SPo2="+SPo2); - if (isPPGTesting){ - if (isWared ) { - if (PPG > 0) { - currentStat = heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_TEST_SUCCESS; + + + if (currentStat == heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_NOTWARED) { + notWaredCount--; + if (notWaredCount < 0) { //没有佩戴次数到限制后,停止检测 + ICLogger.i("HEARTRATE_NOTWARED 超过时限,取消检测报告!"); + stopPPG(); + } + } else if (currentStat == heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_WARED_AND_TESTING) { + noPPGCount--; + if (noPPGCount < 0) { //没有佩戴次数到限制后,停止检测 + ICLogger.i("HEARTRATE WARED And Testing (Wared=1 PPG=0)超过时限,取消检测报告!"); + stopPPG(); + } + } + + + if (currentStat == heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_TEST_SUCCESS) { + runtime.getHRS().setLastHeartrate(PPG, BPH, BPL, SPo2); + delayCount--; + if (delayCount < 0) //达到延迟时间后,停止检测并发送数据 + sendAndStopPPG(); + } else { - currentStat = heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_WARED_AND_TESTING; + runtime.getHRS().setLastHeartrate(0, 0, 0, 0); + } + runtime.getHRS().setHeartrateStat(currentStat); + + + testCount--; + if (testCount < 0) { + ICLogger.i("PPG 超过 " + MAX_TESTTIMES + "秒 未能得出结果,取消检测报告!"); + stopPPG(); } - }else{ - currentStat= heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_NOTWARED; - } - }else{ - currentStat= heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_CLOSED; - } + } - if (currentStat== heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_NOTWARED){ - notWaredCount--; - if( notWaredCount <0){ //没有佩戴次数到限制后,停止检测 - ICLogger.i("HEARTRATE_NOTWARED 超过时限,取消检测报告!"); - stopPPG(); - } - }else if (currentStat== heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_WARED_AND_TESTING){ - noPPGCount--; - if( noPPGCount <0){ //没有佩戴次数到限制后,停止检测 - ICLogger.i("HEARTRATE WARED And Testing (Wared=1 PPG=0)超过时限,取消检测报告!"); - stopPPG(); - } + private void sendAndStopPPG() { + //结束和发送数据 + mHandler.sendEmptyMessage(100); } + PowerManager.WakeLock mWakeLock = null; - if (currentStat==heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_TEST_SUCCESS){ - runtime.getHRS().setLastHeartrate(PPG,BPH,BPL,SPo2); - delayCount--; - if (delayCount<0) //达到延迟时间后,停止检测并发送数据 - sendAndStopPPG(); + public PowerManager.WakeLock getPPGWakeLock() { + mWakeLock = ((PowerManager) (runtime.getContextProxy()).context.getSystemService(Context.POWER_SERVICE)).newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, HeartRateManager.class.getSimpleName()); + mWakeLock.acquire(30000L); + return mWakeLock; + } - }else{ - runtime.getHRS().setLastHeartrate(0,0,0,0); + public void releaseWakeLock() { + if (mWakeLock != null && mWakeLock.isHeld()) { + mWakeLock.release(); + } + mWakeLock = null; } - runtime.getHRS().setHeartrateStat(currentStat); + public void startPPG() { + int hrsType = ICJniUtils.isPPGavailable(); + if (hrsType > 0 && (isTimerStarted == false)) { + currentStat = heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_OPEN; + delayCount = 4;//检测成功后4秒发送数据 + notWaredCount = 5; //初始化没有佩戴的检测次数5,连续5秒没有佩戴则取消检测 + noPPGCount = 30;//即使佩戴了,但是30秒没有出结果,也认为无效 + testCount = MAX_TESTTIMES;//测试MAX_TESTTIMES后没有结果也要强制退出 + isTimerStarted = true; + getPPGWakeLock(); + if (hrsType == ICJniUtils.PPG_EGC_SensorType.PPG_EGC_TYPE_IC66.ordinal()) { + boolean ret = mSensorManager.registerListener(this, mHeartRate, SensorManager.SENSOR_DELAY_UI); + ICLogger.i("Heart Rate PPG_EGC_TYPE_IC66 opened ret :: " + ret); - testCount--; - if (testCount<0) - { - ICLogger.i("PPG 超过 "+MAX_TESTTIMES+"秒 未能得出结果,取消检测报告!"); - stopPPG(); - } + } else { - } - - private void sendAndStopPPG(){ - //结束和发送数据 - mHandler.sendEmptyMessage(100); - } - PowerManager.WakeLock mWakeLock=null; - public PowerManager.WakeLock getPPGWakeLock() { - mWakeLock = ((PowerManager)(runtime.getContextProxy()).context.getSystemService(Context.POWER_SERVICE)).newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, HeartRateManager.class.getSimpleName()); - mWakeLock.acquire(30000L); - return mWakeLock; - } - - public void releaseWakeLock(){ - if (mWakeLock!=null && mWakeLock.isHeld()){ - mWakeLock.release(); + int ret = ICJniUtils.enablePPG(); + ICLogger.i("Start PPG test ret=" + ret); + timerPPG = new ScheduledThreadPoolExecutor(10); + timerPPG.scheduleAtFixedRate(new Runnable() { + @Override + public void run() { + doPPGtest(); + } + }, 0, 1000, TimeUnit.MILLISECONDS); //1 秒更新一次数据 + + } + } } - mWakeLock=null; - } - public void startPPG(){ - - int hrsType=ICJniUtils.isPPGavailable(); - if ( hrsType > 0 && (isTimerStarted == false) ) { - currentStat = heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_OPEN; - delayCount = 4;//检测成功后4秒发送数据 - notWaredCount = 5; //初始化没有佩戴的检测次数5,连续5秒没有佩戴则取消检测 - noPPGCount = 30;//即使佩戴了,但是30秒没有出结果,也认为无效 - testCount = MAX_TESTTIMES;//测试MAX_TESTTIMES后没有结果也要强制退出 - isTimerStarted = true; - getPPGWakeLock(); - if (hrsType == ICJniUtils.PPG_EGC_SensorType.PPG_EGC_TYPE_IC66.ordinal()) { - - boolean ret = mSensorManager.registerListener(this, mHeartRate, SensorManager.SENSOR_DELAY_UI); - ICLogger.i( "Heart Rate PPG_EGC_TYPE_IC66 opened ret :: " + ret); - - } else { - - int ret=ICJniUtils.enablePPG(); - ICLogger.i("Start PPG test ret="+ret); - timerPPG = new ScheduledThreadPoolExecutor(10); - timerPPG.scheduleAtFixedRate(new Runnable() { - @Override - public void run() { - doPPGtest(); - } - }, 0, 1000, TimeUnit.MILLISECONDS); //1 秒更新一次数据 - - } + + public void stopPPG() { + if (isTimerStarted) { + + int hrsType = ICJniUtils.isPPGavailable(); + if (hrsType == ICJniUtils.PPG_EGC_SensorType.PPG_EGC_TYPE_IC66.ordinal()) { + mSensorManager.unregisterListener(this); + ICLogger.i("Heart Rate PPG_EGC_TYPE_IC66 closed"); + } else { + timerPPG.shutdownNow(); + timerPPG.purge(); + ICJniUtils.disablePPG(); + } + isTimerStarted = false; + } + + releaseWakeLock(); } - } - - public void stopPPG(){ - if( isTimerStarted ) - { - - int hrsType=ICJniUtils.isPPGavailable(); - if (hrsType == ICJniUtils.PPG_EGC_SensorType.PPG_EGC_TYPE_IC66.ordinal()) { - mSensorManager.unregisterListener(this); - ICLogger.i( "Heart Rate PPG_EGC_TYPE_IC66 closed"); - }else { - timerPPG.shutdownNow(); - timerPPG.purge(); - ICJniUtils.disablePPG(); - } - isTimerStarted=false; + + private void callback(Messenger paramMessenger, int paramInt) { + if (paramMessenger != null) + try { + paramMessenger.send(Message.obtain(null, paramInt)); + return; + } catch (Exception e) { + e.printStackTrace(); + } } - releaseWakeLock(); - } - - private void callback(Messenger paramMessenger, int paramInt) { - if (paramMessenger != null) - try { - paramMessenger.send(Message.obtain(null, paramInt)); - return; - } catch (Exception e) { - e.printStackTrace(); - } - } - - private BroadcastReceiver PPGStartReceiver = new BroadcastReceiver() { - public void onReceive(Context param1Context, Intent param1Intent) { - if (ACTION_HEATR_RATE_START.equals(param1Intent.getAction())) { - - //此消息来源于BroadCaset,收到开始测试的消息。 - //此时需要重置HeartRateDetect Timer - //倘若有 参数 PPGTestCycle,则根据这个数值进行设置 - int ppgtestCycle=param1Intent.getIntExtra("PPGTestCycle",-1); - if (ppgtestCycle >0){ - Config.setPPGTestCycle(runtime.getContextProxy().context,ppgtestCycle); - runtime.setPpgTestCycle(Config.getPPGTestCycle(runtime.getContextProxy().context)); - ICLogger.i("get and set PPGTestCycle "+ppgtestCycle); - } - ICLogger.i("PPGStartReceiver ACTION_HEATR_RATE_START "+ppgtestCycle); - CoreService.getInstance().setHeartRateDetectAlarm(runtime.getPpgTestCycle()); + private BroadcastReceiver PPGStartReceiver = new BroadcastReceiver() { + public void onReceive(Context param1Context, Intent param1Intent) { + if (ACTION_HEATR_RATE_START.equals(param1Intent.getAction())) { + + //此消息来源于BroadCaset,收到开始测试的消息。 + //此时需要重置HeartRateDetect Timer + //倘若有 参数 PPGTestCycle,则根据这个数值进行设置 + int ppgtestCycle = param1Intent.getIntExtra("PPGTestCycle", -1); + if (ppgtestCycle > 0) { + Config.setPPGTestCycle(runtime.getContextProxy().context, ppgtestCycle); + runtime.setPpgTestCycle(Config.getPPGTestCycle(runtime.getContextProxy().context)); + ICLogger.i("get and set PPGTestCycle " + ppgtestCycle); + } + ICLogger.i("PPGStartReceiver ACTION_HEATR_RATE_START " + ppgtestCycle); + CoreService.getInstance().setHeartRateDetectAlarm(runtime.getPpgTestCycle()); // HeartRateManager.this.startPPG(); - } + } + } + }; + + public void regReceiver() { + //注册“ACTION_HEATR_RATE_START”的广播接收器,接收来自协议的设置广播 + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(ACTION_HEATR_RATE_START); + runtime.getContextProxy().context.registerReceiver(PPGStartReceiver, intentFilter); } - }; - public void regReceiver(){ - //注册“ACTION_HEATR_RATE_START”的广播接收器,接收来自协议的设置广播 - IntentFilter intentFilter = new IntentFilter(); - intentFilter.addAction(ACTION_HEATR_RATE_START); - runtime.getContextProxy().context.registerReceiver(PPGStartReceiver, intentFilter); - } - public void unRegReceiver(){ - runtime.getContextProxy().context.unregisterReceiver(PPGStartReceiver); - } + public void unRegReceiver() { + runtime.getContextProxy().context.unregisterReceiver(PPGStartReceiver); + } - public void onAlarmClock(Connection paramConnection, Runtime paramRuntime) {} + public void onAlarmClock(Connection paramConnection, Runtime paramRuntime) { + } - public void onAttach(Connection paramConnection, Runtime paramRuntime) { + public void onAttach(Connection paramConnection, Runtime paramRuntime) { // this.mSignalUtil = SimSignalUtil.getInstance((paramRuntime.getContextProxy()).context); - regReceiver(); - } + regReceiver(); + } - public void onDetach(Connection paramConnection, Runtime paramRuntime) { - unRegReceiver(); - } + public void onDetach(Connection paramConnection, Runtime paramRuntime) { + unRegReceiver(); + } - public boolean onUserRequest(Intent paramIntent, Connection paramConnection, final Runtime runtime) { + public boolean onUserRequest(Intent paramIntent, Connection paramConnection, final Runtime runtime) { // String str = paramIntent.getAction(); // if (ACTION_HEATR_RATE_START.equals(str)) { //// this.mSignalUtil = SimSignalUtil.getInstance((runtime.getContextProxy()).context); @@ -456,135 +454,133 @@ public class HeartRateManager extends AbstractInvokeHandlerService implements Se // } // startPPG(); // } - return false; - } - -public static void triggerPPGtest(){ - if(CoreService.getInstance()!=null) - { - if (CoreService.getInstance().getRuntime().Anti_off_flag==1) { - ICLogger.i("未佩戴,取消 triggerPPGtest!"); - return; + return false; + } + + public static void triggerPPGtest() { + if (CoreService.getInstance() != null) { + if (CoreService.getInstance().getRuntime().Anti_off_flag == 1) { + ICLogger.i("未佩戴,取消 triggerPPGtest!"); + return; + } + } + if (mHandler != null) mHandler.sendEmptyMessage(200); } - } - if (mHandler !=null) mHandler.sendEmptyMessage(200); -} - public static void stopPPGtest(){ - if (mHandler !=null) mHandler.sendEmptyMessage(300); - } + public static void stopPPGtest() { + if (mHandler != null) mHandler.sendEmptyMessage(300); + } - public boolean onUserRequest(Message message, Connection connection, final Runtime runtime) { + public boolean onUserRequest(Message message, Connection connection, final Runtime runtime) { - int i = 1; - switch (message.what) { - case MSG_WHAT_PPG: + int i = 1; + switch (message.what) { + case MSG_WHAT_PPG: - //接收UI测试后的结果,直接发送到服务器。 - Bundle bundle3 = message.getData(); - String ppg = bundle3.getString(key_ppg); - String bph = bundle3.getString(key_bph); - String bpl = bundle3.getString(key_bpl); - String spo2 = bundle3.getString(key_spo2); + //接收UI测试后的结果,直接发送到服务器。 + Bundle bundle3 = message.getData(); + String ppg = bundle3.getString(key_ppg); + String bph = bundle3.getString(key_bph); + String bpl = bundle3.getString(key_bpl); + String spo2 = bundle3.getString(key_spo2); - ICLogger.i("get MSG_WHAT_PPG ppg "+ppg + " , bph "+bph + " , bpl "+bpl + " , spo2 "+spo2); - if (ppg == null || bph == null || bpl==null ||ppg.isEmpty()||bph.isEmpty()||bpl.isEmpty()) { - ICLogger.i("MSG_WHAT_PPG Data is null or empty ! Skip!"); - callback(message.replyTo, Constants.RESULT_ERROR); + ICLogger.i("get MSG_WHAT_PPG ppg " + ppg + " , bph " + bph + " , bpl " + bpl + " , spo2 " + spo2); + if (ppg == null || bph == null || bpl == null || ppg.isEmpty() || bph.isEmpty() || bpl.isEmpty()) { + ICLogger.i("MSG_WHAT_PPG Data is null or empty ! Skip!"); + callback(message.replyTo, Constants.RESULT_ERROR); - return true; - } - if (spo2==null || - (spo2!=null && - ( (!Util.isNumeric(spo2.trim() )) || - (Util.isNumeric(spo2.trim() )&& Integer.parseInt(spo2.trim())<=0) - ) - ) - ) - { - - int randomint = randomOxygenValue(); - spo2=String.valueOf(randomint); - } - - - if(Runtime.practising==true){ - ICLogger.i("自由锻炼中,设置测量心率!"); - Runtime.healthInfo.setPPGECGData(ppg,bph,bpl,spo2); - - //因为心率和定位用时都比温度多,但是定位和心率不一定谁用时多,所以两个都需要检测是否结束 - if(Runtime.healthInfo.check_info_item_finished()){ - Runtime.healthInfo.appendBuffer(Runtime.healthInfo.getHealthInfoString()); - Runtime.healthInfo.reset(); - } - if(Runtime.healthInfo.getInfoCount()>=(30-1)){ - //超过30次发送数据给服务器 - ICLogger.i("发送数据给服务器 "+Runtime.healthInfo.getBufferData().length); - mHandler.post(new Runnable() { - @Override - public void run() { + return true; + } + if (spo2 == null || + (spo2 != null && + ((!Util.isNumeric(spo2.trim())) || + (Util.isNumeric(spo2.trim()) && Integer.parseInt(spo2.trim()) <= 0) + ) + ) + ) { + + int randomint = randomOxygenValue(); + spo2 = String.valueOf(randomint); + } + + + if (Runtime.practising == true) { + ICLogger.i("自由锻炼中,设置测量心率!"); + Runtime.healthInfo.setPPGECGData(ppg, bph, bpl, spo2); + + //因为心率和定位用时都比温度多,但是定位和心率不一定谁用时多,所以两个都需要检测是否结束 + if (Runtime.healthInfo.check_info_item_finished()) { + Runtime.healthInfo.appendBuffer(Runtime.healthInfo.getHealthInfoString()); + Runtime.healthInfo.reset(); + } + if (Runtime.healthInfo.getInfoCount() >= (30 - 1)) { + //超过30次发送数据给服务器 + ICLogger.i("发送数据给服务器 " + Runtime.healthInfo.getBufferData().length); + mHandler.post(new Runnable() { + @Override + public void run() { // ICHttpUtil.uploadData(Runtime.healthInfo.getBufferDataStr(),runtime,TimeUtil.getSystemTime2(),null); - Deliver.sendLocationMSG(protocolAPIHelper.getPRACTICE()); - //发送过后重置 - Runtime.healthInfo.resetBuffer(); - } - }); - - - } - }else { - try { - StringMessage PPGDATA = protocolAPIHelper.getPPG_ECG_MSG(Integer.parseInt(ppg), Integer.parseInt(bph), Integer.parseInt(bpl), Integer.parseInt(spo2), runtime); - if (PPGDATA == null) { - StringMessage ppgd = protocolAPIHelper.getPPG_MSG(Integer.parseInt(ppg), runtime); - StringMessage bloodd = protocolAPIHelper.getBlood_MSG(Integer.parseInt(bph), Integer.parseInt(bpl), runtime); - StringMessage oxd = protocolAPIHelper.getOxygen_MSG(Integer.parseInt(spo2), runtime); - Deliver.sendLocationMSG(ppgd); - Deliver.sendLocationMSG(bloodd); - Deliver.sendLocationMSG(oxd); - } else { - Deliver.sendLocationMSG(PPGDATA); - ICLogger.i("Send PPG " + PPGDATA.isFromCache()); - } - }catch (Exception e){ - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); - } + Deliver.sendLocationMSG(protocolAPIHelper.getPRACTICE()); + //发送过后重置 + Runtime.healthInfo.resetBuffer(); + } + }); + + + } + } else { + try { + StringMessage PPGDATA = protocolAPIHelper.getPPG_ECG_MSG(Integer.parseInt(ppg), Integer.parseInt(bph), Integer.parseInt(bpl), Integer.parseInt(spo2), runtime); + if (PPGDATA == null) { + StringMessage ppgd = protocolAPIHelper.getPPG_MSG(Integer.parseInt(ppg), runtime); + StringMessage bloodd = protocolAPIHelper.getBlood_MSG(Integer.parseInt(bph), Integer.parseInt(bpl), runtime); + StringMessage oxd = protocolAPIHelper.getOxygen_MSG(Integer.parseInt(spo2), runtime); + Deliver.sendLocationMSG(ppgd); + Deliver.sendLocationMSG(bloodd); + Deliver.sendLocationMSG(oxd); + } else { + Deliver.sendLocationMSG(PPGDATA); + ICLogger.i("Send PPG " + PPGDATA.isFromCache()); + } + } catch (Exception e) { + e.printStackTrace(); + ICLogger.e(e.getMessage(), e); + } + } + callback(message.replyTo, Constants.RESULT_OK); + + default: + break; } - callback(message.replyTo, Constants.RESULT_OK); - default: - break; + return true; } - return true; - } - - @Override - public void onSensorChanged(SensorEvent sensorEvent) { - float values[]=sensorEvent.values; - int length = values.length; - ICLogger.i( "onSensorChanged() is called "+length - +" PPG = "+values[0] - +", BPH = "+values[1] - +", BPL = "+values[2] - +", spo2 = "+values[3] - +" , Weared = "+values[4] - ); - PPG = (int)values[0];//调用底层函数保证状态更新。 - BPH = (int)values[1]; - BPL = (int)values[2]; - SPo2 = (int)values[3]; - isWared = ((int)values[4] == 2); - isPPGTesting = true;// (ICJniUtils.isPPGStarted() == 1); - doPPGtest(); - /*[0]---心率;[1]---血压高压;[2]---血压低压;[3]---血氧;[4]---佩戴检测(1--脱手,2--上手);*/ - } - - @Override - public void onAccuracyChanged(Sensor sensor, int i) { - ICLogger.i("onAccuracyChanged() is called "+sensor.getName()+" accuracy="+i); - } + @Override + public void onSensorChanged(SensorEvent sensorEvent) { + float values[] = sensorEvent.values; + int length = values.length; + ICLogger.i("onSensorChanged() is called " + length + + " PPG = " + values[0] + + ", BPH = " + values[1] + + ", BPL = " + values[2] + + ", spo2 = " + values[3] + + " , Weared = " + values[4] + ); + PPG = (int) values[0];//调用底层函数保证状态更新。 + BPH = (int) values[1]; + BPL = (int) values[2]; + SPo2 = (int) values[3]; + isWared = ((int) values[4] == 2); + isPPGTesting = true;// (ICJniUtils.isPPGStarted() == 1); + doPPGtest(); + /*[0]---心率;[1]---血压高压;[2]---血压低压;[3]---血氧;[4]---佩戴检测(1--脱手,2--上手);*/ + } + + @Override + public void onAccuracyChanged(Sensor sensor, int i) { + ICLogger.i("onAccuracyChanged() is called " + sensor.getName() + " accuracy=" + i); + } } diff --git a/app/src/main/java/com/enqualcomm/support/service/KeepAlive.java b/app/src/main/java/com/enqualcomm/support/service/KeepAlive.java index d6d21099..96deeb5a 100644 --- a/app/src/main/java/com/enqualcomm/support/service/KeepAlive.java +++ b/app/src/main/java/com/enqualcomm/support/service/KeepAlive.java @@ -5,25 +5,23 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Handler; -import android.support.annotation.Keep; +import android.os.HandlerThread; +import android.util.Log; -//import com.eiot.watch_lib.LauncherCtrl; import com.enqualcomm.support.Config; import com.enqualcomm.support.CoreService; import com.enqualcomm.support.LocationClient; -import com.enqualcomm.support.bean.EventLooperHandlerThread; -import com.enqualcomm.support.utils.Util; -import com.ic.protocols.protocolAPIHelper; +import com.enqualcomm.support.bean.Runtime; import com.enqualcomm.support.bean.StringMessage; import com.enqualcomm.support.service.base.AbstractConnectionService; import com.enqualcomm.support.utils.AlarmWakeUp; import com.enqualcomm.support.utils.Connection; import com.enqualcomm.support.utils.DeviceInfoUtil; import com.enqualcomm.support.utils.ICLogger; -import com.enqualcomm.support.utils.NettyConnection; import com.enqualcomm.support.utils.NetworkObservable; -import com.enqualcomm.support.bean.Runtime; import com.enqualcomm.support.utils.SimSignalUtil; +import com.enqualcomm.support.utils.Util; +import com.ic.protocols.protocolAPIHelper; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -31,151 +29,156 @@ import java.util.concurrent.TimeUnit; import rx.Subscription; import rx.functions.Action1; +//import com.eiot.watch_lib.LauncherCtrl; + public class KeepAlive extends AbstractConnectionService { - private static final long HEARTBEAT_TIMEOUT = 660000L; - private static String TAG = KeepAlive.class.getSimpleName(); - public static boolean connectionError = false; - - public static boolean isConnected = false; - - private static boolean isInSleepMode = false; - - private static int mDisconnectByServerCount=0; - Connection connection; - - Context mContext; - - NetworkObservable mNetworkObservable = new NetworkObservable(); - - Runtime mRuntime; - - private ShutDownReceiver mShutDownReceiver; - - private Subscription mSubscription; - - private int reConnectionNumber; - -//服务器收到AP03 会返回BP03,如果PB03 规定时间没收到,则认为发送心跳失败,需要重发, - private boolean is_heartBeat_send_success=false; - private boolean is_login_send_success=false; - private boolean is_ping_send_success=false; - - //如果重试5次还没有连接上,则需要重新断开连接重新连接服务器。 - private int hearBeatResendCount=0; - private int MaxHeartbeatResendTime=6; - //每次retry发送心跳的间隔为20秒 - private int heartBeatRetryTimeout=20; - - private Handler mHandler; - //监测 心跳服务器响应的timer - private ScheduledThreadPoolExecutor scheduled = null; - private Runnable CheckSrvResponseTimerTask=new Runnable() { - @Override - public void run() { - checkSrvResponse(); - } - }; - - public KeepAlive(){ - mHandler = new Handler(EventLooperHandlerThread.makeLooper(KeepAlive.class.getSimpleName())); - } - public void startResponseCheckTimer(){ - //联网再重试连接服务器 - if (SimSignalUtil.checkNet(mRuntime.getContextProxy().context) ) { - stopResponseCheckTimer(); - if (scheduled == null) { - scheduled = new ScheduledThreadPoolExecutor(10); - } - //开始检测重新计数 - hearBeatResendCount=0; - //如果开始进行连接重 - // { - // 试,证明网络断开的,那么KeepAlive也需要重连(心跳包) - if (scheduled != null) { - scheduled.scheduleAtFixedRate(CheckSrvResponseTimerTask , heartBeatRetryTimeout*1000, heartBeatRetryTimeout*1000,TimeUnit.MILLISECONDS); //delay 3秒先检查一次,然后每5秒重试一次 - } + private static final long HEARTBEAT_TIMEOUT = 660000L; + private static String TAG = KeepAlive.class.getSimpleName(); + public static boolean connectionError = false; + + public static boolean isConnected = false; + + private static boolean isInSleepMode = false; + + private static int mDisconnectByServerCount = 0; + Connection connection; + + Context mContext; + + NetworkObservable mNetworkObservable = new NetworkObservable(); + + Runtime mRuntime; + + private ShutDownReceiver mShutDownReceiver; + + private Subscription mSubscription; + + private int reConnectionNumber; + + //服务器收到AP03 会返回BP03,如果PB03 规定时间没收到,则认为发送心跳失败,需要重发, + private boolean is_heartBeat_send_success = false; + private boolean is_login_send_success = false; + private boolean is_ping_send_success = false; + + //如果重试5次还没有连接上,则需要重新断开连接重新连接服务器。 + private int hearBeatResendCount = 0; + private int MaxHeartbeatResendTime = 6; + //每次retry发送心跳的间隔为20秒 + private int heartBeatRetryTimeout = 20; + + private Handler mHandler; + //监测 心跳服务器响应的timer + private ScheduledThreadPoolExecutor scheduled = null; + private Runnable CheckSrvResponseTimerTask = new Runnable() { + @Override + public void run() { + checkSrvResponse(); + } + }; + + public KeepAlive() { + HandlerThread handlerThread = new HandlerThread("ic:keep-alive-handler-thread"); + handlerThread.start(); + mHandler = new Handler(handlerThread.getLooper()); } - } - private Runnable msendMsgAfterHeartbeat=new Runnable() { - @Override - public void run() { - connection.send(protocolAPIHelper.getBindingMSG(mRuntime)); - if (Config.protocol_no==Config.PROTOCOL_FZD){ - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - connection.send(protocolAPIHelper.getSyncTimeMSG(mRuntime)); - } - },5000); - } + public void startResponseCheckTimer() { + //联网再重试连接服务器 + if (SimSignalUtil.checkNet(mRuntime.getContextProxy().context)) { + stopResponseCheckTimer(); + if (scheduled == null) { + scheduled = new ScheduledThreadPoolExecutor(10); + } + //开始检测重新计数 + hearBeatResendCount = 0; + //如果开始进行连接重 + // { + // 试,证明网络断开的,那么KeepAlive也需要重连(心跳包) + if (scheduled != null) { + scheduled.scheduleAtFixedRate(CheckSrvResponseTimerTask, heartBeatRetryTimeout * 1000, heartBeatRetryTimeout * 1000, TimeUnit.MILLISECONDS); //delay 3秒先检查一次,然后每5秒重试一次 + } + } } - }; - public void checkSrvResponse(){ + private final Runnable mSendMsgAfterHeartbeat = new Runnable() { + @Override + public void run() { + connection.send(protocolAPIHelper.getBindingMSG(mRuntime)); + if (Config.protocol_no == Config.PROTOCOL_FZD) { + mHandler.postDelayed(new Runnable() { + @Override + public void run() { + Log.d(TAG, "keep alive .... " + Thread.currentThread().getName()); + connection.send(protocolAPIHelper.getSyncTimeMSG(mRuntime)); + } + }, 5000); + } + } + }; - if (SimSignalUtil.checkNet(mRuntime.getContextProxy().context) ) { + public void checkSrvResponse() { - //如果收到服务器响应BP03,则停止重试,否则 继续发送AP03 心跳包,且继续检查响应 - if (this.is_heartBeat_send_success ) { - ICLogger.i("checkSrvResponse 成功,停止检测!"); - stopResponseCheckTimer(); - }else{ - //心跳发送失败,则认为已经和服务器断开 - mRuntime.setServerProtocolConnected(false); - //如果重试次数大于等于 最大重试次数,则停止重试,等下次心跳时间再行尝试。 - if (hearBeatResendCount >= MaxHeartbeatResendTime){ - ICLogger.i("checkSrvResponse "+hearBeatResendCount+"次 >= "+MaxHeartbeatResendTime+" , 则停止重试,等下次心跳时间再行尝试!"); - stopResponseCheckTimer(); - }else { - //重新发送AP03心跳包 - ICLogger.i("checkSrvResponse 失败,第" + hearBeatResendCount + "次,重新发送AP03心跳包!"); - //心跳开始发送的时候,先重置response检测标志 - is_heartBeat_send_success = false; - hearBeatResendCount++; - //更新系统的IMEI - boolean ret=DeviceInfoUtil.updateImei(mRuntime); - ICLogger.i("Update IMEI "+ret); - - //只有曾经login成功过,且上一次成功时间超过15分钟,才会自主断开网络。 - long currenttime=System.currentTimeMillis(); - ICLogger.i("只有曾经login或者心跳发送成功过,且上一次成功时间超过15分钟,才会自主断开网络! last longin time "+ - mRuntime.lastLoginSuccessTime+" ms from last login time "+(currenttime-mRuntime.lastLoginSuccessTime)); - if ((mRuntime.lastLoginSuccessTime>0) && ((currenttime- mRuntime.lastLoginSuccessTime) > 15 * 60 * 1000)) { - ICLogger.i("超时自主断开网络!"); - CoreService.getInstance().disconnect_server(); - }else { - if (is_login_send_success) { - connection.send(protocolAPIHelper.getHeartbeatMSG(mRuntime)); + if (SimSignalUtil.checkNet(mRuntime.getContextProxy().context)) { + + //如果收到服务器响应BP03,则停止重试,否则 继续发送AP03 心跳包,且继续检查响应 + if (this.is_heartBeat_send_success) { + ICLogger.i("checkSrvResponse 成功,停止检测!"); + stopResponseCheckTimer(); } else { - connection.send(protocolAPIHelper.getLoginMSG(mRuntime)); + //心跳发送失败,则认为已经和服务器断开 + mRuntime.setServerProtocolConnected(false); + //如果重试次数大于等于 最大重试次数,则停止重试,等下次心跳时间再行尝试。 + if (hearBeatResendCount >= MaxHeartbeatResendTime) { + ICLogger.i("checkSrvResponse " + hearBeatResendCount + "次 >= " + MaxHeartbeatResendTime + " , 则停止重试,等下次心跳时间再行尝试!"); + stopResponseCheckTimer(); + } else { + //重新发送AP03心跳包 + ICLogger.i("checkSrvResponse 失败,第" + hearBeatResendCount + "次,重新发送AP03心跳包!"); + //心跳开始发送的时候,先重置response检测标志 + is_heartBeat_send_success = false; + hearBeatResendCount++; + //更新系统的IMEI + boolean ret = DeviceInfoUtil.updateImei(mRuntime); + ICLogger.i("Update IMEI " + ret); + + //只有曾经login成功过,且上一次成功时间超过15分钟,才会自主断开网络。 + long currenttime = System.currentTimeMillis(); + ICLogger.i("只有曾经login或者心跳发送成功过,且上一次成功时间超过15分钟,才会自主断开网络! last longin time " + + mRuntime.lastLoginSuccessTime + " ms from last login time " + (currenttime - mRuntime.lastLoginSuccessTime)); + if ((mRuntime.lastLoginSuccessTime > 0) && ((currenttime - mRuntime.lastLoginSuccessTime) > 15 * 60 * 1000)) { + ICLogger.i("超时自主断开网络!"); + CoreService.getInstance().disconnect_server(); + } else { + if (is_login_send_success) { + connection.send(protocolAPIHelper.getHeartbeatMSG(mRuntime)); + } else { + connection.send(protocolAPIHelper.getLoginMSG(mRuntime)); + } + } + } } - } - } - } - }else{ - //没有网络就不用重新尝试连接网络了。网络连接后再重新尝试联网 - ICLogger.i("checkSrvResponse stop , 没有网络就不用重新尝试检测服务器响应和重新发送心跳包了!"); + } else { + //没有网络就不用重新尝试连接网络了。网络连接后再重新尝试联网 + ICLogger.i("checkSrvResponse stop , 没有网络就不用重新尝试检测服务器响应和重新发送心跳包了!"); - stopResponseCheckTimer(); + stopResponseCheckTimer(); + } } - } - - public void stopResponseCheckTimer(){ - if (scheduled !=null){ - scheduled.shutdownNow(); + public void stopResponseCheckTimer() { + if (scheduled != null) { + scheduled.shutdownNow(); // Runnable tmp= scheduled.getQueue().poll(); // while (tmp!=null){ // scheduled.remove(tmp); // } - scheduled.setContinueExistingPeriodicTasksAfterShutdownPolicy(true); - scheduled.setExecuteExistingDelayedTasksAfterShutdownPolicy(false); + scheduled.setContinueExistingPeriodicTasksAfterShutdownPolicy(true); + scheduled.setExecuteExistingDelayedTasksAfterShutdownPolicy(false); // scheduled.setRemoveOnCancelPolicy(true); - ICLogger.i("Wait for thread pool getContinueExistingPeriodicTasksAfterShutdownPolicy " +scheduled.getContinueExistingPeriodicTasksAfterShutdownPolicy()+ - "\ngetExecuteExistingDelayedTasksAfterShutdownPolicy "+scheduled.getExecuteExistingDelayedTasksAfterShutdownPolicy());//+ + ICLogger.i("Wait for thread pool getContinueExistingPeriodicTasksAfterShutdownPolicy " + scheduled.getContinueExistingPeriodicTasksAfterShutdownPolicy() + + "\ngetExecuteExistingDelayedTasksAfterShutdownPolicy " + scheduled.getExecuteExistingDelayedTasksAfterShutdownPolicy());//+ // "\ngetRemoveOnCancelPolicy "+scheduled.getRemoveOnCancelPolicy()); // while(!scheduled.isTerminated()) // { @@ -190,215 +193,215 @@ public class KeepAlive extends AbstractConnectionService { // e.printStackTrace(); // } // } - scheduled.purge(); - scheduled = null; + scheduled.purge(); + scheduled = null; + } + + ICLogger.i(" stopResponseCheckTimer Done "); } - ICLogger.i(" stopResponseCheckTimer Done "); - } - - - - public void onAlarmClock(Connection paramConnection, Runtime paramRuntime) { - - ICLogger.i("onAlarmClock"); - - } - - public void onAttach(final Connection connection, final Runtime runtime) { - this.mRuntime = runtime; - this.mContext = (runtime.getContextProxy()).context; - this.mNetworkObservable.register(this.mContext); - this.connection = connection; - this.mSubscription = this.mNetworkObservable.onChange().subscribe(new Action1() { - private boolean first; - - public void call(Integer param1Integer) { - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("yls aBoolean="); - stringBuilder.append(param1Integer); - stringBuilder.append(",,first="); - stringBuilder.append(this.first); - ICLogger.i(stringBuilder.toString()); - if (param1Integer.intValue() > 1) { - //返回值大于0 证明是网络连接成功,开始重连服务器 - if (this.first) { - this.first = false; - return; - } - ICLogger.i("数据网络连接成功,重新连接服务器。"); - CoreService.getInstance().ReConnectToServer(); - } - } + + public void onAlarmClock(Connection paramConnection, Runtime paramRuntime) { + + ICLogger.i("onAlarmClock"); + + } + + public void onAttach(final Connection connection, final Runtime runtime) { + this.mRuntime = runtime; + this.mContext = (runtime.getContextProxy()).context; + this.mNetworkObservable.register(this.mContext); + this.connection = connection; + this.mSubscription = this.mNetworkObservable.onChange().subscribe(new Action1() { + private boolean first; + + public void call(Integer param1Integer) { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("yls aBoolean="); + stringBuilder.append(param1Integer); + stringBuilder.append(",,first="); + stringBuilder.append(this.first); + ICLogger.i(stringBuilder.toString()); + if (param1Integer.intValue() > 1) { + //返回值大于0 证明是网络连接成功,开始重连服务器 + if (this.first) { + this.first = false; + return; + } + ICLogger.i("数据网络连接成功,重新连接服务器。"); + CoreService.getInstance().ReConnectToServer(); + } + } }); - IntentFilter intentFilter = new IntentFilter(); - intentFilter.addAction("android.intent.action.ACTION_SHUTDOWN"); - this.mShutDownReceiver = new ShutDownReceiver(); - this.mContext.registerReceiver(this.mShutDownReceiver, intentFilter); - } + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction("android.intent.action.ACTION_SHUTDOWN"); + this.mShutDownReceiver = new ShutDownReceiver(); + this.mContext.registerReceiver(this.mShutDownReceiver, intentFilter); + } @Override public boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime, String ErrorMsg) { // if (isConnected) - //如果KeepAlive被关闭说明网络有问题,因此开启重试联网机制 - stopResponseCheckTimer(); + //如果KeepAlive被关闭说明网络有问题,因此开启重试联网机制 + stopResponseCheckTimer(); - if (false) { - if (ErrorMsg.equals("DIS_CONNECT_BY_SERVERSIDE")) { - if (mDisconnectByServerCount < 3) {//被服务器拒绝连续拒绝3次后才停止重试 - CoreService.getInstance().startConnectionRetryTimer(); + if (false) { + if (ErrorMsg.equals("DIS_CONNECT_BY_SERVERSIDE")) { + if (mDisconnectByServerCount < 3) {//被服务器拒绝连续拒绝3次后才停止重试 + CoreService.getInstance().startConnectionRetryTimer(); + } else { + ICLogger.i("服务器主动断开超过连续3次,IMEI不对或者命令格式错误!停止重试连接服务器,等待重启或者下一次网络重连。"); + } + mDisconnectByServerCount++; + } else { + mDisconnectByServerCount = 0; //如果不是被服务器拒绝,则重置 计数。 + CoreService.getInstance().startConnectionRetryTimer(); + } } else { - ICLogger.i("服务器主动断开超过连续3次,IMEI不对或者命令格式错误!停止重试连接服务器,等待重启或者下一次网络重连。"); + CoreService.getInstance().startConnectionRetryTimer(); } - mDisconnectByServerCount++; - } else { - mDisconnectByServerCount = 0; //如果不是被服务器拒绝,则重置 计数。 - CoreService.getInstance().startConnectionRetryTimer(); - } - }else{ - CoreService.getInstance().startConnectionRetryTimer(); - } - connectionError = true; - isConnected = false; - paramRuntime.setServerProtocolConnected(false); - - is_ping_send_success=false; - is_login_send_success=false; - is_heartBeat_send_success=false; - - //发送广播 服务器断开链接 - paramRuntime.getContextProxy().sendBroadcastServerConnectionChanged(false); - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("onConnectionClose="); - stringBuilder.append(",set KeepAlive isConnected = false"); - ICLogger.i(stringBuilder.toString()); + connectionError = true; + isConnected = false; + paramRuntime.setServerProtocolConnected(false); + + is_ping_send_success = false; + is_login_send_success = false; + is_heartBeat_send_success = false; + + //发送广播 服务器断开链接 + paramRuntime.getContextProxy().sendBroadcastServerConnectionChanged(false); + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("onConnectionClose="); + stringBuilder.append(",set KeepAlive isConnected = false"); + ICLogger.i(stringBuilder.toString()); // LauncherCtrl.getInstance(this.mContext).setStatusBarIcon("server_connected", STATUS_BAR_STATE_SERVER_CONNECTED_OFF); //网络断开后,重连成功后发送一个定位 // CoreService.needLocateInAfterHeartBeat=true; - return false; - } + return false; + } + public boolean onConnectionOpen(Connection paramConnection, Runtime paramRuntime) { - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("onConnectionOpen connectionError="); - stringBuilder.append(connectionError); - stringBuilder.append(",sInSleepMode ="); - stringBuilder.append(isInSleepMode); - stringBuilder.append(",set KeepAlive isConnected = true"); - ICLogger.i(stringBuilder.toString()); + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("onConnectionOpen connectionError="); + stringBuilder.append(connectionError); + stringBuilder.append(",sInSleepMode ="); + stringBuilder.append(isInSleepMode); + stringBuilder.append(",set KeepAlive isConnected = true"); + ICLogger.i(stringBuilder.toString()); // if (!connectionError) { - connectionError = false; + connectionError = false; - //更新系统的IMEI - boolean ret=DeviceInfoUtil.updateImei(paramRuntime); - ICLogger.i("Update IMEI "+ret); - //发送登录包 - is_login_send_success=false; + //更新系统的IMEI + boolean ret = DeviceInfoUtil.updateImei(paramRuntime); + ICLogger.i("Update IMEI " + ret); + //发送登录包 + is_login_send_success = false; - isConnected = true; + isConnected = true; - Util.mSleep(1000); + Util.mSleep(1000); - connection.send(protocolAPIHelper.getLoginMSG(paramRuntime)); + connection.send(protocolAPIHelper.getLoginMSG(paramRuntime)); // this.firstReConnected = true; // this.idleTimeMillis = SystemClock.elapsedRealtime(); - return false; - } - - public void onDetach(Connection paramConnection, Runtime paramRuntime) { - if (this.mSubscription != null && !this.mSubscription.isUnsubscribed()) - this.mSubscription.unsubscribe(); - this.mNetworkObservable.unregister(this.mContext); - this.mContext.unregisterReceiver(this.mShutDownReceiver); - } - - public void onHeartAlarm(Connection paramNettyConnection, Runtime paramRuntime) { - ICLogger.i("onHeartAlarm"); - - stopResponseCheckTimer(); - //心跳开始发送的时候,先重置response检测标志 - is_heartBeat_send_success=false; - - //这个是正常心跳包,暂时不能认为服务器连接时失败的,所以正常发送检测。 - //发送心跳包 - connection.send(protocolAPIHelper.getHeartbeatMSG(paramRuntime)); + return false; + } + + public void onDetach(Connection paramConnection, Runtime paramRuntime) { + if (this.mSubscription != null && !this.mSubscription.isUnsubscribed()) + this.mSubscription.unsubscribe(); + this.mNetworkObservable.unregister(this.mContext); + this.mContext.unregisterReceiver(this.mShutDownReceiver); + } + + public void onHeartAlarm(Connection paramNettyConnection, Runtime paramRuntime) { + ICLogger.i("onHeartAlarm"); + + stopResponseCheckTimer(); + //心跳开始发送的时候,先重置response检测标志 + is_heartBeat_send_success = false; + + //这个是正常心跳包,暂时不能认为服务器连接时失败的,所以正常发送检测。 + //发送心跳包 + connection.send(protocolAPIHelper.getHeartbeatMSG(paramRuntime)); //发送完心跳后,开始检查服务器响应 - startResponseCheckTimer(); + startResponseCheckTimer(); - } + } - public boolean onReceive(StringMessage paramStringMessage, Connection paramConnection, Runtime paramRuntime) { + public boolean onReceive(StringMessage paramStringMessage, Connection paramConnection, Runtime paramRuntime) { // this.idleTimeMillis = SystemClock.elapsedRealtime(); - if ("heartbeat".equals(paramStringMessage.cmd())) { - AlarmWakeUp.isNeedWakeUpAlarm(paramRuntime); + if ("heartbeat".equals(paramStringMessage.cmd())) { + AlarmWakeUp.isNeedWakeUpAlarm(paramRuntime); // 收到心跳才认为是已经连接了服务器 - paramRuntime.setServerProtocolConnected(true); + paramRuntime.setServerProtocolConnected(true); // isConnected = true; - is_heartBeat_send_success=true; - paramRuntime.lastLoginSuccessTime=System.currentTimeMillis(); + is_heartBeat_send_success = true; + paramRuntime.lastLoginSuccessTime = System.currentTimeMillis(); // LauncherCtrl.getInstance(this.mContext).setStatusBarIcon("server_connected", STATUS_BAR_STATE_SERVER_CONNECTED_ON); // Deliver.triggerSendThread(); //链接上就尝试清除 buffer中的数据 - if(!is_ping_send_success) { - //心跳结束后执行,且只在重新登陆后执行一次 - mHandler.post(msendMsgAfterHeartbeat); - is_ping_send_success=true; - } - if (CoreService.needLocateInAfterHeartBeat==true){ - //第一次启动或者系统Close后重连的时候,重置LocationCycle - CoreService.needLocateInAfterHeartBeat=false; - LocationClient.setForceLocation(1); - CoreService.getInstance().setLocationAlarm(paramRuntime.getLocationInstance().getWorkingMod()); - } - }else if (paramStringMessage.cmd().equals("login")) { - //广播服务器连接成功的消息 - paramRuntime.getContextProxy().sendBroadcastServerConnectionChanged(true); - //登录包收到就停止重链接服务器 - CoreService.getInstance().stopConnectionRetryTimer(); - is_login_send_success=true; - //收到登录包反馈后再发送心跳 - - //心跳开始发送的时候,先重置response检测标志 - is_heartBeat_send_success=false; - is_ping_send_success=false; - paramRuntime.lastLoginSuccessTime=System.currentTimeMillis(); - //发送心跳包 - - //这时重新连接服务器才进行的连接,理论上close已经设置false,此次可以认为协议定然断开,所以设置为false作为双重保险。 - mRuntime.setServerProtocolConnected(false); - connection.send(protocolAPIHelper.getHeartbeatMSG(paramRuntime)); - //发送完心跳后,开始检查服务器响应 - - startResponseCheckTimer(); + if (!is_ping_send_success) { + //心跳结束后执行,且只在重新登陆后执行一次 + mHandler.post(mSendMsgAfterHeartbeat); + is_ping_send_success = true; + } + if (CoreService.needLocateInAfterHeartBeat == true) { + //第一次启动或者系统Close后重连的时候,重置LocationCycle + CoreService.needLocateInAfterHeartBeat = false; + LocationClient.setForceLocation(1); + CoreService.getInstance().setLocationAlarm(paramRuntime.getLocationInstance().getWorkingMod()); + } + } else if (paramStringMessage.cmd().equals("login")) { + //广播服务器连接成功的消息 + paramRuntime.getContextProxy().sendBroadcastServerConnectionChanged(true); + //登录包收到就停止重链接服务器 + CoreService.getInstance().stopConnectionRetryTimer(); + is_login_send_success = true; + //收到登录包反馈后再发送心跳 + + //心跳开始发送的时候,先重置response检测标志 + is_heartBeat_send_success = false; + is_ping_send_success = false; + paramRuntime.lastLoginSuccessTime = System.currentTimeMillis(); + //发送心跳包 + //这时重新连接服务器才进行的连接,理论上close已经设置false,此次可以认为协议定然断开,所以设置为false作为双重保险。 + mRuntime.setServerProtocolConnected(false); + connection.send(protocolAPIHelper.getHeartbeatMSG(paramRuntime)); + //发送完心跳后,开始检查服务器响应 + startResponseCheckTimer(); + + + } + return false; } - return false; - } - - - public void setSleepMode(boolean paramBoolean) { - isInSleepMode = paramBoolean; - } - - class ShutDownReceiver extends BroadcastReceiver { - public void onReceive(Context param1Context, Intent param1Intent) { - boolean bool = param1Intent.getBooleanExtra("reboot", false); - ICLogger.i("Shutdown Received! reboot="+bool); - if (!bool && !KeepAlive.this.mRuntime.isShutdown()){ - /*电量低,不是重启,且不是服务器让关闭的*/ - KeepAlive.this.mRuntime.setAlarmType(Runtime.AlarmType.ALARM_POWER_OFF); - ICLogger.i("triggerSOSLocationProcess "); - LocationClient.getInstance().triggerSOSLocationProcess(); + + + public void setSleepMode(boolean paramBoolean) { + isInSleepMode = paramBoolean; + } + + class ShutDownReceiver extends BroadcastReceiver { + public void onReceive(Context param1Context, Intent param1Intent) { + boolean bool = param1Intent.getBooleanExtra("reboot", false); + ICLogger.i("Shutdown Received! reboot=" + bool); + if (!bool && !KeepAlive.this.mRuntime.isShutdown()) { + /*电量低,不是重启,且不是服务器让关闭的*/ + KeepAlive.this.mRuntime.setAlarmType(Runtime.AlarmType.ALARM_POWER_OFF); + ICLogger.i("triggerSOSLocationProcess "); + LocationClient.getInstance().triggerSOSLocationProcess(); // Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(KeepAlive.this.mRuntime)); - ICLogger.i("Shutdown Received! send AP10 !"); - } + ICLogger.i("Shutdown Received! send AP10 !"); + } + } } - } } diff --git a/app/src/main/java/com/enqualcomm/support/service/SilentManager.java b/app/src/main/java/com/enqualcomm/support/service/SilentManager.java index 3e29f437..ec325288 100644 --- a/app/src/main/java/com/enqualcomm/support/service/SilentManager.java +++ b/app/src/main/java/com/enqualcomm/support/service/SilentManager.java @@ -3,7 +3,6 @@ package com.enqualcomm.support.service; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; -import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; @@ -14,13 +13,11 @@ import android.os.Handler; import android.os.Message; import android.os.Messenger; import android.telephony.PhoneStateListener; -import android.telephony.PreciseCallState; import android.telephony.TelephonyManager; import com.enqualcomm.support.Config; import com.enqualcomm.support.CoreService; import com.enqualcomm.support.ICContentProvider; -import com.enqualcomm.support.MainActivity; import com.enqualcomm.support.bean.Alarm; import com.enqualcomm.support.bean.Antioff; import com.enqualcomm.support.bean.EventLooperHandlerThread; @@ -28,7 +25,6 @@ import com.enqualcomm.support.bean.NoticeContent; import com.enqualcomm.support.bean.Runtime; import com.enqualcomm.support.bean.Silent; import com.enqualcomm.support.bean.StheartRate; - import com.enqualcomm.support.service.base.AbstractInvokeHandlerService; import com.enqualcomm.support.utils.AlarmHelper; import com.enqualcomm.support.utils.Connection; @@ -45,335 +41,330 @@ import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.Iterator; -import java.util.concurrent.TimeUnit; -import static android.telephony.TelephonyManager.ACTION_PHONE_STATE_CHANGED; import static android.telephony.TelephonyManager.CALL_STATE_OFFHOOK; import static android.telephony.TelephonyManager.CALL_STATE_RINGING; import static com.enqualcomm.support.Constants.ACTION_ALARM_ALARM_CHANGE; import static com.enqualcomm.support.Constants.ACTION_ANTIOFF_ALARM_CHANGE; import static com.enqualcomm.support.Constants.ACTION_CARE_ALARM; import static com.enqualcomm.support.Constants.ACTION_CLOSE_UNREAD_MSG; -import static com.enqualcomm.support.Constants.ACTION_HEATR_RATE_START; import static com.enqualcomm.support.Constants.ACTION_NOTICE_ALARM_CHANGE; import static com.enqualcomm.support.Constants.OTHER_ALARM_END; import static com.enqualcomm.support.Constants.OTHER_ALARM_START; -import static com.enqualcomm.support.Constants.SERVICE_CLS_NAME; -import static com.enqualcomm.support.Constants.SERVICE_PKG_NAME; public class SilentManager extends AbstractInvokeHandlerService { - private static final long ONE_WEEK = 604800000L; - private static final long ONE_DAY = 86400000L; - - private ArrayList alarms; - private boolean haveHandSilence; - private boolean isCalling; - AlarmManager mAlarmManager; - private SilentManager.AlramReceiver mAlramReceiver; - Connection mConnection; - - private static Handler mHandler; - static{ - mHandler = new Handler(EventLooperHandlerThread.makeLooper(SilentManager.class.getSimpleName())); - } - ContentObserver mContentObserver = new ContentObserver(mHandler) { - public void onChange(boolean var1) { - ICLogger.i("静默有变化"); - SilentManager.this.silentList = SilentManager.this.querySilent(); - SilentManager.this.getSilentListStartAndEndTime(); - SilentManager.this.handleSilent(mRuntime, true); - } - }; - private Context mContext; - private DBHelper mDbHelper; - private boolean mInSilent; - private String mInterval; - private boolean mIsNeedAntioff; - private boolean mIsStheartRate; - private MissedCallContentObserver mMissedCallContentObserver; - Runtime mRuntime; - private int mStheartRateInterval; - private int mTodayWeek; - private boolean mValue_isSilence; - - public static final int PRECISE_CALL_STATE_NOT_VALID = -1; - public static final int PRECISE_CALL_STATE_IDLE = 0; //空闲 - public static final int PRECISE_CALL_STATE_ACTIVE = 1; //正在通话 - public static final int PRECISE_CALL_STATE_HOLDING = 2; //通话挂起 - public static final int PRECISE_CALL_STATE_DIALING = 3; //拨号开始 - public static final int PRECISE_CALL_STATE_ALERTING = 4; //正在呼出 - public static final int PRECISE_CALL_STATE_INCOMING = 5; //对方来电 - public static final int PRECISE_CALL_STATE_WAITING = 6; //第三方来电等待 - public static final int PRECISE_CALL_STATE_DISCONNECTED = 7; //挂断完成 - public static final int PRECISE_CALL_STATE_DISCONNECTING = 8; //正在挂断 - - private static SilentManager mSilentManger=null; - - public static SilentManager getInstance(){ - if (mSilentManger==null) - mSilentManger=new SilentManager(); - return mSilentManger; - } - private PhoneStateListener phoneStateListener = new PhoneStateListener() { - public void onCallStateChanged(int state, String incomingNumber) { - super.onCallStateChanged(state, incomingNumber); - - ICLogger.i("========onCallStateChanged state "+state+", incomingNumber "+incomingNumber); - switch(state) { - case PRECISE_CALL_STATE_DISCONNECTING: //挂电话 - case PRECISE_CALL_STATE_DISCONNECTED: //挂电话 - isCalling = false; + private static final long ONE_WEEK = 604800000L; + private static final long ONE_DAY = 86400000L; + + private ArrayList alarms; + private boolean haveHandSilence; + private boolean isCalling; + AlarmManager mAlarmManager; + private SilentManager.AlramReceiver mAlramReceiver; + Connection mConnection; + + private static Handler mHandler; + + static { + mHandler = new Handler(EventLooperHandlerThread.getInstance().makeLooper()); + } + + ContentObserver mContentObserver = new ContentObserver(mHandler) { + public void onChange(boolean var1) { + ICLogger.i("静默有变化"); + SilentManager.this.silentList = SilentManager.this.querySilent(); + SilentManager.this.getSilentListStartAndEndTime(); + SilentManager.this.handleSilent(mRuntime, true); + } + }; + private Context mContext; + private DBHelper mDbHelper; + private boolean mInSilent; + private String mInterval; + private boolean mIsNeedAntioff; + private boolean mIsStheartRate; + private MissedCallContentObserver mMissedCallContentObserver; + Runtime mRuntime; + private int mStheartRateInterval; + private int mTodayWeek; + private boolean mValue_isSilence; + + public static final int PRECISE_CALL_STATE_NOT_VALID = -1; + public static final int PRECISE_CALL_STATE_IDLE = 0; //空闲 + public static final int PRECISE_CALL_STATE_ACTIVE = 1; //正在通话 + public static final int PRECISE_CALL_STATE_HOLDING = 2; //通话挂起 + public static final int PRECISE_CALL_STATE_DIALING = 3; //拨号开始 + public static final int PRECISE_CALL_STATE_ALERTING = 4; //正在呼出 + public static final int PRECISE_CALL_STATE_INCOMING = 5; //对方来电 + public static final int PRECISE_CALL_STATE_WAITING = 6; //第三方来电等待 + public static final int PRECISE_CALL_STATE_DISCONNECTED = 7; //挂断完成 + public static final int PRECISE_CALL_STATE_DISCONNECTING = 8; //正在挂断 + + private static SilentManager mSilentManger = null; + + public static SilentManager getInstance() { + if (mSilentManger == null) + mSilentManger = new SilentManager(); + return mSilentManger; + } + + private PhoneStateListener phoneStateListener = new PhoneStateListener() { + public void onCallStateChanged(int state, String incomingNumber) { + super.onCallStateChanged(state, incomingNumber); + + ICLogger.i("========onCallStateChanged state " + state + ", incomingNumber " + incomingNumber); + switch (state) { + case PRECISE_CALL_STATE_DISCONNECTING: //挂电话 + case PRECISE_CALL_STATE_DISCONNECTED: //挂电话 + isCalling = false; // if (SilentManager.this.haveHandSilence) { // SilentManager.this.handSilence(SilentManager.this.mContext, SilentManager.this.mValue_isSilence); // } - if(ICAudioManager.needMute==true) - { + if (ICAudioManager.needMute == true) { // ICAudioManager.restoreVolumn(mContext); //2秒后恢复音量 - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - ICAudioManager.restoreVolumn(mContext); //2秒后恢复音量 - ICAudioManager.needMute=false; - } - },2000); - } - ICLogger.i("========Hung up!"); - break; - case PRECISE_CALL_STATE_INCOMING: //来电 - case PRECISE_CALL_STATE_ALERTING: - case PRECISE_CALL_STATE_DIALING: - isCalling = true; - Intent var3 = new Intent(); - var3.setAction(ACTION_CLOSE_UNREAD_MSG); - mContext.sendBroadcast(var3); - - ICLogger.i("========Ring!"); - if(ICAudioManager.needMute==true) - { - ICAudioManager.setVolumnMute(mContext); - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - ICAudioManager.setVolumnMute(mContext); //2秒后恢复音量 - } - },2000); - - } - break; - case PRECISE_CALL_STATE_ACTIVE://接电话 - { - if (ICAudioManager.needMute == false){ - if (Config.custom_name.equals("AK")) - ICAudioManager.setVoiceCallMaxVolumn(mContext); //设置最大音量 - } + mHandler.postDelayed(new Runnable() { + @Override + public void run() { + ICAudioManager.restoreVolumn(mContext); //2秒后恢复音量 + ICAudioManager.needMute = false; + } + }, 2000); + } + ICLogger.i("========Hung up!"); + break; + case PRECISE_CALL_STATE_INCOMING: //来电 + case PRECISE_CALL_STATE_ALERTING: + case PRECISE_CALL_STATE_DIALING: + isCalling = true; + Intent var3 = new Intent(); + var3.setAction(ACTION_CLOSE_UNREAD_MSG); + mContext.sendBroadcast(var3); + + ICLogger.i("========Ring!"); + if (ICAudioManager.needMute == true) { + ICAudioManager.setVolumnMute(mContext); + mHandler.postDelayed(new Runnable() { + @Override + public void run() { + ICAudioManager.setVolumnMute(mContext); //2秒后恢复音量 + } + }, 2000); + + } + break; + case PRECISE_CALL_STATE_ACTIVE://接电话 + { + if (ICAudioManager.needMute == false) { + if (Config.custom_name.equals("AK")) + ICAudioManager.setVoiceCallMaxVolumn(mContext); //设置最大音量 + } + } + case PRECISE_CALL_STATE_HOLDING://接电话 + case PRECISE_CALL_STATE_WAITING: + isCalling = true; + ICLogger.i("========Answer Call !"); + if (ICAudioManager.needMute == true) { + ICAudioManager.setVolumnMute(mContext); + mHandler.postDelayed(new Runnable() { + @Override + public void run() { + ICAudioManager.setVolumnMute(mContext); //2秒后恢复音量 + } + }, 2000); + } + + } + + } + }; + private ArrayList sAntioffList; + private ArrayList silentList; + private ArrayList stheartRateList; + private ArrayList voiceNotice; + + public SilentManager() { + } + + private void callback(Messenger var1, boolean var2) { + short var3; + if (var2) { + var3 = 600; + } else { + var3 = 700; } - case PRECISE_CALL_STATE_HOLDING://接电话 - case PRECISE_CALL_STATE_WAITING: - isCalling = true; - ICLogger.i("========Answer Call !"); - if(ICAudioManager.needMute==true) - { - ICAudioManager.setVolumnMute(mContext); - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - ICAudioManager.setVolumnMute(mContext); //2秒后恢复音量 - } - },2000); - } - - } - - } - }; - private ArrayList sAntioffList; - private ArrayList silentList; - private ArrayList stheartRateList; - private ArrayList voiceNotice; - - public SilentManager() { - } - - private void callback(Messenger var1, boolean var2) { - short var3; - if (var2) { - var3 = 600; - } else { - var3 = 700; - } - - if (var1 != null) { - try { - var1.send(Message.obtain((Handler)null, var3)); - } catch (Exception e) { - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); - } - } - - } - - private void cancelAlarm(ArrayList var1) { - Iterator var2 = var1.iterator(); - - while(var2.hasNext()) { - Alarm var3 = (Alarm)var2.next(); - String var10 = var3.time; - String var4 = var3.week; - String var5 = var3.ring; - String var11 = var3.name; - char[] var6 = var4.toCharArray(); - int var7 = var6.length; - - for(int var8 = 1; var8 < var7; ++var8) { - char var9 = var6[var8]; - this.mAlarmManager.cancel(this.getPendingIntent(var10, var4, var5, var11, var9 - 47)); - } - } - - } - - private void cancelNoticeAlarm(ArrayList var1) { - Iterator var2 = var1.iterator(); - - while(var2.hasNext()) { - NoticeContent var3 = (NoticeContent)var2.next(); - String var4 = var3.noticeTime; - String var9 = var3.noticeName; - String var5 = var3.noticeNumber; - String var6 = var3.noticeID; - String var7 = var3.noticeCategory; - String var8 = var3.noticeFrequency; - String var10 = var3.noticeContent; - this.mAlarmManager.cancel(this.getPendingIntent(var4, var9, var5, var6, var7, var8, var10)); - } - - } - - private PendingIntent getPendingIntent(String var1, String var2, String var3, String var4, int var5) { - StringBuilder var6 = new StringBuilder("alarm:"); - var6.append(var1); - var6.append(","); - var6.append(var2); - var6.append(","); - var6.append(var3); - var6.append(","); - var6.append(var4); - var6.append(","); - var6.append(var5); - var2 = var6.toString(); - Intent intent = new Intent(this.mContext, CoreService.class); - intent.setAction(ACTION_CARE_ALARM); - intent.setData(Uri.parse(var2)); - return PendingIntent.getService(this.mContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); - } - - private PendingIntent getPendingIntent(String var1, String var2, String var3, String var4, String var5, String var6, String var7) { - StringBuilder var8 = new StringBuilder("notice:"); - var8.append(var1); - var8.append(","); - var8.append(var2); - var8.append(","); - var8.append(var3); - var8.append(","); - var8.append(var4); - var8.append(","); - var8.append(var5); - var8.append(","); - var8.append(var6); - var8.append(","); - var8.append(var7); - var1 = var8.toString(); - Intent var9 = new Intent(this.mContext, CoreService.class); - var9.setAction("com.enqualcomm.support.ACTION_NOTICE_ALARM"); - var9.setData(Uri.parse(var1)); - return PendingIntent.getService(this.mContext, 0, var9, PendingIntent.FLAG_UPDATE_CURRENT); - } - - private void getSilentListStartAndEndTime() { - Calendar calendar = Calendar.getInstance(); - this.mTodayWeek = calendar.get(Calendar.DAY_OF_WEEK); - - Silent silent; - Iterator it = this.silentList.iterator(); - while( it.hasNext()) { - silent = (Silent)it.next(); - calendar.set(Calendar.SECOND, 0); - int hour = Integer.parseInt(silent.start.substring(2, 4)); - int minutes = Integer.parseInt(silent.start.substring(5, 7)); - calendar.set(Calendar.HOUR_OF_DAY, hour); - calendar.set(Calendar.MINUTE, minutes); - silent.startTimeMillis = calendar.getTimeInMillis(); - hour = Integer.parseInt(silent.end.substring(2, 4)); - minutes = Integer.parseInt(silent.end.substring(5, 7)); - calendar.set(Calendar.HOUR_OF_DAY, hour); - calendar.set(Calendar.MINUTE, minutes); - silent.endTimeMillis = calendar.getTimeInMillis(); - } - - } - - private void getStartAndEndSantioffTime() { - Calendar var1 = Calendar.getInstance(); - this.mTodayWeek = var1.get(Calendar.DAY_OF_WEEK); - - Antioff var3; - for(Iterator var2 = this.sAntioffList.iterator(); var2.hasNext(); var3.endTimeMillis = var1.getTimeInMillis()) { - var3 = (Antioff)var2.next(); - var1.set(Calendar.SECOND, 0); - int var4 = Integer.parseInt(var3.start.substring(2, 4)); - int var5 = Integer.parseInt(var3.start.substring(5, 7)); - var1.set(Calendar.HOUR_OF_DAY, var4); - var1.set(Calendar.MINUTE, var5); - var3.startTimeMillis = var1.getTimeInMillis(); - var4 = Integer.parseInt(var3.end.substring(2, 4)); - var5 = Integer.parseInt(var3.end.substring(5, 7)); - var1.set(Calendar.HOUR_OF_DAY, var4); - var1.set(Calendar.MINUTE, var5); - } - - } - - private void getStartAndEndStheartRateTime() { - Calendar var1 = Calendar.getInstance(); - this.mTodayWeek = var1.get(Calendar.DAY_OF_WEEK); - - StheartRate var3; - for(Iterator var2 = this.stheartRateList.iterator(); var2.hasNext(); var3.endTimeMillis = var1.getTimeInMillis()) { - var3 = (StheartRate)var2.next(); - var1.set(Calendar.SECOND, 0); - int var4 = Integer.parseInt(var3.start.substring(2, 4)); - int var5 = Integer.parseInt(var3.start.substring(5, 7)); - var1.set(Calendar.HOUR_OF_DAY, var4); - var1.set(Calendar.MINUTE, var5); - var3.startTimeMillis = var1.getTimeInMillis(); - var4 = Integer.parseInt(var3.end.substring(2, 4)); - var5 = Integer.parseInt(var3.end.substring(5, 7)); - var1.set(Calendar.HOUR_OF_DAY, var4); - var1.set(Calendar.MINUTE, var5); - } - - } - - public static void setSilentConfig(Context context,boolean silent){ - - if(silent){ - VibrateUtil.setVibPattern(0); - ICAudioManager.setMasterVolumn(context,0); - Util.SetRingMode(context,AudioManager.RINGER_MODE_SILENT,false); - }else{ - int mastervolume = Config.getMasterVolume(context); - ICAudioManager.setMasterVolumn(context,mastervolume); - int duration=Config.getDurationOfVibration(context); - VibrateUtil.setVibPattern(duration*1000); - Util.SetRingMode(context, AudioManager.MODE_NORMAL,true); - } - - - - } - private void handSilence(Context var1, boolean var2) { - this.mValue_isSilence = var2; + + if (var1 != null) { + try { + var1.send(Message.obtain((Handler) null, var3)); + } catch (Exception e) { + e.printStackTrace(); + ICLogger.e(e.getMessage(), e); + } + } + + } + + private void cancelAlarm(ArrayList var1) { + Iterator var2 = var1.iterator(); + + while (var2.hasNext()) { + Alarm var3 = (Alarm) var2.next(); + String var10 = var3.time; + String var4 = var3.week; + String var5 = var3.ring; + String var11 = var3.name; + char[] var6 = var4.toCharArray(); + int var7 = var6.length; + + for (int var8 = 1; var8 < var7; ++var8) { + char var9 = var6[var8]; + this.mAlarmManager.cancel(this.getPendingIntent(var10, var4, var5, var11, var9 - 47)); + } + } + + } + + private void cancelNoticeAlarm(ArrayList var1) { + Iterator var2 = var1.iterator(); + + while (var2.hasNext()) { + NoticeContent var3 = (NoticeContent) var2.next(); + String var4 = var3.noticeTime; + String var9 = var3.noticeName; + String var5 = var3.noticeNumber; + String var6 = var3.noticeID; + String var7 = var3.noticeCategory; + String var8 = var3.noticeFrequency; + String var10 = var3.noticeContent; + this.mAlarmManager.cancel(this.getPendingIntent(var4, var9, var5, var6, var7, var8, var10)); + } + + } + + private PendingIntent getPendingIntent(String var1, String var2, String var3, String var4, int var5) { + StringBuilder var6 = new StringBuilder("alarm:"); + var6.append(var1); + var6.append(","); + var6.append(var2); + var6.append(","); + var6.append(var3); + var6.append(","); + var6.append(var4); + var6.append(","); + var6.append(var5); + var2 = var6.toString(); + Intent intent = new Intent(this.mContext, CoreService.class); + intent.setAction(ACTION_CARE_ALARM); + intent.setData(Uri.parse(var2)); + return PendingIntent.getService(this.mContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); + } + + private PendingIntent getPendingIntent(String var1, String var2, String var3, String var4, String var5, String var6, String var7) { + StringBuilder var8 = new StringBuilder("notice:"); + var8.append(var1); + var8.append(","); + var8.append(var2); + var8.append(","); + var8.append(var3); + var8.append(","); + var8.append(var4); + var8.append(","); + var8.append(var5); + var8.append(","); + var8.append(var6); + var8.append(","); + var8.append(var7); + var1 = var8.toString(); + Intent var9 = new Intent(this.mContext, CoreService.class); + var9.setAction("com.enqualcomm.support.ACTION_NOTICE_ALARM"); + var9.setData(Uri.parse(var1)); + return PendingIntent.getService(this.mContext, 0, var9, PendingIntent.FLAG_UPDATE_CURRENT); + } + + private void getSilentListStartAndEndTime() { + Calendar calendar = Calendar.getInstance(); + this.mTodayWeek = calendar.get(Calendar.DAY_OF_WEEK); + + Silent silent; + Iterator it = this.silentList.iterator(); + while (it.hasNext()) { + silent = (Silent) it.next(); + calendar.set(Calendar.SECOND, 0); + int hour = Integer.parseInt(silent.start.substring(2, 4)); + int minutes = Integer.parseInt(silent.start.substring(5, 7)); + calendar.set(Calendar.HOUR_OF_DAY, hour); + calendar.set(Calendar.MINUTE, minutes); + silent.startTimeMillis = calendar.getTimeInMillis(); + hour = Integer.parseInt(silent.end.substring(2, 4)); + minutes = Integer.parseInt(silent.end.substring(5, 7)); + calendar.set(Calendar.HOUR_OF_DAY, hour); + calendar.set(Calendar.MINUTE, minutes); + silent.endTimeMillis = calendar.getTimeInMillis(); + } + + } + + private void getStartAndEndSantioffTime() { + Calendar var1 = Calendar.getInstance(); + this.mTodayWeek = var1.get(Calendar.DAY_OF_WEEK); + + Antioff var3; + for (Iterator var2 = this.sAntioffList.iterator(); var2.hasNext(); var3.endTimeMillis = var1.getTimeInMillis()) { + var3 = (Antioff) var2.next(); + var1.set(Calendar.SECOND, 0); + int var4 = Integer.parseInt(var3.start.substring(2, 4)); + int var5 = Integer.parseInt(var3.start.substring(5, 7)); + var1.set(Calendar.HOUR_OF_DAY, var4); + var1.set(Calendar.MINUTE, var5); + var3.startTimeMillis = var1.getTimeInMillis(); + var4 = Integer.parseInt(var3.end.substring(2, 4)); + var5 = Integer.parseInt(var3.end.substring(5, 7)); + var1.set(Calendar.HOUR_OF_DAY, var4); + var1.set(Calendar.MINUTE, var5); + } + + } + + private void getStartAndEndStheartRateTime() { + Calendar var1 = Calendar.getInstance(); + this.mTodayWeek = var1.get(Calendar.DAY_OF_WEEK); + + StheartRate var3; + for (Iterator var2 = this.stheartRateList.iterator(); var2.hasNext(); var3.endTimeMillis = var1.getTimeInMillis()) { + var3 = (StheartRate) var2.next(); + var1.set(Calendar.SECOND, 0); + int var4 = Integer.parseInt(var3.start.substring(2, 4)); + int var5 = Integer.parseInt(var3.start.substring(5, 7)); + var1.set(Calendar.HOUR_OF_DAY, var4); + var1.set(Calendar.MINUTE, var5); + var3.startTimeMillis = var1.getTimeInMillis(); + var4 = Integer.parseInt(var3.end.substring(2, 4)); + var5 = Integer.parseInt(var3.end.substring(5, 7)); + var1.set(Calendar.HOUR_OF_DAY, var4); + var1.set(Calendar.MINUTE, var5); + } + + } + + public static void setSilentConfig(Context context, boolean silent) { + + if (silent) { + VibrateUtil.setVibPattern(0); + ICAudioManager.setMasterVolumn(context, 0); + Util.SetRingMode(context, AudioManager.RINGER_MODE_SILENT, false); + } else { + int mastervolume = Config.getMasterVolume(context); + ICAudioManager.setMasterVolumn(context, mastervolume); + int duration = Config.getDurationOfVibration(context); + VibrateUtil.setVibPattern(duration * 1000); + Util.SetRingMode(context, AudioManager.MODE_NORMAL, true); + } + + + } + + private void handSilence(Context var1, boolean var2) { + this.mValue_isSilence = var2; /* @@ -391,543 +382,543 @@ public class SilentManager extends AbstractInvokeHandlerService { // Intent var5 = (new Intent("com.enqualcomm.support.ACTION_VIDEO_END_CALL")).setComponent(var4); // this.mRuntime.getContextProxy().context.startService(var5); }*/ - } - - private void handleSilent(Runtime runtime, boolean silent) { - int dayofweek = Calendar.getInstance().get(Calendar.DAY_OF_WEEK); - //if (dayofweek != this.mTodayWeek && (dayofweek != 1 || this.mTodayWeek != 8)) { - if (dayofweek != this.mTodayWeek ) { - //mToday != 当天,更新一下 设置 - this.getSilentListStartAndEndTime(); - this.queryNotice(); - } - - boolean isSilent = this.isSilentTime(); - StringBuilder var5 = new StringBuilder(); - var5.append("inSilent="); - var5.append(isSilent); - ICLogger.i(var5.toString()); - if (!this.mInSilent && isSilent) { - this.onSilentStateChange(true); - this.handSilence(this.mContext, true); - this.mDbHelper.upDateStatus("ON"); - } else if (this.mInSilent && !isSilent) { - this.onSilentStateChange(false); - this.mDbHelper.upDateStatus("OFF"); - this.handSilence(this.mContext, false); - } - - this.mInSilent = isSilent; - // this.getStartAndEndStheartRateTime(); - // this.isStheartRateTime(var2); - } - - private boolean isIdle(Context context) { - int callstate = ((TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE)).getCallState(); - boolean isidle; - if (CALL_STATE_RINGING != callstate && CALL_STATE_OFFHOOK != callstate) { - isidle = true; - } else { - isidle = false; - } - - return isidle && !this.mInSilent && !this.mRuntime.getBatteryLow(); - } - - private boolean isAntioffTime(boolean var1) { - long var2 = System.currentTimeMillis(); - ArrayList var4 = this.sAntioffList; - int var5 = this.mTodayWeek; - var1 = true; - if (var5 == 1) { - this.mTodayWeek += 7; - } - - Iterator var12 = var4.iterator(); - - while(true) { - if (!var12.hasNext()) { - var1 = false; - break; - } - - Antioff var6 = (Antioff)var12.next(); - String var7 = var6.week; - StringBuilder var8 = new StringBuilder(); - var8.append(this.mTodayWeek - 1); - var8.append(""); - if (var7.contains(var8.toString())) { - long var9 = var6.startTimeMillis - var2; - int var11; - if (var9 < (long)(CoreService.alarmCycle * 60 * 1000) && var9 > 0L) { - var11 = Integer.parseInt(var6.start.substring(2, 4)); - var5 = Integer.parseInt(var6.start.substring(5, 7)); - AlarmHelper.setTimeAlarm(this.mContext, var11, var5, OTHER_ALARM_START); - var8 = new StringBuilder(); - var8.append("设置起始时间=hour"); - var8.append(var11); - var8.append("minute+"); - var8.append(var5); - ICLogger.i(var8.toString()); - } + } - var9 = var6.endTimeMillis - var2; - if (var9 < (long)(CoreService.alarmCycle * 60 * 1000) && var9 > 0L) { - var11 = Integer.parseInt(var6.end.substring(2, 4)); - var5 = Integer.parseInt(var6.end.substring(5, 7)); - AlarmHelper.setTimeAlarm(this.mContext, var11, var5, OTHER_ALARM_END); - var8 = new StringBuilder(); - var8.append("设置结束时间=hour"); - var8.append(var11); - var8.append("minute+"); - var8.append(var5); - ICLogger.i(var8.toString()); + private void handleSilent(Runtime runtime, boolean silent) { + int dayofweek = Calendar.getInstance().get(Calendar.DAY_OF_WEEK); + //if (dayofweek != this.mTodayWeek && (dayofweek != 1 || this.mTodayWeek != 8)) { + if (dayofweek != this.mTodayWeek) { + //mToday != 当天,更新一下 设置 + this.getSilentListStartAndEndTime(); + this.queryNotice(); } - if (var6.startTimeMillis <= var2 && var6.endTimeMillis > var2) { - break; + boolean isSilent = this.isSilentTime(); + StringBuilder var5 = new StringBuilder(); + var5.append("inSilent="); + var5.append(isSilent); + ICLogger.i(var5.toString()); + if (!this.mInSilent && isSilent) { + this.onSilentStateChange(true); + this.handSilence(this.mContext, true); + this.mDbHelper.upDateStatus("ON"); + } else if (this.mInSilent && !isSilent) { + this.onSilentStateChange(false); + this.mDbHelper.upDateStatus("OFF"); + this.handSilence(this.mContext, false); } - } + + this.mInSilent = isSilent; + // this.getStartAndEndStheartRateTime(); + // this.isStheartRateTime(var2); } - this.mRuntime.setNeedAntioff(var1); - return var1; - } + private boolean isIdle(Context context) { + int callstate = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getCallState(); + boolean isidle; + if (CALL_STATE_RINGING != callstate && CALL_STATE_OFFHOOK != callstate) { + isidle = true; + } else { + isidle = false; + } - private boolean isSilentTime() { - long currenttime = System.currentTimeMillis(); - ArrayList slist = this.silentList; - int todayWeek = this.mTodayWeek; - boolean isSilent = false; //默认不在silent时间段 -// if (todayWeek == 1) { -// this.mTodayWeek += 7; -// } + return isidle && !this.mInSilent && !this.mRuntime.getBatteryLow(); + } - Iterator it = slist.iterator(); + private boolean isAntioffTime(boolean var1) { + long var2 = System.currentTimeMillis(); + ArrayList var4 = this.sAntioffList; + int var5 = this.mTodayWeek; + var1 = true; + if (var5 == 1) { + this.mTodayWeek += 7; + } - while(true) { - if (!it.hasNext()) { - isSilent = false; - break; - } + Iterator var12 = var4.iterator(); - Silent silent = (Silent)it.next(); - String week = silent.week; - StringBuilder sb = new StringBuilder(); -// sb.append(this.mTodayWeek - 1); - sb.append(this.mTodayWeek); - sb.append(""); - if (week.contains(sb.toString())) { - long var9 = silent.startTimeMillis - currenttime; - int hour,minutes; - StringBuilder sblog; - ICLogger.i("startTimeMillis - currenttime "+var9); - if (var9 < (long)(CoreService.alarmCycle * 60 * 1000) && var9 > 0L) { - hour = Integer.parseInt(silent.start.substring(2, 4)); - minutes = Integer.parseInt(silent.start.substring(5, 7)); - AlarmHelper.setTimeAlarm(this.mContext, hour, minutes, OTHER_ALARM_START); - sblog = new StringBuilder(); - sblog.append("设置起始时间=hour"); - sblog.append(hour); - sblog.append("minute+"); - sblog.append(minutes); - ICLogger.i(sblog.toString()); - } + while (true) { + if (!var12.hasNext()) { + var1 = false; + break; + } - var9 = silent.endTimeMillis - currenttime; - ICLogger.i("endTimeMillis - currenttime "+var9); - if (var9 < (long)(CoreService.alarmCycle * 60 * 1000) && var9 > 0L) { - hour = Integer.parseInt(silent.end.substring(2, 4)); - minutes = Integer.parseInt(silent.end.substring(5, 7)); - AlarmHelper.setTimeAlarm(this.mContext, hour, minutes, OTHER_ALARM_END); - sblog = new StringBuilder(); - sblog.append("设置结束时间=hour"); - sblog.append(hour); - sblog.append("minute+"); - sblog.append(minutes); - ICLogger.i(sblog.toString()); + Antioff var6 = (Antioff) var12.next(); + String var7 = var6.week; + StringBuilder var8 = new StringBuilder(); + var8.append(this.mTodayWeek - 1); + var8.append(""); + if (var7.contains(var8.toString())) { + long var9 = var6.startTimeMillis - var2; + int var11; + if (var9 < (long) (CoreService.alarmCycle * 60 * 1000) && var9 > 0L) { + var11 = Integer.parseInt(var6.start.substring(2, 4)); + var5 = Integer.parseInt(var6.start.substring(5, 7)); + AlarmHelper.setTimeAlarm(this.mContext, var11, var5, OTHER_ALARM_START); + var8 = new StringBuilder(); + var8.append("设置起始时间=hour"); + var8.append(var11); + var8.append("minute+"); + var8.append(var5); + ICLogger.i(var8.toString()); + } + + var9 = var6.endTimeMillis - var2; + if (var9 < (long) (CoreService.alarmCycle * 60 * 1000) && var9 > 0L) { + var11 = Integer.parseInt(var6.end.substring(2, 4)); + var5 = Integer.parseInt(var6.end.substring(5, 7)); + AlarmHelper.setTimeAlarm(this.mContext, var11, var5, OTHER_ALARM_END); + var8 = new StringBuilder(); + var8.append("设置结束时间=hour"); + var8.append(var11); + var8.append("minute+"); + var8.append(var5); + ICLogger.i(var8.toString()); + } + + if (var6.startTimeMillis <= var2 && var6.endTimeMillis > var2) { + break; + } + } } - //刚好在silent时段,则直接退出 - if (silent.startTimeMillis <= currenttime && silent.endTimeMillis > currenttime) { - isSilent=true; - break; - } - }else{ - ICLogger.i(sb+" not in ["+week+"] silent is false"); - } + this.mRuntime.setNeedAntioff(var1); + return var1; } - return isSilent; - } - - private boolean isStheartRateTime(boolean var1) { - long var2 = System.currentTimeMillis(); - ArrayList var4 = this.stheartRateList; - if (this.mTodayWeek == 1) { - this.mTodayWeek += 7; - } + private boolean isSilentTime() { + long currenttime = System.currentTimeMillis(); + ArrayList slist = this.silentList; + int todayWeek = this.mTodayWeek; + boolean isSilent = false; //默认不在silent时间段 +// if (todayWeek == 1) { +// this.mTodayWeek += 7; +// } - Iterator var12 = var4.iterator(); + Iterator it = slist.iterator(); - while(true) { - if (var12.hasNext()) { - StheartRate var5 = (StheartRate)var12.next(); - String var6 = var5.week; - StringBuilder var7 = new StringBuilder(); - var7.append(this.mTodayWeek - 1); - var7.append(""); - if (!var6.contains(var7.toString())) { - continue; - } + while (true) { + if (!it.hasNext()) { + isSilent = false; + break; + } - long var8 = var5.startTimeMillis - var2; - int var10; - int var11; - if (var8 < (long)(CoreService.alarmCycle * 60 * 1000) && var8 > 0L) { - var10 = Integer.parseInt(var5.start.substring(2, 4)); - var11 = Integer.parseInt(var5.start.substring(5, 7)); - AlarmHelper.setTimeAlarm(this.mContext, var10, var11, "com.enqualcomm.support.OTHER_HEARTRATE_ALARM_START"); + Silent silent = (Silent) it.next(); + String week = silent.week; + StringBuilder sb = new StringBuilder(); +// sb.append(this.mTodayWeek - 1); + sb.append(this.mTodayWeek); + sb.append(""); + if (week.contains(sb.toString())) { + long var9 = silent.startTimeMillis - currenttime; + int hour, minutes; + StringBuilder sblog; + ICLogger.i("startTimeMillis - currenttime " + var9); + if (var9 < (long) (CoreService.alarmCycle * 60 * 1000) && var9 > 0L) { + hour = Integer.parseInt(silent.start.substring(2, 4)); + minutes = Integer.parseInt(silent.start.substring(5, 7)); + AlarmHelper.setTimeAlarm(this.mContext, hour, minutes, OTHER_ALARM_START); + sblog = new StringBuilder(); + sblog.append("设置起始时间=hour"); + sblog.append(hour); + sblog.append("minute+"); + sblog.append(minutes); + ICLogger.i(sblog.toString()); + } + + var9 = silent.endTimeMillis - currenttime; + ICLogger.i("endTimeMillis - currenttime " + var9); + if (var9 < (long) (CoreService.alarmCycle * 60 * 1000) && var9 > 0L) { + hour = Integer.parseInt(silent.end.substring(2, 4)); + minutes = Integer.parseInt(silent.end.substring(5, 7)); + AlarmHelper.setTimeAlarm(this.mContext, hour, minutes, OTHER_ALARM_END); + sblog = new StringBuilder(); + sblog.append("设置结束时间=hour"); + sblog.append(hour); + sblog.append("minute+"); + sblog.append(minutes); + ICLogger.i(sblog.toString()); + } + + //刚好在silent时段,则直接退出 + if (silent.startTimeMillis <= currenttime && silent.endTimeMillis > currenttime) { + isSilent = true; + break; + } + } else { + ICLogger.i(sb + " not in [" + week + "] silent is false"); + } } - var8 = var5.endTimeMillis - var2; - if (var8 < (long)(CoreService.alarmCycle * 60 * 1000) && var8 > 0L) { - var10 = Integer.parseInt(var5.end.substring(2, 4)); - var11 = Integer.parseInt(var5.end.substring(5, 7)); - AlarmHelper.setTimeAlarm(this.mContext, var10, var11, "com.enqualcomm.support.OTHER_HEARTRATE_ALARM_END"); - } + return isSilent; + } - if (var5.startTimeMillis > var2 || var5.endTimeMillis <= var2) { - continue; + private boolean isStheartRateTime(boolean var1) { + long var2 = System.currentTimeMillis(); + ArrayList var4 = this.stheartRateList; + if (this.mTodayWeek == 1) { + this.mTodayWeek += 7; } - this.mInterval = var5.interval; - if (!var1) { + Iterator var12 = var4.iterator(); + + while (true) { + if (var12.hasNext()) { + StheartRate var5 = (StheartRate) var12.next(); + String var6 = var5.week; + StringBuilder var7 = new StringBuilder(); + var7.append(this.mTodayWeek - 1); + var7.append(""); + if (!var6.contains(var7.toString())) { + continue; + } + + long var8 = var5.startTimeMillis - var2; + int var10; + int var11; + if (var8 < (long) (CoreService.alarmCycle * 60 * 1000) && var8 > 0L) { + var10 = Integer.parseInt(var5.start.substring(2, 4)); + var11 = Integer.parseInt(var5.start.substring(5, 7)); + AlarmHelper.setTimeAlarm(this.mContext, var10, var11, "com.enqualcomm.support.OTHER_HEARTRATE_ALARM_START"); + } + + var8 = var5.endTimeMillis - var2; + if (var8 < (long) (CoreService.alarmCycle * 60 * 1000) && var8 > 0L) { + var10 = Integer.parseInt(var5.end.substring(2, 4)); + var11 = Integer.parseInt(var5.end.substring(5, 7)); + AlarmHelper.setTimeAlarm(this.mContext, var10, var11, "com.enqualcomm.support.OTHER_HEARTRATE_ALARM_END"); + } + + if (var5.startTimeMillis > var2 || var5.endTimeMillis <= var2) { + continue; + } + + this.mInterval = var5.interval; + if (!var1) { // AlarmHelper.setRealTimeAlarm(this.mContext, Integer.parseInt(this.mInterval), ACTION_HEATR_RATE_START); // this.mRuntime.getContextProxy().sendStheartRateBroadcast(ACTION_HEATR_RATE_START, 0); - } + } - var1 = true; - break; - } + var1 = true; + break; + } + + var1 = false; + break; + } - var1 = false; - break; + return var1; } - return var1; - } + private void onSilentStateChange(boolean var1) { - private void onSilentStateChange(boolean var1) { + SharPreferenceUtil.setPrefBoolean(mContext, "KEY_ISSILENCE", var1); + setSilentConfig(mContext, var1); - SharPreferenceUtil.setPrefBoolean(mContext, "KEY_ISSILENCE", var1); - setSilentConfig(mContext,var1); + if (this.alarms != null) { + if (var1) { + this.cancelAlarm(this.alarms); + } else { + this.setNewAlarm(this.alarms); + } + } - if (this.alarms != null) { - if (var1) { - this.cancelAlarm(this.alarms); - } else { - this.setNewAlarm(this.alarms); - } - } + if (this.voiceNotice != null) { + if (var1) { + this.cancelNoticeAlarm(this.voiceNotice); + } else { + this.setNewNoticeAlarm(this.voiceNotice); + } + } - if (this.voiceNotice != null) { - if (var1) { - this.cancelNoticeAlarm(this.voiceNotice); - } else { - this.setNewNoticeAlarm(this.voiceNotice); - } } - } + private ArrayList queryAlarm() { + ArrayList var1 = this.mDbHelper.queryAlarm(); + if (!this.mInSilent) { + if (this.alarms != null) { + this.cancelAlarm(this.alarms); + } - private ArrayList queryAlarm() { - ArrayList var1 = this.mDbHelper.queryAlarm(); - if (!this.mInSilent) { - if (this.alarms != null) { - this.cancelAlarm(this.alarms); - } + this.setNewAlarm(var1); + } - this.setNewAlarm(var1); + return var1; } - return var1; - } - - private ArrayList queryAntioff() { - return this.mDbHelper.queryAntioff(true); - } - - private ArrayList queryNotice() { - String var1 = TimeUtil.getSystemTime4(); - ArrayList var2 = this.mDbHelper.queryNotice(var1); - if (!this.mInSilent) { - if (this.voiceNotice != null) { - this.cancelNoticeAlarm(this.voiceNotice); - } - - this.setNewNoticeAlarm(var2); + private ArrayList queryAntioff() { + return this.mDbHelper.queryAntioff(true); } - return var2; - } - - private ArrayList querySilent() { - return this.mDbHelper.querySilence(true); - } - - private ArrayList queryStheartRate() { - return this.mDbHelper.queryStheartRate(true); - } + private ArrayList queryNotice() { + String var1 = TimeUtil.getSystemTime4(); + ArrayList var2 = this.mDbHelper.queryNotice(var1); + if (!this.mInSilent) { + if (this.voiceNotice != null) { + this.cancelNoticeAlarm(this.voiceNotice); + } - private void setNewAlarm(ArrayList alarmArrayList) { - Calendar calendar = Calendar.getInstance(); - calendar.set(Calendar.SECOND, 0); - long currentTime = System.currentTimeMillis(); - Iterator itAlarm = alarmArrayList.iterator(); + this.setNewNoticeAlarm(var2); + } + return var2; + } - while (itAlarm.hasNext()){ - Alarm alarm = (Alarm)itAlarm.next(); - if ("ON".equals(alarm.status)) { - int hour = Integer.parseInt(alarm.time.substring(2, 4)); - int minute = Integer.parseInt(alarm.time.substring(5, 7)); - calendar.set(Calendar.HOUR_OF_DAY, hour); - calendar.set(Calendar.MINUTE, minute); + private ArrayList querySilent() { + return this.mDbHelper.querySilence(true); + } - char[] weeklist = alarm.week.toCharArray(); - int weeklistlen = weeklist.length; - ICLogger.i("repeat = "+alarm.week+", list size = "+weeklistlen); - if (weeklistlen>1) { - //如果week大于0 则证明有循环,没有循环就证明只是一次的闹铃。 - for (int i = 1; i < weeklistlen; i++) { + private ArrayList queryStheartRate() { + return this.mDbHelper.queryStheartRate(true); + } - long tmpTimeInMillis; - int dayofweek = weeklist[i] - 47; - calendar.set(Calendar.DAY_OF_WEEK, dayofweek); - tmpTimeInMillis = calendar.getTimeInMillis(); - if (tmpTimeInMillis <= currentTime) { - tmpTimeInMillis += ONE_WEEK; - } - Date date = new Date(tmpTimeInMillis); - ICLogger.i("set date "+date.toLocaleString()); - PendingIntent pendingIntent = this.getPendingIntent(alarm.time, alarm.week, alarm.ring, alarm.name, dayofweek); - AlarmHelper.setAlarm(this.mAlarmManager, tmpTimeInMillis, pendingIntent); - } - }else{ - //只是一次的闹铃 - long tmpTimeInMillis; + private void setNewAlarm(ArrayList alarmArrayList) { + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.SECOND, 0); + long currentTime = System.currentTimeMillis(); + Iterator itAlarm = alarmArrayList.iterator(); + + + while (itAlarm.hasNext()) { + Alarm alarm = (Alarm) itAlarm.next(); + if ("ON".equals(alarm.status)) { + int hour = Integer.parseInt(alarm.time.substring(2, 4)); + int minute = Integer.parseInt(alarm.time.substring(5, 7)); + calendar.set(Calendar.HOUR_OF_DAY, hour); + calendar.set(Calendar.MINUTE, minute); + + char[] weeklist = alarm.week.toCharArray(); + int weeklistlen = weeklist.length; + ICLogger.i("repeat = " + alarm.week + ", list size = " + weeklistlen); + if (weeklistlen > 1) { + //如果week大于0 则证明有循环,没有循环就证明只是一次的闹铃。 + for (int i = 1; i < weeklistlen; i++) { + + long tmpTimeInMillis; + int dayofweek = weeklist[i] - 47; + calendar.set(Calendar.DAY_OF_WEEK, dayofweek); + tmpTimeInMillis = calendar.getTimeInMillis(); + if (tmpTimeInMillis <= currentTime) { + tmpTimeInMillis += ONE_WEEK; + } + Date date = new Date(tmpTimeInMillis); + ICLogger.i("set date " + date.toLocaleString()); + PendingIntent pendingIntent = this.getPendingIntent(alarm.time, alarm.week, alarm.ring, alarm.name, dayofweek); + AlarmHelper.setAlarm(this.mAlarmManager, tmpTimeInMillis, pendingIntent); + } + } else { + //只是一次的闹铃 + long tmpTimeInMillis; // int dayofweek = weeklist[i] - 47; // calendar.set(Calendar.DAY_OF_WEEK, dayofweek); // tmpTimeInMillis = calendar.getTimeInMillis(); - Date date = new Date(System.currentTimeMillis()); - ICLogger.i("date "+date.toLocaleString()); - Calendar c = Calendar.getInstance(); - c.setTime(date); - int wek = c.get(Calendar.DAY_OF_WEEK); - calendar.set(Calendar.DAY_OF_WEEK, wek); - tmpTimeInMillis = calendar.getTimeInMillis(); - if (tmpTimeInMillis <= currentTime) { - tmpTimeInMillis += ONE_DAY; - } - date = new Date(tmpTimeInMillis); - c = Calendar.getInstance(); - c.setTime(date); - wek = c.get(Calendar.DAY_OF_WEEK); - - ICLogger.i("set date "+date.toLocaleString()); + Date date = new Date(System.currentTimeMillis()); + ICLogger.i("date " + date.toLocaleString()); + Calendar c = Calendar.getInstance(); + c.setTime(date); + int wek = c.get(Calendar.DAY_OF_WEEK); + calendar.set(Calendar.DAY_OF_WEEK, wek); + tmpTimeInMillis = calendar.getTimeInMillis(); + if (tmpTimeInMillis <= currentTime) { + tmpTimeInMillis += ONE_DAY; + } + date = new Date(tmpTimeInMillis); + c = Calendar.getInstance(); + c.setTime(date); + wek = c.get(Calendar.DAY_OF_WEEK); + + ICLogger.i("set date " + date.toLocaleString()); + + PendingIntent pendingIntent = this.getPendingIntent(alarm.time, alarm.week, alarm.ring, alarm.name, wek); + AlarmHelper.setAlarmOnce(this.mAlarmManager, tmpTimeInMillis, pendingIntent); + } - PendingIntent pendingIntent = this.getPendingIntent(alarm.time, alarm.week, alarm.ring, alarm.name, wek); - AlarmHelper.setAlarmOnce(this.mAlarmManager, tmpTimeInMillis, pendingIntent); + } } + } - } - } - } - - private void setNewNoticeAlarm(ArrayList var1) { - Iterator var19 = var1.iterator(); - - while(var19.hasNext()) { - NoticeContent var2 = (NoticeContent)var19.next(); - String var3 = var2.noticeTime; - String var4 = var2.noticeName; - String var5 = var2.noticeNumber; - String var6 = var2.noticeID; - String var7 = var2.noticeCategory; - String var8 = var2.noticeFrequency; - String var9 = var2.noticeContent; - Calendar var10 = Calendar.getInstance(); - long var11 = System.currentTimeMillis(); - var10.set(Calendar.SECOND, 0); - if (var3 != null) { - String var13 = var3.substring(0, 4); - String var20 = var3.substring(4, 6); - String var14 = var3.substring(6, 8); - String var15 = var3.substring(8, 10); - String var16 = var3.substring(10, 12); - var10.set(Calendar.YEAR, Integer.parseInt(var13)); - var10.set(Calendar.MONTH, Integer.parseInt(var20) - 1); - var10.set(Calendar.DATE, Integer.parseInt(var14)); - var10.set(Calendar.HOUR_OF_DAY, Integer.parseInt(var15)); - var10.set(Calendar.MINUTE, Integer.parseInt(var16)); - long var17 = var10.getTimeInMillis(); - if (var17 >= var11) { - PendingIntent var21 = this.getPendingIntent(var3, var4, var5, var6, var7, var8, var9); - AlarmHelper.setAlarm(this.mAlarmManager, var17, var21); + private void setNewNoticeAlarm(ArrayList var1) { + Iterator var19 = var1.iterator(); + + while (var19.hasNext()) { + NoticeContent var2 = (NoticeContent) var19.next(); + String var3 = var2.noticeTime; + String var4 = var2.noticeName; + String var5 = var2.noticeNumber; + String var6 = var2.noticeID; + String var7 = var2.noticeCategory; + String var8 = var2.noticeFrequency; + String var9 = var2.noticeContent; + Calendar var10 = Calendar.getInstance(); + long var11 = System.currentTimeMillis(); + var10.set(Calendar.SECOND, 0); + if (var3 != null) { + String var13 = var3.substring(0, 4); + String var20 = var3.substring(4, 6); + String var14 = var3.substring(6, 8); + String var15 = var3.substring(8, 10); + String var16 = var3.substring(10, 12); + var10.set(Calendar.YEAR, Integer.parseInt(var13)); + var10.set(Calendar.MONTH, Integer.parseInt(var20) - 1); + var10.set(Calendar.DATE, Integer.parseInt(var14)); + var10.set(Calendar.HOUR_OF_DAY, Integer.parseInt(var15)); + var10.set(Calendar.MINUTE, Integer.parseInt(var16)); + long var17 = var10.getTimeInMillis(); + if (var17 >= var11) { + PendingIntent var21 = this.getPendingIntent(var3, var4, var5, var6, var7, var8, var9); + AlarmHelper.setAlarm(this.mAlarmManager, var17, var21); + } + } } - } - } - - } - - public void onAlarmClock(Connection var1, Runtime runtime) { - //每个心跳检查静默消息状态 - this.handleSilent(runtime, true); - } - - public void onAttach(Connection var1, Runtime runtime) { - this.mRuntime = runtime; - this.mConnection = var1; - this.mContext = runtime.getContextProxy().context; - this.mAlarmManager = (AlarmManager)this.mContext.getSystemService(Context.ALARM_SERVICE); - this.mDbHelper = runtime.getDbHelper(); - this.silentList = this.querySilent(); - this.getSilentListStartAndEndTime(); - this.mInSilent = this.isSilentTime(); - DBHelper var3 = this.mDbHelper; - String var4; - if (this.mInSilent) { - var4 = "ON"; - } else { - var4 = "OFF"; + } - var3.upDateorInsertDeviceStatus(var4); - this.handSilence(this.mContext, this.mInSilent); + public void onAlarmClock(Connection var1, Runtime runtime) { + //每个心跳检查静默消息状态 + this.handleSilent(runtime, true); + } + + public void onAttach(Connection var1, Runtime runtime) { + this.mRuntime = runtime; + this.mConnection = var1; + this.mContext = runtime.getContextProxy().context; + this.mAlarmManager = (AlarmManager) this.mContext.getSystemService(Context.ALARM_SERVICE); + this.mDbHelper = runtime.getDbHelper(); + this.silentList = this.querySilent(); + this.getSilentListStartAndEndTime(); + this.mInSilent = this.isSilentTime(); + DBHelper var3 = this.mDbHelper; + String var4; + if (this.mInSilent) { + var4 = "ON"; + } else { + var4 = "OFF"; + } + + var3.upDateorInsertDeviceStatus(var4); + this.handSilence(this.mContext, this.mInSilent); /* this.stheartRateList = this.queryStheartRate(); this.getStartAndEndStheartRateTime(); this.mIsStheartRate = this.isStheartRateTime(false); */ - this.alarms = this.queryAlarm(); - this.voiceNotice = this.queryNotice(); - runtime.getContextProxy().context.getContentResolver().registerContentObserver(ICContentProvider.SILENT_URI, false, this.mContentObserver); - this.mAlramReceiver = new SilentManager.AlramReceiver(); - IntentFilter var5 = new IntentFilter(); - var5.addAction(ACTION_NOTICE_ALARM_CHANGE); - var5.addAction(ACTION_ALARM_ALARM_CHANGE); - // var5.addAction("com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE"); - // var5.addAction("com.eqc.heartrate.action.RESULT"); - this.mContext.registerReceiver(this.mAlramReceiver, var5); - runtime.getContextProxy().getTelephonyManager().listen(this.phoneStateListener, 32); - } - - public void onDetach(Connection var1, Runtime var2) { - var2.getContextProxy().context.getContentResolver().unregisterContentObserver(this.mContentObserver); - this.mContext.unregisterReceiver(this.mAlramReceiver); - } - - @Override - public boolean onUserRequest(Intent var1, Connection var2, Runtime runtime) { - String action = var1.getAction(); - if (ACTION_CARE_ALARM.equals(action)) { - String alarmTime = var1.getDataString(); //alarm:ST00.43,W,CON,闹铃,2 - String currentTime = TimeUtil.getSystemTime(); - alarmTime.substring(6).split("\\."); - int alarmTime_minutes = Integer.parseInt(alarmTime.substring(6).split("\\.")[1].substring(0, 2)); - int alarmTime_hour = Integer.parseInt(alarmTime.substring(6).split("\\.")[0].substring(2)); - String[] currentTimeArray = currentTime.split(";")[1].split(":"); - int currentTime_hour = Integer.parseInt(currentTimeArray[0]); - int currentTime_minutes = Integer.parseInt(currentTimeArray[1]); - ICLogger.i("alarm time["+alarmTime_hour+":"+alarmTime_minutes+"], current time["+currentTime_hour+":"+currentTime_minutes+"]"); - if (alarmTime_hour != currentTime_hour || alarmTime_minutes != currentTime_minutes) { - return false; - } - - if (this.isIdle(this.mContext)) { - try { - Intent intent = new Intent("com.enqualcomm.icare.ALARM", Uri.parse(alarmTime)); - intent.putExtra("closeAlarm", 0); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - this.mContext.startActivity(intent); - } catch (Exception e) { - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); + this.alarms = this.queryAlarm(); + this.voiceNotice = this.queryNotice(); + runtime.getContextProxy().context.getContentResolver().registerContentObserver(ICContentProvider.SILENT_URI, false, this.mContentObserver); + this.mAlramReceiver = new SilentManager.AlramReceiver(); + IntentFilter var5 = new IntentFilter(); + var5.addAction(ACTION_NOTICE_ALARM_CHANGE); + var5.addAction(ACTION_ALARM_ALARM_CHANGE); + // var5.addAction("com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE"); + // var5.addAction("com.eqc.heartrate.action.RESULT"); + this.mContext.registerReceiver(this.mAlramReceiver, var5); + runtime.getContextProxy().getTelephonyManager().listen(this.phoneStateListener, 32); + } + + public void onDetach(Connection var1, Runtime var2) { + var2.getContextProxy().context.getContentResolver().unregisterContentObserver(this.mContentObserver); + this.mContext.unregisterReceiver(this.mAlramReceiver); + } + + @Override + public boolean onUserRequest(Intent var1, Connection var2, Runtime runtime) { + String action = var1.getAction(); + if (ACTION_CARE_ALARM.equals(action)) { + String alarmTime = var1.getDataString(); //alarm:ST00.43,W,CON,闹铃,2 + String currentTime = TimeUtil.getSystemTime(); + alarmTime.substring(6).split("\\."); + int alarmTime_minutes = Integer.parseInt(alarmTime.substring(6).split("\\.")[1].substring(0, 2)); + int alarmTime_hour = Integer.parseInt(alarmTime.substring(6).split("\\.")[0].substring(2)); + String[] currentTimeArray = currentTime.split(";")[1].split(":"); + int currentTime_hour = Integer.parseInt(currentTimeArray[0]); + int currentTime_minutes = Integer.parseInt(currentTimeArray[1]); + ICLogger.i("alarm time[" + alarmTime_hour + ":" + alarmTime_minutes + "], current time[" + currentTime_hour + ":" + currentTime_minutes + "]"); + if (alarmTime_hour != currentTime_hour || alarmTime_minutes != currentTime_minutes) { + return false; + } + + if (this.isIdle(this.mContext)) { + try { + Intent intent = new Intent("com.enqualcomm.icare.ALARM", Uri.parse(alarmTime)); + intent.putExtra("closeAlarm", 0); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + this.mContext.startActivity(intent); + } catch (Exception e) { + e.printStackTrace(); + ICLogger.e(e.getMessage(), e); + } + } + } else if ("com.enqualcomm.support.ACTION_NOTICE_ALARM".equals(action)) { + String alarmTime = var1.getDataString(); + if (this.isIdle(this.mContext)) { + try { + var1 = new Intent("com.enqualcomm.icare.NOTICE", Uri.parse(alarmTime)); + var1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + this.mContext.startActivity(var1); + } catch (Exception e) { + e.printStackTrace(); + ICLogger.e(e.getMessage(), e); + } + } + } else { + ICLogger.i("静默闹钟来了"); + boolean silentchange; + if (!"com.eqc.heartrate.action.SILENT_START".equals(action) && !"com.enqualcomm.support.OTHER_HEARTRATE_ALARM_START".equals(action)) { + silentchange = false; + } else { + silentchange = true; + } + + //this.handleSilent(runtime, silentchange ^ true); } - } - } else if ("com.enqualcomm.support.ACTION_NOTICE_ALARM".equals(action)) { - String alarmTime = var1.getDataString(); - if (this.isIdle(this.mContext)) { - try { - var1 = new Intent("com.enqualcomm.icare.NOTICE", Uri.parse(alarmTime)); - var1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - this.mContext.startActivity(var1); - } catch (Exception e) { - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); + + return false; + } + + @Override + public boolean onUserRequest(Message paramMessage, Connection paramConnection, Runtime paramRuntime) { + return false; + } + + class AlramReceiver extends BroadcastReceiver { + AlramReceiver() { } - } - } else { - ICLogger.i("静默闹钟来了"); - boolean silentchange; - if (!"com.eqc.heartrate.action.SILENT_START".equals(action) && !"com.enqualcomm.support.OTHER_HEARTRATE_ALARM_START".equals(action)) { - silentchange = false; - } else { - silentchange = true; - } - - //this.handleSilent(runtime, silentchange ^ true); - } - - return false; - } - - @Override - public boolean onUserRequest(Message paramMessage, Connection paramConnection, Runtime paramRuntime) { - return false; - } - - class AlramReceiver extends BroadcastReceiver { - AlramReceiver() { - } - - public void onReceive(Context var1, Intent var2) { - String action = var2.getAction(); - StringBuilder var3 = new StringBuilder(); - var3.append("action = "); - var3.append(action); - ICLogger.i(var3.toString()); - if (ACTION_NOTICE_ALARM_CHANGE.equals(action)) { - SilentManager.this.voiceNotice = SilentManager.this.queryNotice(); - } else if (ACTION_ALARM_ALARM_CHANGE.equals(action)) { - SilentManager.this.alarms = SilentManager.this.queryAlarm(); - } else if ("com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE".equals(action)) { - SilentManager.this.stheartRateList = SilentManager.this.queryStheartRate(); - SilentManager.this.getStartAndEndStheartRateTime(); - SilentManager.this.isStheartRateTime(false); - } else if ("com.eqc.heartrate.action.RESULT".equals(action)) { - String time = var2.getStringExtra("time"); - int var4 = var2.getIntExtra("value", 0); - int var5 = var2.getIntExtra("type", 0); - StringBuilder var7 = new StringBuilder(); - var7.append("("); - var7.append(time); - var7.append("@"); - var7.append(var4); - var7.append("@"); - var7.append(var5); - var7.append(")"); - time = var7.toString(); + + public void onReceive(Context var1, Intent var2) { + String action = var2.getAction(); + StringBuilder var3 = new StringBuilder(); + var3.append("action = "); + var3.append(action); + ICLogger.i(var3.toString()); + if (ACTION_NOTICE_ALARM_CHANGE.equals(action)) { + SilentManager.this.voiceNotice = SilentManager.this.queryNotice(); + } else if (ACTION_ALARM_ALARM_CHANGE.equals(action)) { + SilentManager.this.alarms = SilentManager.this.queryAlarm(); + } else if ("com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE".equals(action)) { + SilentManager.this.stheartRateList = SilentManager.this.queryStheartRate(); + SilentManager.this.getStartAndEndStheartRateTime(); + SilentManager.this.isStheartRateTime(false); + } else if ("com.eqc.heartrate.action.RESULT".equals(action)) { + String time = var2.getStringExtra("time"); + int var4 = var2.getIntExtra("value", 0); + int var5 = var2.getIntExtra("type", 0); + StringBuilder var7 = new StringBuilder(); + var7.append("("); + var7.append(time); + var7.append("@"); + var7.append(var4); + var7.append("@"); + var7.append(var5); + var7.append(")"); + time = var7.toString(); // SilentManager.this.mConnection.send(API.H60(SilentManager.this.mRuntime, var6)); - } else if (ACTION_ANTIOFF_ALARM_CHANGE.equals(action)) { - SilentManager.this.sAntioffList = SilentManager.this.queryAntioff(); - SilentManager.this.getStartAndEndSantioffTime(); - SilentManager.this.mIsNeedAntioff = SilentManager.this.isAntioffTime(false); - } + } else if (ACTION_ANTIOFF_ALARM_CHANGE.equals(action)) { + SilentManager.this.sAntioffList = SilentManager.this.queryAntioff(); + SilentManager.this.getStartAndEndSantioffTime(); + SilentManager.this.mIsNeedAntioff = SilentManager.this.isAntioffTime(false); + } + } } - } } \ No newline at end of file diff --git a/app/src/main/java/com/enqualcomm/support/utils/BatteryUtil.java b/app/src/main/java/com/enqualcomm/support/utils/BatteryUtil.java index 473c6129..8e38dc22 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/BatteryUtil.java +++ b/app/src/main/java/com/enqualcomm/support/utils/BatteryUtil.java @@ -6,7 +6,6 @@ import android.content.ContextWrapper; import android.content.Intent; import android.content.IntentFilter; import android.os.BatteryManager; -import android.os.Build; import android.os.Handler; import android.os.Message; import android.os.PowerManager; @@ -15,13 +14,11 @@ import com.enqualcomm.support.Config; import com.enqualcomm.support.CoreService; import com.enqualcomm.support.LocationClient; import com.enqualcomm.support.bean.EventLooperHandlerThread; +import com.enqualcomm.support.bean.Runtime; 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.enqualcomm.support.bean.Runtime; -//import static android.content.Context.BATTERY_SERVICE; import static android.os.BatteryManager.BATTERY_STATUS_CHARGING; import static android.os.BatteryManager.BATTERY_STATUS_DISCHARGING; import static android.os.BatteryManager.BATTERY_STATUS_FULL; @@ -34,258 +31,265 @@ import static android.os.BatteryManager.EXTRA_VOLTAGE; import static com.enqualcomm.support.Constants.ACTION_BATTERYLOW; import static com.enqualcomm.support.Constants.KEY_BATTERY_EVENT; +//import static android.content.Context.BATTERY_SERVICE; + public class BatteryUtil { - private BroadcastReceiver batteryChangedReceiver = new BroadcastReceiver() { - public void onReceive(Context param1Context, Intent intent) { - if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) { - int extra_status = intent.getIntExtra(EXTRA_STATUS , BATTERY_STATUS_UNKNOWN ); - StringBuilder msg=new StringBuilder("EXTRA_STATUS = "); - switch (extra_status){ - case BATTERY_STATUS_CHARGING: - msg.append("BATTERY_STATUS_CHARGING "); - break; - case BATTERY_STATUS_UNKNOWN: - msg.append("BATTERY_STATUS_UNKNOWN "); - break; - case BATTERY_STATUS_DISCHARGING: - msg.append("BATTERY_STATUS_DISCHARGING "); - break; - case BATTERY_STATUS_FULL: - msg.append("BATTERY_STATUS_FULL "); - if (Config.isL03Tracker){ - LedUtil.setRedLedOn(false); - LedUtil.setBlueLedOn(true); - } - break; - case BATTERY_STATUS_NOT_CHARGING: - msg.append("BATTERY_STATUS_NOT_CHARGING "); - break; + private BroadcastReceiver batteryChangedReceiver = new BroadcastReceiver() { + public void onReceive(Context param1Context, Intent intent) { + if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) { + int extra_status = intent.getIntExtra(EXTRA_STATUS, BATTERY_STATUS_UNKNOWN); + StringBuilder msg = new StringBuilder("EXTRA_STATUS = "); + switch (extra_status) { + case BATTERY_STATUS_CHARGING: + msg.append("BATTERY_STATUS_CHARGING "); + break; + case BATTERY_STATUS_UNKNOWN: + msg.append("BATTERY_STATUS_UNKNOWN "); + break; + case BATTERY_STATUS_DISCHARGING: + msg.append("BATTERY_STATUS_DISCHARGING "); + break; + case BATTERY_STATUS_FULL: + msg.append("BATTERY_STATUS_FULL "); + if (Config.isL03Tracker) { + LedUtil.setRedLedOn(false); + LedUtil.setBlueLedOn(true); + } + break; + case BATTERY_STATUS_NOT_CHARGING: + msg.append("BATTERY_STATUS_NOT_CHARGING "); + break; - } - msg.append("; "); - if (extra_status == BATTERY_STATUS_CHARGING) { - if(mRuntime.getBatterychanging()==false){ - ICLogger.i("Send BatteryCharging event!"); - connection.send(protocolAPIHelper.getChargingMSG(1)); - } - mRuntime.setBatterychanging(true); - mRuntime.setBatteryLow(false); - } else { - if(mRuntime.getBatterychanging()==true){ - //send - ICLogger.i("Send no BatteryCharging event!"); - connection.send(protocolAPIHelper.getChargingMSG(0)); - } - mRuntime.setBatterychanging(false); - } - int batLevel = intent.getIntExtra(EXTRA_LEVEL, 0) * 100 / intent.getIntExtra(EXTRA_SCALE, 100); - // 当前电池电压 - int batteryVolt = intent.getIntExtra(EXTRA_VOLTAGE, -1); - mRuntime.setBatteryVoltage(batteryVolt); - msg.append("BatteryLevel "+batLevel + " BatteryVotage "+batteryVolt+"; "); - if (Config.LOG_TOFILE)ICLogger.logToFile("Battery",msg.toString()); - ICLogger.i(msg.toString()); - //处理电压 - process_battery_level(param1Context,batLevel); + } + msg.append("; "); + if (extra_status == BATTERY_STATUS_CHARGING) { + if (mRuntime.getBatterychanging() == false) { + ICLogger.i("Send BatteryCharging event!"); + connection.send(protocolAPIHelper.getChargingMSG(1)); + } + mRuntime.setBatterychanging(true); + mRuntime.setBatteryLow(false); + } else { + if (mRuntime.getBatterychanging() == true) { + //send + ICLogger.i("Send no BatteryCharging event!"); + connection.send(protocolAPIHelper.getChargingMSG(0)); + } + mRuntime.setBatterychanging(false); + } + int batLevel = intent.getIntExtra(EXTRA_LEVEL, 0) * 100 / intent.getIntExtra(EXTRA_SCALE, 100); + // 当前电池电压 + int batteryVolt = intent.getIntExtra(EXTRA_VOLTAGE, -1); + mRuntime.setBatteryVoltage(batteryVolt); + msg.append("BatteryLevel " + batLevel + " BatteryVotage " + batteryVolt + "; "); + if (Config.LOG_TOFILE) ICLogger.logToFile("Battery", msg.toString()); + ICLogger.i(msg.toString()); + //处理电压 + process_battery_level(param1Context, batLevel); - }else if (Intent.ACTION_BATTERY_LOW.equals(intent.getAction())) { - // mRuntime.setBatteryLow(true); - // if (Config.LOG_TOFILE) ICLogger.logToFile("Battery","BatteryLow !"); - // mRuntime.setAlarmType(false,mRuntime.getBatteryLow(),false,false); - //trigger AP10 报警定位 - // connection.send(protocolAPIHelper.genStringMessage("AP10",protocolAPIHelper.getWarningMSG(mRuntime))); + } else if (Intent.ACTION_BATTERY_LOW.equals(intent.getAction())) { + // mRuntime.setBatteryLow(true); + // if (Config.LOG_TOFILE) ICLogger.logToFile("Battery","BatteryLow !"); + // mRuntime.setAlarmType(false,mRuntime.getBatteryLow(),false,false); + //trigger AP10 报警定位 + // connection.send(protocolAPIHelper.genStringMessage("AP10",protocolAPIHelper.getWarningMSG(mRuntime))); - }else if (Intent.ACTION_BATTERY_OKAY.equals(intent.getAction())){ - ICLogger.i("Battery OKAY !"); - if (Config.LOG_TOFILE) ICLogger.logToFile("Battery","Battery OKAY !"); - send_batterylow_event_broadcast(param1Context,0); - }else if (Intent.ACTION_POWER_CONNECTED.equals(intent.getAction())){ - ICLogger.i("ACTION_POWER_CONNECTED !"); - mRuntime.setPowerConnected(true); - if (Config.LOG_TOFILE) ICLogger.logToFile("Battery","ACTION_POWER_CONNECTED!"); - if (Config.isL03Tracker){ - LedUtil.setRedLedOn(true); - } + } else if (Intent.ACTION_BATTERY_OKAY.equals(intent.getAction())) { + ICLogger.i("Battery OKAY !"); + if (Config.LOG_TOFILE) ICLogger.logToFile("Battery", "Battery OKAY !"); + send_batterylow_event_broadcast(param1Context, 0); + } else if (Intent.ACTION_POWER_CONNECTED.equals(intent.getAction())) { + ICLogger.i("ACTION_POWER_CONNECTED !"); + mRuntime.setPowerConnected(true); + if (Config.LOG_TOFILE) ICLogger.logToFile("Battery", "ACTION_POWER_CONNECTED!"); + if (Config.isL03Tracker) { + LedUtil.setRedLedOn(true); + } - }else if (Intent.ACTION_POWER_DISCONNECTED.equals(intent.getAction())){ - ICLogger.i("ACTION_POWER_DISCONNECTED!"); - mRuntime.setPowerConnected(false); - if (Config.LOG_TOFILE) ICLogger.logToFile("Battery","ACTION_POWER_DISCONNECTED !"); + } else if (Intent.ACTION_POWER_DISCONNECTED.equals(intent.getAction())) { + ICLogger.i("ACTION_POWER_DISCONNECTED!"); + mRuntime.setPowerConnected(false); + if (Config.LOG_TOFILE) ICLogger.logToFile("Battery", "ACTION_POWER_DISCONNECTED !"); - if (Config.isL03Tracker){ - LedUtil.setRedLedOn(false); - } + if (Config.isL03Tracker) { + LedUtil.setRedLedOn(false); + } + } } - } }; - private Handler mHandler=null; - PowerManager.WakeLock mWakeLock = null; + private Handler mHandler = null; + PowerManager.WakeLock mWakeLock = null; - private static void play_waning_notify(Context context){ - AudioService.getInstance().play(context.getAssets(), "warning.mp3"); - } + private static void play_waning_notify(Context context) { + AudioService.getInstance().play(context.getAssets(), "warning.mp3"); + } - //根据电池电压进行低电报警等状态处理 - public void process_battery_level(Context param1Context, int batLevel){ - if (batLevel >= 100) { - mRuntime.setBattery(String.format("%03d",100)); - mRuntime.setBattery(100); - mRuntime.setHaveBatteryChange(false); - mRuntime.setBatteryLow(false); - } else if (batLevel<100 && batLevel >= 25) { - mRuntime.setBattery(String.format("%03d",batLevel)); - mRuntime.setBattery(batLevel); - mRuntime.setHaveBatteryChange(false); - mRuntime.setBatteryLow(false); - } else if (batLevel<25 && batLevel > 15) { - mRuntime.setBattery(String.format("%03d",batLevel)); - mRuntime.setBattery(batLevel); - mRuntime.setHaveBatteryChange(true); - mRuntime.setBatteryLow(false); - } else if (batLevel<=15 && batLevel > 10) { - if (Config.LOG_TOFILE) ICLogger.logToFile("Battery","BatteryLow less than 15%!"); - checkAndSendBatteryEvent(param1Context,mRuntime); - mRuntime.setBattery(String.format("%03d",batLevel)); - mRuntime.setBattery(batLevel); - mRuntime.setHaveBatteryChange(true); - mRuntime.setBatteryLow(true); - } else if (batLevel<=10 && batLevel > 5) { - if (Config.LOG_TOFILE) ICLogger.logToFile("Battery","BatteryLow less than 10%!"); - checkAndSendBatteryEvent(param1Context,mRuntime); - mRuntime.setBattery(String.format("%03d",batLevel)); - mRuntime.setBattery(batLevel); - mRuntime.setHaveBatteryChange(true); - mRuntime.setBatteryLow(true); - } else { - if (Config.LOG_TOFILE) ICLogger.logToFile("Battery","BatteryLow less than 5% !"); - checkAndSendBatteryEvent(param1Context,mRuntime); - mRuntime.setBattery(String.format("%03d",batLevel)); - mRuntime.setBattery(batLevel); - mRuntime.setHaveBatteryChange(true); - mRuntime.setBatteryLow(true); + //根据电池电压进行低电报警等状态处理 + public void process_battery_level(Context param1Context, int batLevel) { + if (batLevel >= 100) { + mRuntime.setBattery(String.format("%03d", 100)); + mRuntime.setBattery(100); + mRuntime.setHaveBatteryChange(false); + mRuntime.setBatteryLow(false); + } else if (batLevel < 100 && batLevel >= 25) { + mRuntime.setBattery(String.format("%03d", batLevel)); + mRuntime.setBattery(batLevel); + mRuntime.setHaveBatteryChange(false); + mRuntime.setBatteryLow(false); + } else if (batLevel < 25 && batLevel > 15) { + mRuntime.setBattery(String.format("%03d", batLevel)); + mRuntime.setBattery(batLevel); + mRuntime.setHaveBatteryChange(true); + mRuntime.setBatteryLow(false); + } else if (batLevel <= 15 && batLevel > 10) { + if (Config.LOG_TOFILE) ICLogger.logToFile("Battery", "BatteryLow less than 15%!"); + checkAndSendBatteryEvent(param1Context, mRuntime); + mRuntime.setBattery(String.format("%03d", batLevel)); + mRuntime.setBattery(batLevel); + mRuntime.setHaveBatteryChange(true); + mRuntime.setBatteryLow(true); + } else if (batLevel <= 10 && batLevel > 5) { + if (Config.LOG_TOFILE) ICLogger.logToFile("Battery", "BatteryLow less than 10%!"); + checkAndSendBatteryEvent(param1Context, mRuntime); + mRuntime.setBattery(String.format("%03d", batLevel)); + mRuntime.setBattery(batLevel); + mRuntime.setHaveBatteryChange(true); + mRuntime.setBatteryLow(true); + } else { + if (Config.LOG_TOFILE) ICLogger.logToFile("Battery", "BatteryLow less than 5% !"); + checkAndSendBatteryEvent(param1Context, mRuntime); + mRuntime.setBattery(String.format("%03d", batLevel)); + mRuntime.setBattery(batLevel); + mRuntime.setHaveBatteryChange(true); + mRuntime.setBatteryLow(true); + } } - } - public static void checkAndSendBatteryEvent(Context context, Runtime runtime){ + public static void checkAndSendBatteryEvent(Context context, Runtime runtime) { - //没有充电,上次电池level > 15% , 上次电池并且不是 低电状态,则报警 - if (runtime.isPowerConnected()==false && runtime.getBatterylevel()<= 15 && runtime.getBatterylevel()> 10 && runtime.getBatteryLow()==false) { - Intent intent = new Intent(); - intent.setAction(ACTION_BATTERYLOW); - intent.putExtra(KEY_BATTERY_EVENT, 1); - context.sendBroadcast(intent); - play_waning_notify(context); - runtime.setAlarmType(Runtime.AlarmType.ALARM_LOWBATTERY); - //trigger AP10 报警定位 + //没有充电,上次电池level > 15% , 上次电池并且不是 低电状态,则报警 + if (runtime.isPowerConnected() == false && runtime.getBatterylevel() <= 15 && runtime.getBatterylevel() > 10 && runtime.getBatteryLow() == false) { + Intent intent = new Intent(); + intent.setAction(ACTION_BATTERYLOW); + intent.putExtra(KEY_BATTERY_EVENT, 1); + context.sendBroadcast(intent); + play_waning_notify(context); + runtime.setAlarmType(Runtime.AlarmType.ALARM_LOWBATTERY); + //trigger AP10 报警定位 // Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime)); - ICLogger.i("triggerSOSLocationProcess "); - LocationClient.getInstance().triggerSOSLocationProcess(); - }else if (runtime.isPowerConnected()==false && runtime.getBatterylevel()<= 10 && runtime.getBatterylevel()> 5 && runtime.getBatteryLow()==false) { - //百分之10以内的还不能正常报数,需要后面再优化 - Intent intent=new Intent(); - intent.setAction(ACTION_BATTERYLOW); - intent.putExtra(KEY_BATTERY_EVENT,1); - context.sendBroadcast(intent); - play_waning_notify(context); - runtime.setAlarmType(Runtime.AlarmType.ALARM_LOWBATTERY); - //trigger AP10 报警定位 + ICLogger.i("triggerSOSLocationProcess "); + LocationClient.getInstance().triggerSOSLocationProcess(); + } else if (runtime.isPowerConnected() == false && runtime.getBatterylevel() <= 10 && runtime.getBatterylevel() > 5 && runtime.getBatteryLow() == false) { + //百分之10以内的还不能正常报数,需要后面再优化 + Intent intent = new Intent(); + intent.setAction(ACTION_BATTERYLOW); + intent.putExtra(KEY_BATTERY_EVENT, 1); + context.sendBroadcast(intent); + play_waning_notify(context); + runtime.setAlarmType(Runtime.AlarmType.ALARM_LOWBATTERY); + //trigger AP10 报警定位 // Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime)); - ICLogger.i("triggerSOSLocationProcess "); - LocationClient.getInstance().triggerSOSLocationProcess(); - }else if (runtime.isPowerConnected()==false && runtime.getBatterylevel()<= 5 ) { - //没有充电,上次电池level > 15% , 上次电池并且不是 电池低电状态,则报警 - Intent intent=new Intent(); - intent.setAction(ACTION_BATTERYLOW); - intent.putExtra(KEY_BATTERY_EVENT,1); - context.sendBroadcast(intent); - play_waning_notify(context); - runtime.setAlarmType(Runtime.AlarmType.ALARM_LOWBATTERY); - //trigger AP10 报警定位 + ICLogger.i("triggerSOSLocationProcess "); + LocationClient.getInstance().triggerSOSLocationProcess(); + } else if (runtime.isPowerConnected() == false && runtime.getBatterylevel() <= 5) { + //没有充电,上次电池level > 15% , 上次电池并且不是 电池低电状态,则报警 + Intent intent = new Intent(); + intent.setAction(ACTION_BATTERYLOW); + intent.putExtra(KEY_BATTERY_EVENT, 1); + context.sendBroadcast(intent); + play_waning_notify(context); + runtime.setAlarmType(Runtime.AlarmType.ALARM_LOWBATTERY); + //trigger AP10 报警定位 // Deliver.sendLocationMSG( protocolAPIHelper.getWarningMSG(runtime)); - ICLogger.i("triggerSOSLocationProcess "); - LocationClient.getInstance().triggerSOSLocationProcess(); + ICLogger.i("triggerSOSLocationProcess "); + LocationClient.getInstance().triggerSOSLocationProcess(); + } } - } - 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); - } - }); - } - private StringBuffer mBuffer; - - Runtime mRuntime; - Connection connection; - public BatteryUtil(Runtime paramRuntime,Connection _connection) { - this.mRuntime = paramRuntime; - connection = _connection; - if (mHandler==null) { - mHandler = new Handler(EventLooperHandlerThread.makeLooper(BatteryUtil.class.getSimpleName())) { - public void handleMessage(Message msg) { - super.handleMessage(msg); - if (msg.what == 100) { - if (mWakeLock != null && mWakeLock.isHeld()) { - mWakeLock.release(); + 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); } - }else if (msg.what == 200){ - AudioService.getInstance().stop(); - } - } - }; + }); } - if (mWakeLock==null) { - PowerManager mPowerManager = (PowerManager) CoreService.getInstance().getSystemService(Context.POWER_SERVICE); - mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, AntiMonitorService.class.getSimpleName()); + + private StringBuffer mBuffer; + + Runtime mRuntime; + Connection connection; + + public BatteryUtil(Runtime paramRuntime, Connection _connection) { + this.mRuntime = paramRuntime; + connection = _connection; + + if (mHandler == null) { + mHandler = new Handler(EventLooperHandlerThread.getInstance().makeLooper()) { + public void handleMessage(Message msg) { + super.handleMessage(msg); + if (msg.what == 100) { + if (mWakeLock != null && mWakeLock.isHeld()) { + mWakeLock.release(); + } + } else if (msg.what == 200) { + AudioService.getInstance().stop(); + } + } + }; + } + if (mWakeLock == null) { + PowerManager mPowerManager = (PowerManager) CoreService.getInstance().getSystemService(Context.POWER_SERVICE); + mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, AntiMonitorService.class.getSimpleName()); + } + } - } - - public void registerBroadReceiver() { - IntentFilter intentFilter = new IntentFilter(); - intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED); - intentFilter.addAction(Intent.ACTION_BATTERY_LOW); - intentFilter.addAction(Intent.ACTION_BATTERY_OKAY); - intentFilter.addAction(Intent.ACTION_POWER_CONNECTED); - intentFilter.addAction(Intent.ACTION_POWER_DISCONNECTED); - (this.mRuntime.getContextProxy()).context.registerReceiver(this.batteryChangedReceiver, intentFilter); - } + public void registerBroadReceiver() { + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED); + intentFilter.addAction(Intent.ACTION_BATTERY_LOW); + intentFilter.addAction(Intent.ACTION_BATTERY_OKAY); + intentFilter.addAction(Intent.ACTION_POWER_CONNECTED); + intentFilter.addAction(Intent.ACTION_POWER_DISCONNECTED); + (this.mRuntime.getContextProxy()).context.registerReceiver(this.batteryChangedReceiver, intentFilter); + } - public int getBatteryLevel(Context context) { + public int getBatteryLevel(Context context) { // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { // BatteryManager batteryManager = (BatteryManager)context.getSystemService(BATTERY_SERVICE); // return batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY); // } else { - Intent intent = new ContextWrapper(context.getApplicationContext()).registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); - int batLevel = (intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) * 100) / - intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1); + Intent intent = new ContextWrapper(context.getApplicationContext()).registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); + int batLevel = (intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) * 100) / + intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1); - process_battery_level(context,batLevel); + process_battery_level(context, batLevel); - return batLevel; - } + return batLevel; + } - public boolean isPowerConnected(Context context){ + public boolean isPowerConnected(Context context) { - IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); - Intent batteryStatus = context.registerReceiver(null, ifilter); + IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); + Intent batteryStatus = context.registerReceiver(null, ifilter); //你可以读到充电状态,如果在充电,可以读到是usb还是交流电 // 是否在充电 - int status = batteryStatus.getIntExtra(EXTRA_STATUS, -1); - boolean isCharging = (status == BATTERY_STATUS_CHARGING) ;//|| status == BatteryManager.BATTERY_STATUS_FULL; - boolean isCharging2 = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1) != 0; - ICLogger.d("isCharging = " +isCharging+" isCharging2 "+ isCharging2 ); - return isCharging2; - } + int status = batteryStatus.getIntExtra(EXTRA_STATUS, -1); + boolean isCharging = (status == BATTERY_STATUS_CHARGING);//|| status == BatteryManager.BATTERY_STATUS_FULL; + boolean isCharging2 = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1) != 0; + ICLogger.d("isCharging = " + isCharging + " isCharging2 " + isCharging2); + return isCharging2; + } - public void unregisterBroadReceiver() { (this.mRuntime.getContextProxy()).context.unregisterReceiver(this.batteryChangedReceiver); } + public void unregisterBroadReceiver() { + (this.mRuntime.getContextProxy()).context.unregisterReceiver(this.batteryChangedReceiver); + } } diff --git a/app/src/main/java/com/enqualcomm/support/utils/ContextProxy.java b/app/src/main/java/com/enqualcomm/support/utils/ContextProxy.java index a7fca225..f8c9f7a7 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/ContextProxy.java +++ b/app/src/main/java/com/enqualcomm/support/utils/ContextProxy.java @@ -10,334 +10,339 @@ import android.hardware.SensorManager; import android.location.LocationManager; import android.net.Uri; import android.net.wifi.WifiManager; -import android.os.Build; -import android.os.Environment; import android.os.Handler; -import android.os.PowerManager; +import android.os.HandlerThread; import android.telephony.TelephonyManager; -import android.util.Log; - import com.enqualcomm.support.Config; -import com.enqualcomm.support.Constants; import com.enqualcomm.support.ICContentProvider; import com.enqualcomm.support.R; import com.enqualcomm.support.bean.Alarm; -import com.enqualcomm.support.bean.EventLooperHandlerThread; import com.enqualcomm.support.bean.NoticeContent; -import com.enqualcomm.support.bean.Silent; import com.enqualcomm.support.bean.Runtime; -import com.enqualcomm.support.bean.VoiceContent; import com.enqualcomm.support.service.AudioService; -import com.enqualcomm.support.service.Deliver; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Calendar; -import java.util.Iterator; -import java.util.concurrent.TimeUnit; - import static android.app.PendingIntent.FLAG_UPDATE_CURRENT; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static com.enqualcomm.support.Constants.ACTION_ISCONNECTED; import static com.enqualcomm.support.Constants.ACTION_KEEPSIT_ALARM; -import static com.enqualcomm.support.Constants.ACTION_SIT_ALARM; import static com.enqualcomm.support.Constants.ActionReceivePushTxt; import static com.enqualcomm.support.Constants.ActionSrvPushTxt; import static com.enqualcomm.support.Constants.DIALOG_ACTION; public class ContextProxy { - private static final long ONE_WEEK = 604800000L; - - private final AlarmManager alarmManager; - - public Context context; - - private final LocationManager locationManager; - - private final ContentResolver resolver; - - private final SensorManager sensorManager; - - private final TelephonyManager telephonyManager; - - private final WifiManager wifiManager; - private static Handler mHandler=new Handler(EventLooperHandlerThread.makeLooper(ContextProxy.class.getSimpleName())); - public ContextProxy(Context _context) { - this.context = _context; - this.resolver = context.getContentResolver(); - this.locationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE); - this.alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); - this.telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); - this.wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE); - this.sensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE); - - } - - private PendingIntent getPendingIntent(String paramString1, String paramString2, String paramString3, String name, int paramInt) { - StringBuilder stringBuilder = new StringBuilder("alarm:"); - stringBuilder.append(paramString1); - stringBuilder.append(","); - stringBuilder.append(paramString2); - stringBuilder.append(","); - stringBuilder.append(paramString3); - stringBuilder.append(","); - stringBuilder.append(name); - stringBuilder.append(","); - stringBuilder.append(paramInt); - Intent intent = new Intent("com.enqualcomm.icare.ALARM", Uri.parse(stringBuilder.toString())); - return PendingIntent.getActivity(this.context, 0, intent, FLAG_UPDATE_CURRENT); - } - - private PendingIntent getPendingIntent(String noticeTime, String noticeName, String noticeNumber, String noticeID, String noticeCategory, String noticeFrequency, String noticeContent) { - StringBuilder stringBuilder = new StringBuilder("notice:"); - stringBuilder.append(noticeTime); - stringBuilder.append(","); - stringBuilder.append(noticeName); - stringBuilder.append(","); - stringBuilder.append(noticeNumber); - stringBuilder.append(","); - stringBuilder.append(noticeID); - stringBuilder.append(","); - stringBuilder.append(noticeCategory); - stringBuilder.append(","); - stringBuilder.append(noticeFrequency); - stringBuilder.append(","); - stringBuilder.append(noticeContent); - Intent intent = new Intent("com.enqualcomm.icare.NOTICE", Uri.parse(stringBuilder.toString())); - - return PendingIntent.getActivity(this.context, 0, intent, FLAG_UPDATE_CURRENT); - } - - private void initAlarmAndSilent() { - - Calendar calendar2 = Calendar.getInstance(); - calendar2.set(Calendar.SECOND, 0); - long l = System.currentTimeMillis(); - Cursor cursor2 = this.context.getContentResolver().query(ICContentProvider.ALARM_URI, null, null, null, null); - byte b2 = 3; - byte b1 = 5; - char c = '\002'; - if (cursor2 != null) { - while (cursor2.moveToNext()) { - try { - if ("ON".equals(cursor2.getString(4))) { - String str2 = cursor2.getString(1); - String str1 = cursor2.getString(c); - String str3 = cursor2.getString(b2); - String str4 = cursor2.getString(b1); - calendar2.set(Calendar.HOUR_OF_DAY, Integer.parseInt(str2.substring(c, 4))); - calendar2.set(Calendar.MINUTE, Integer.parseInt(str2.substring(b1, 7))); - char[] arrayOfChar = str1.toCharArray(); - int i = arrayOfChar.length; - byte b = 1; - while (b < i) { - c = (char) (arrayOfChar[b] - '/'); //将ascii数字字符转换为对应的数字 - calendar2.set(Calendar.DAY_OF_WEEK, c); - long l1 = calendar2.getTimeInMillis(); - if (l1 <= l) - l1 += ONE_WEEK; - PendingIntent pendingIntent = getPendingIntent(str2, str1, str3, str4, c); - AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent); - b++; - c = '\002'; - b1 = 5; - b2 = 3; - } - } - }catch (Exception e){ - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); + private static final long ONE_WEEK = 604800000L; + + private final AlarmManager alarmManager; + + public Context context; + + private final LocationManager locationManager; + + private final ContentResolver resolver; + + private final SensorManager sensorManager; + + private final TelephonyManager telephonyManager; + + private final WifiManager wifiManager; + private static Handler mHandler = null; + + public ContextProxy(Context _context) { + if (mHandler == null) { + HandlerThread handlerThread = new HandlerThread("ic:context-proxy-handler-thread"); + handlerThread.start(); + mHandler = new Handler(handlerThread.getLooper()); } - } - cursor2.close(); + this.context = _context; + this.resolver = context.getContentResolver(); + this.locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); + this.alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); + this.telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); + this.wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); + this.sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE); + + } + + private PendingIntent getPendingIntent(String paramString1, String paramString2, String paramString3, String name, int paramInt) { + StringBuilder stringBuilder = new StringBuilder("alarm:"); + stringBuilder.append(paramString1); + stringBuilder.append(","); + stringBuilder.append(paramString2); + stringBuilder.append(","); + stringBuilder.append(paramString3); + stringBuilder.append(","); + stringBuilder.append(name); + stringBuilder.append(","); + stringBuilder.append(paramInt); + Intent intent = new Intent("com.enqualcomm.icare.ALARM", Uri.parse(stringBuilder.toString())); + return PendingIntent.getActivity(this.context, 0, intent, FLAG_UPDATE_CURRENT); + } + + private PendingIntent getPendingIntent(String noticeTime, String noticeName, String noticeNumber, String noticeID, String noticeCategory, String noticeFrequency, String noticeContent) { + StringBuilder stringBuilder = new StringBuilder("notice:"); + stringBuilder.append(noticeTime); + stringBuilder.append(","); + stringBuilder.append(noticeName); + stringBuilder.append(","); + stringBuilder.append(noticeNumber); + stringBuilder.append(","); + stringBuilder.append(noticeID); + stringBuilder.append(","); + stringBuilder.append(noticeCategory); + stringBuilder.append(","); + stringBuilder.append(noticeFrequency); + stringBuilder.append(","); + stringBuilder.append(noticeContent); + Intent intent = new Intent("com.enqualcomm.icare.NOTICE", Uri.parse(stringBuilder.toString())); + + return PendingIntent.getActivity(this.context, 0, intent, FLAG_UPDATE_CURRENT); } - Calendar calendar1 = Calendar.getInstance(); - calendar1.set(Calendar.SECOND, 0); - Cursor cursor1 = this.context.getContentResolver().query(ICContentProvider.NOTICE_URL, null, null, null, null); - if (cursor1 != null) { - while (cursor1.moveToNext()) { - try { - String str1 = cursor1.getString(1); - String str2 = cursor1.getString(2); - String str3 = cursor1.getString(3); - String str4 = cursor1.getString(4); - String str5 = cursor1.getString(5); - String str6 = cursor1.getString(6); - String str7 = cursor1.getString(6); - if (str1 != null) { - String year = str1.substring(0, 4); - String month = str1.substring(4, 6); - String day = str1.substring(6, 8); - String hour = str1.substring(8, 10); - String minute = str1.substring(10, 12); - calendar1.set(Calendar.YEAR, Integer.parseInt(year)); - calendar1.set(Calendar.MONTH, Integer.parseInt(month)); - calendar1.set(Calendar.DAY_OF_MONTH, Integer.parseInt(day)); - calendar1.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hour)); - calendar1.set(Calendar.MINUTE, Integer.parseInt(minute)); - long l1 = calendar1.getTimeInMillis(); - if (l1 > l) { - PendingIntent pendingIntent = getPendingIntent(str1, str2, str3, str4, str5, str6, str7); - AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent); + + private void initAlarmAndSilent() { + + Calendar calendar2 = Calendar.getInstance(); + calendar2.set(Calendar.SECOND, 0); + long l = System.currentTimeMillis(); + Cursor cursor2 = this.context.getContentResolver().query(ICContentProvider.ALARM_URI, null, null, null, null); + byte b2 = 3; + byte b1 = 5; + char c = '\002'; + if (cursor2 != null) { + while (cursor2.moveToNext()) { + try { + if ("ON".equals(cursor2.getString(4))) { + String str2 = cursor2.getString(1); + String str1 = cursor2.getString(c); + String str3 = cursor2.getString(b2); + String str4 = cursor2.getString(b1); + calendar2.set(Calendar.HOUR_OF_DAY, Integer.parseInt(str2.substring(c, 4))); + calendar2.set(Calendar.MINUTE, Integer.parseInt(str2.substring(b1, 7))); + char[] arrayOfChar = str1.toCharArray(); + int i = arrayOfChar.length; + byte b = 1; + while (b < i) { + c = (char) (arrayOfChar[b] - '/'); //将ascii数字字符转换为对应的数字 + calendar2.set(Calendar.DAY_OF_WEEK, c); + long l1 = calendar2.getTimeInMillis(); + if (l1 <= l) + l1 += ONE_WEEK; + PendingIntent pendingIntent = getPendingIntent(str2, str1, str3, str4, c); + AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent); + b++; + c = '\002'; + b1 = 5; + b2 = 3; + } + } + } catch (Exception e) { + e.printStackTrace(); + ICLogger.e(e.getMessage(), e); + } + } + cursor2.close(); + } + Calendar calendar1 = Calendar.getInstance(); + calendar1.set(Calendar.SECOND, 0); + Cursor cursor1 = this.context.getContentResolver().query(ICContentProvider.NOTICE_URL, null, null, null, null); + if (cursor1 != null) { + while (cursor1.moveToNext()) { + try { + String str1 = cursor1.getString(1); + String str2 = cursor1.getString(2); + String str3 = cursor1.getString(3); + String str4 = cursor1.getString(4); + String str5 = cursor1.getString(5); + String str6 = cursor1.getString(6); + String str7 = cursor1.getString(6); + if (str1 != null) { + String year = str1.substring(0, 4); + String month = str1.substring(4, 6); + String day = str1.substring(6, 8); + String hour = str1.substring(8, 10); + String minute = str1.substring(10, 12); + calendar1.set(Calendar.YEAR, Integer.parseInt(year)); + calendar1.set(Calendar.MONTH, Integer.parseInt(month)); + calendar1.set(Calendar.DAY_OF_MONTH, Integer.parseInt(day)); + calendar1.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hour)); + calendar1.set(Calendar.MINUTE, Integer.parseInt(minute)); + long l1 = calendar1.getTimeInMillis(); + if (l1 > l) { + PendingIntent pendingIntent = getPendingIntent(str1, str2, str3, str4, str5, str6, str7); + AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent); + } + } + } catch (Exception e) { + e.printStackTrace(); + ICLogger.e(e.getMessage(), e); + } } - } - }catch (Exception e){ - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); + cursor1.close(); } - } - cursor1.close(); } - } - - public LocationManager getLocationManager() { return this.locationManager; } - - public ContentResolver getResolver() { return this.resolver; } - - public SensorManager getSensorManager() { return this.sensorManager; } - - public TelephonyManager getTelephonyManager() { return this.telephonyManager; } - - public WifiManager getWifiManager() { return this.wifiManager; } - - - public void resolverAlarm(ArrayList paramArrayList) { - Cursor cursor = this.context.getContentResolver().query(ICContentProvider.ALARM_URI, null, null, null, null); - char c = '\001'; - if (cursor != null) { - while (cursor.moveToNext()) { - if ("ON".equals(cursor.getString(4))) { - String str1 = cursor.getString(c); - String str2 = cursor.getString(2); - String str3 = cursor.getString(3); - String str4 = cursor.getString(5); - char[] arrayOfChar = str2.toCharArray(); - int i = arrayOfChar.length; - byte b = 1; - while (b < i) { - c = arrayOfChar[b]; - this.alarmManager.cancel(getPendingIntent(str1, str2, str3, str4, c - '/')); - b++; - c = '\001'; - } + + public LocationManager getLocationManager() { + return this.locationManager; + } + + public ContentResolver getResolver() { + return this.resolver; + } + + public SensorManager getSensorManager() { + return this.sensorManager; + } + + public TelephonyManager getTelephonyManager() { + return this.telephonyManager; + } + + public WifiManager getWifiManager() { + return this.wifiManager; + } + + + public void resolverAlarm(ArrayList paramArrayList) { + Cursor cursor = this.context.getContentResolver().query(ICContentProvider.ALARM_URI, null, null, null, null); + char c = '\001'; + if (cursor != null) { + while (cursor.moveToNext()) { + if ("ON".equals(cursor.getString(4))) { + String str1 = cursor.getString(c); + String str2 = cursor.getString(2); + String str3 = cursor.getString(3); + String str4 = cursor.getString(5); + char[] arrayOfChar = str2.toCharArray(); + int i = arrayOfChar.length; + byte b = 1; + while (b < i) { + c = arrayOfChar[b]; + this.alarmManager.cancel(getPendingIntent(str1, str2, str3, str4, c - '/')); + b++; + c = '\001'; + } + } + } + cursor.close(); + } + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.SECOND, 0); + long l = System.currentTimeMillis(); + for (Alarm alarm : paramArrayList) { + long l1 = l; + + if ("ON".equals(alarm.status)) { + try { + int i = Integer.parseInt(alarm.time.substring(2, 4)); + int j = Integer.parseInt(alarm.time.substring(5, 7)); + calendar.set(Calendar.HOUR_OF_DAY, i); + calendar.set(Calendar.MINUTE, j); + char[] arrayOfChar = alarm.week.toCharArray(); + i = arrayOfChar.length; + j = 1; + while (true) { + l1 = l; + if (j < i) { + c = (char) (arrayOfChar[j] - '/'); + calendar.set(Calendar.DAY_OF_WEEK, c); + long l2 = calendar.getTimeInMillis(); + l1 = l2; + if (l2 <= l) + l1 = l2 + ONE_WEEK; + PendingIntent pendingIntent = getPendingIntent(alarm.time, alarm.week, alarm.ring, alarm.name, c); + AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent); + j++; + continue; + } + break; + } + } catch (Exception e) { + e.printStackTrace(); + ICLogger.e(e.getMessage(), e); + } + } + l = l1; } - } - cursor.close(); } - Calendar calendar = Calendar.getInstance(); - calendar.set(Calendar.SECOND, 0); - long l = System.currentTimeMillis(); - for (Alarm alarm : paramArrayList) { - long l1 = l; - - if ("ON".equals(alarm.status)) { - try { - int i = Integer.parseInt(alarm.time.substring(2, 4)); - int j = Integer.parseInt(alarm.time.substring(5, 7)); - calendar.set(Calendar.HOUR_OF_DAY, i); - calendar.set(Calendar.MINUTE, j); - char[] arrayOfChar = alarm.week.toCharArray(); - i = arrayOfChar.length; - j = 1; - while (true) { - l1 = l; - if (j < i) { - c = (char) (arrayOfChar[j] - '/'); - calendar.set(Calendar.DAY_OF_WEEK, c); - long l2 = calendar.getTimeInMillis(); - l1 = l2; - if (l2 <= l) - l1 = l2 + ONE_WEEK; - PendingIntent pendingIntent = getPendingIntent(alarm.time, alarm.week, alarm.ring, alarm.name, c); - AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent); - j++; - continue; + + public void resolverNotice(ArrayList paramArrayList) { + Cursor cursor = this.context.getContentResolver().query(ICContentProvider.NOTICE_URL, null, null, null, null); + if (cursor != null) { + while (cursor.moveToNext()) { + String str1 = cursor.getString(1); + String str2 = cursor.getString(2); + String str3 = cursor.getString(3); + String str4 = cursor.getString(4); + String str5 = cursor.getString(5); + String str6 = cursor.getString(6); + String str7 = cursor.getString(6); + this.alarmManager.cancel(getPendingIntent(str1, str2, str3, str4, str5, str6, str7)); + } + cursor.close(); + } + for (NoticeContent noticeContent : paramArrayList) { + String str1 = noticeContent.noticeTime; + String str2 = noticeContent.noticeName; + String str3 = noticeContent.noticeNumber; + String str4 = noticeContent.noticeID; + String str5 = noticeContent.noticeCategory; + String str6 = noticeContent.noticeFrequency; + String str7 = noticeContent.noticeContent; + Calendar calendar = Calendar.getInstance(); + long l = System.currentTimeMillis(); + calendar.set(Calendar.SECOND, 0); + if (str1 != null) { + try { + String str8 = str1.substring(0, 4); + String str9 = str1.substring(4, 6); + String str10 = str1.substring(6, 8); + String str11 = str1.substring(8, 10); + String str12 = str1.substring(10, 12); + calendar.set(Calendar.YEAR, Integer.parseInt(str8)); + calendar.set(Calendar.MONTH, Integer.parseInt(str9) - 1); + calendar.set(Calendar.DAY_OF_MONTH, Integer.parseInt(str10)); + calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(str11)); + calendar.set(Calendar.MINUTE, Integer.parseInt(str12)); + long l1 = calendar.getTimeInMillis(); + if (l1 >= l) { + PendingIntent pendingIntent = getPendingIntent(str1, str2, str3, str4, str5, str6, str7); + AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent); + } + } catch (Exception e) { + e.printStackTrace(); + ICLogger.e(e.getMessage(), e); + } } - break; - } - }catch (Exception e){ - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); } - } - l = l1; } - } - - public void resolverNotice(ArrayList paramArrayList) { - Cursor cursor = this.context.getContentResolver().query(ICContentProvider.NOTICE_URL, null, null, null, null); - if (cursor != null) { - while (cursor.moveToNext()) { - String str1 = cursor.getString(1); - String str2 = cursor.getString(2); - String str3 = cursor.getString(3); - String str4 = cursor.getString(4); - String str5 = cursor.getString(5); - String str6 = cursor.getString(6); - String str7 = cursor.getString(6); - this.alarmManager.cancel(getPendingIntent(str1, str2, str3, str4, str5, str6, str7)); - } - cursor.close(); + + private static final String PED_TOTAL_KEY = "PED_TOTAL"; + private static final String PED_FINISH_ACTION = "com.ic.action.PED_FINISH"; + + public void brodcastResetStepCount(int StepCount) { + Intent intent = new Intent(); + intent.putExtra(PED_TOTAL_KEY, StepCount); + intent.setAction(PED_FINISH_ACTION); + ICLogger.i("send broadcast action " + PED_FINISH_ACTION + ", key " + PED_TOTAL_KEY + " value " + StepCount); + this.context.sendBroadcast(intent); } - for (NoticeContent noticeContent : paramArrayList) { - String str1 = noticeContent.noticeTime; - String str2 = noticeContent.noticeName; - String str3 = noticeContent.noticeNumber; - String str4 = noticeContent.noticeID; - String str5 = noticeContent.noticeCategory; - String str6 = noticeContent.noticeFrequency; - String str7 = noticeContent.noticeContent; - Calendar calendar = Calendar.getInstance(); - long l = System.currentTimeMillis(); - calendar.set(Calendar.SECOND, 0); - if (str1 != null) { - try { - String str8 = str1.substring(0, 4); - String str9 = str1.substring(4, 6); - String str10 = str1.substring(6, 8); - String str11 = str1.substring(8, 10); - String str12 = str1.substring(10, 12); - calendar.set(Calendar.YEAR, Integer.parseInt(str8)); - calendar.set(Calendar.MONTH, Integer.parseInt(str9) - 1); - calendar.set(Calendar.DAY_OF_MONTH, Integer.parseInt(str10)); - calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(str11)); - calendar.set(Calendar.MINUTE, Integer.parseInt(str12)); - long l1 = calendar.getTimeInMillis(); - if (l1 >= l) { - PendingIntent pendingIntent = getPendingIntent(str1, str2, str3, str4, str5, str6, str7); - AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent); - } - }catch (Exception e){ - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); - } - } + + public void sendBrodcast(String action, Intent intent) { + intent.setAction(action); + ICLogger.i("send broadcast action " + action); + this.context.sendBroadcast(intent); + } + + public void sendBroadcast(String cmd, Runtime dev) { + Intent intent = new Intent(); + intent.putExtra("longitude", dev.getLocationInstance().getLocation().lon); + intent.putExtra("latitude", dev.getLocationInstance().getLocation().lat); + intent.setAction(cmd); + this.context.sendBroadcast(intent); } - } - private static final String PED_TOTAL_KEY = "PED_TOTAL"; - private static final String PED_FINISH_ACTION = "com.ic.action.PED_FINISH"; - public void brodcastResetStepCount(int StepCount){ - Intent intent = new Intent(); - intent.putExtra(PED_TOTAL_KEY, StepCount); - intent.setAction(PED_FINISH_ACTION); - ICLogger.i("send broadcast action "+PED_FINISH_ACTION+", key "+PED_TOTAL_KEY+" value "+StepCount); - this.context.sendBroadcast(intent); - } - public void sendBrodcast(String action,Intent intent){ - intent.setAction(action); - ICLogger.i("send broadcast action "+action); - this.context.sendBroadcast(intent); - } - - public void sendBroadcast(String cmd, Runtime dev) { - Intent intent = new Intent(); - intent.putExtra("longitude", dev.getLocationInstance().getLocation().lon); - intent.putExtra("latitude", dev.getLocationInstance().getLocation().lat); - intent.setAction(cmd); - this.context.sendBroadcast(intent); - } // public void sendBroadcastVoiceReceived(String cmd, VoiceContent vcontent) { // Intent intent = new Intent(); @@ -347,158 +352,161 @@ public class ContextProxy { // this.context.sendBroadcast(intent); // } - public void sendBroadcastServerConnectionChanged(boolean paramBoolean) { - Intent intent = new Intent(); - intent.setAction(ACTION_ISCONNECTED); - intent.putExtra("isConnected", paramBoolean); - Util.setSystemProperties("persist.sys.server_connected",paramBoolean?"true":"false"); - this.context.sendBroadcast(intent); - } - - public void saveMstToSMSDB(String msg){ - Intent intent = new Intent(); - intent.setAction(ActionReceivePushTxt); - intent.putExtra("txtMsg", msg); - intent.addFlags(FLAG_ACTIVITY_NEW_TASK); - this.context.sendBroadcast(intent); - } - public void sendMsgBroadcast(String msg, int msgType) { - sendMsgBroadcast(this.context,msg,msgType); - } - private static void play_waning_notify(Context context){ - AudioService.getInstance().play(context.getAssets(), "warning.mp3"); - } - public static void sendMsgBroadcast(Context _context,String msg, int msgType) { - - if (msgType==0) { - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - //本应用弹出消息框 - if (Config.noPushTxtNotifyDialog == false) { - Intent intent = new Intent(); - intent.setAction(DIALOG_ACTION); - intent.putExtra("pushtxt", msg); - _context.sendBroadcast(intent); - } else { - WakeLockUtil.ScreenOnWakeLockTemperary(_context); - play_waning_notify(_context); - VibrateUtil.getInstance(_context).VibrateOnOnce(true); - Util.mSleep(2000); - } - //launcher 弹出消息 - if(Config.noBroadCastPushTxtNotify==false) { - Intent intent = new Intent(ActionSrvPushTxt); - intent.putExtra("msgType", msgType); //0 代表 server下发消息,1代表 SMS消息 - intent.putExtra("txtMsg", msg); - intent.addFlags(FLAG_ACTIVITY_NEW_TASK); - _context.sendBroadcast(intent); - } - } - },50); - - }else if (msgType==2) { - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - //本应用弹出消息框 - if (Config.noPushTxtNotifyDialog == false) { - Intent intent = new Intent(); - intent.setAction(DIALOG_ACTION); - intent.putExtra("pushtxt", msg); - _context.sendBroadcast(intent); - } else { - WakeLockUtil.ScreenOnWakeLockTemperary(_context); - play_waning_notify(_context); - VibrateUtil.getInstance(_context).VibrateOnOnce(true); - Util.mSleep(2000); - } - //launcher 弹出消息 - if (Config.noBroadCastPushTxtNotify == false) { - Intent intent = new Intent(ActionSrvPushTxt); - intent.putExtra("msgType", msgType); //0 代表 server下发消息,1代表 SMS消息,2代表有提示音的消息 - intent.putExtra("txtMsg", msg); - intent.addFlags(FLAG_ACTIVITY_NEW_TASK); - _context.sendBroadcast(intent); - } - } - }, 50); + public void sendBroadcastServerConnectionChanged(boolean paramBoolean) { + Intent intent = new Intent(); + intent.setAction(ACTION_ISCONNECTED); + intent.putExtra("isConnected", paramBoolean); + Util.setSystemProperties("persist.sys.server_connected", paramBoolean ? "true" : "false"); + this.context.sendBroadcast(intent); + } - }else if (msgType==3){ //专门给需要回复的消息 + public void saveMstToSMSDB(String msg) { + Intent intent = new Intent(); + intent.setAction(ActionReceivePushTxt); + intent.putExtra("txtMsg", msg); + intent.addFlags(FLAG_ACTIVITY_NEW_TASK); + this.context.sendBroadcast(intent); + } - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - //本应用弹出消息框 - if (Config.noPushTxtNotifyDialog == false) { - Intent intent = new Intent(); - intent.setAction(DIALOG_ACTION); - intent.putExtra("pushtxt", msg); - intent.putExtra("needreply",true); - _context.sendBroadcast(intent); - } else { - WakeLockUtil.ScreenOnWakeLockTemperary(_context); - play_waning_notify(_context); - VibrateUtil.getInstance(_context).VibrateOnOnce(true); - Util.mSleep(2000); - } + public void sendMsgBroadcast(String msg, int msgType) { + sendMsgBroadcast(this.context, msg, msgType); + } - } - },50); - }else{ - - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - //本应用弹出消息框 - if(Config.noSMSNotifyDialog==false) { - Intent intent = new Intent(); - intent.setAction(DIALOG_ACTION); - intent.putExtra("sms", msg); - _context.sendBroadcast(intent); - }else{ - WakeLockUtil.ScreenOnWakeLockTemperary(_context); - play_waning_notify(_context); - VibrateUtil.getInstance(_context).VibrateOnOnce(true); - Util.mSleep(2000); - } - //launcher 弹出消息 - if(Config.noBroadCastPushTxtNotify==false) { - Intent intent = new Intent(ActionSrvPushTxt); - intent.putExtra("msgType", msgType); //0 代表 server下发消息,1代表 SMS消息,2代表有提示音的消息 - intent.putExtra("txtMsg", msg); - intent.addFlags(FLAG_ACTIVITY_NEW_TASK); - _context.sendBroadcast(intent); - } - } - },50); + private static void play_waning_notify(Context context) { + AudioService.getInstance().play(context.getAssets(), "warning.mp3"); } + public static void sendMsgBroadcast(Context _context, String msg, int msgType) { + + if (msgType == 0) { + mHandler.postDelayed(new Runnable() { + @Override + public void run() { + //本应用弹出消息框 + if (Config.noPushTxtNotifyDialog == false) { + Intent intent = new Intent(); + intent.setAction(DIALOG_ACTION); + intent.putExtra("pushtxt", msg); + _context.sendBroadcast(intent); + } else { + WakeLockUtil.ScreenOnWakeLockTemperary(_context); + play_waning_notify(_context); + VibrateUtil.getInstance(_context).VibrateOnOnce(true); + Util.mSleep(2000); + } + //launcher 弹出消息 + if (Config.noBroadCastPushTxtNotify == false) { + Intent intent = new Intent(ActionSrvPushTxt); + intent.putExtra("msgType", msgType); //0 代表 server下发消息,1代表 SMS消息 + intent.putExtra("txtMsg", msg); + intent.addFlags(FLAG_ACTIVITY_NEW_TASK); + _context.sendBroadcast(intent); + } + } + }, 50); + + } else if (msgType == 2) { + mHandler.postDelayed(new Runnable() { + @Override + public void run() { + //本应用弹出消息框 + if (Config.noPushTxtNotifyDialog == false) { + Intent intent = new Intent(); + intent.setAction(DIALOG_ACTION); + intent.putExtra("pushtxt", msg); + _context.sendBroadcast(intent); + } else { + WakeLockUtil.ScreenOnWakeLockTemperary(_context); + play_waning_notify(_context); + VibrateUtil.getInstance(_context).VibrateOnOnce(true); + Util.mSleep(2000); + } + //launcher 弹出消息 + if (Config.noBroadCastPushTxtNotify == false) { + Intent intent = new Intent(ActionSrvPushTxt); + intent.putExtra("msgType", msgType); //0 代表 server下发消息,1代表 SMS消息,2代表有提示音的消息 + intent.putExtra("txtMsg", msg); + intent.addFlags(FLAG_ACTIVITY_NEW_TASK); + _context.sendBroadcast(intent); + } + } + }, 50); + + } else if (msgType == 3) { //专门给需要回复的消息 + + mHandler.postDelayed(new Runnable() { + @Override + public void run() { + //本应用弹出消息框 + if (Config.noPushTxtNotifyDialog == false) { + Intent intent = new Intent(); + intent.setAction(DIALOG_ACTION); + intent.putExtra("pushtxt", msg); + intent.putExtra("needreply", true); + _context.sendBroadcast(intent); + } else { + WakeLockUtil.ScreenOnWakeLockTemperary(_context); + play_waning_notify(_context); + VibrateUtil.getInstance(_context).VibrateOnOnce(true); + Util.mSleep(2000); + } + + } + }, 50); + } else { + + mHandler.postDelayed(new Runnable() { + @Override + public void run() { + //本应用弹出消息框 + if (Config.noSMSNotifyDialog == false) { + Intent intent = new Intent(); + intent.setAction(DIALOG_ACTION); + intent.putExtra("sms", msg); + _context.sendBroadcast(intent); + } else { + WakeLockUtil.ScreenOnWakeLockTemperary(_context); + play_waning_notify(_context); + VibrateUtil.getInstance(_context).VibrateOnOnce(true); + Util.mSleep(2000); + } + //launcher 弹出消息 + if (Config.noBroadCastPushTxtNotify == false) { + Intent intent = new Intent(ActionSrvPushTxt); + intent.putExtra("msgType", msgType); //0 代表 server下发消息,1代表 SMS消息,2代表有提示音的消息 + intent.putExtra("txtMsg", msg); + intent.addFlags(FLAG_ACTIVITY_NEW_TASK); + _context.sendBroadcast(intent); + } + } + }, 50); + } + + } + + public void sendStheartRateBroadcast(String paramString, int paramInt) { + Intent intent = new Intent(); + intent.setAction(paramString); + intent.putExtra("stheartRateType", paramInt); + this.context.sendBroadcast(intent, "com.eqc.broadcast.permission"); + } + public void sendBroadcastSitLongAlarm() { - } - public void sendStheartRateBroadcast(String paramString, int paramInt) { - Intent intent = new Intent(); - intent.setAction(paramString); - intent.putExtra("stheartRateType", paramInt); - this.context.sendBroadcast(intent, "com.eqc.broadcast.permission"); - } - public void sendBroadcastSitLongAlarm() { - - if (Util.installed(context,"com.ic.ak.launcher")) { - Intent intent = new Intent(); - intent.setAction(ACTION_KEEPSIT_ALARM); - intent.addFlags(FLAG_ACTIVITY_NEW_TASK); - this.context.sendBroadcast(intent); - }else { - Intent intent = new Intent(); - //显示提示窗口 - intent.setAction(DIALOG_ACTION); - intent.putExtra("takephoto", context.getResources().getString(R.string.sedentary_msg)); - context.sendBroadcast(intent); + if (Util.installed(context, "com.ic.ak.launcher")) { + Intent intent = new Intent(); + intent.setAction(ACTION_KEEPSIT_ALARM); + intent.addFlags(FLAG_ACTIVITY_NEW_TASK); + this.context.sendBroadcast(intent); + } else { + Intent intent = new Intent(); + //显示提示窗口 + intent.setAction(DIALOG_ACTION); + intent.putExtra("takephoto", context.getResources().getString(R.string.sedentary_msg)); + context.sendBroadcast(intent); + } } - } } diff --git a/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java b/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java index 7eb153da..f74f418e 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java +++ b/app/src/main/java/com/enqualcomm/support/utils/DBHelper.java @@ -1,22 +1,19 @@ package com.enqualcomm.support.utils; -import android.content.ContentProviderOperation; import android.content.ContentResolver; import android.content.ContentUris; import android.content.ContentValues; import android.content.Context; import android.content.Intent; -import android.content.ContentProviderOperation.Builder; import android.database.Cursor; import android.net.Uri; import android.os.Handler; +import android.os.HandlerThread; import android.os.SystemClock; -import android.provider.BaseColumns; import android.provider.ContactsContract; import android.provider.ContactsContract.Data; import android.provider.ContactsContract.RawContacts; -import android.text.TextUtils; import com.enqualcomm.support.Config; import com.enqualcomm.support.ICContentProvider; @@ -25,7 +22,6 @@ import com.enqualcomm.support.bean.Antioff; import com.enqualcomm.support.bean.Contact; import com.enqualcomm.support.bean.Content; import com.enqualcomm.support.bean.DeviceStatus; -import com.enqualcomm.support.bean.EventLooperHandlerThread; import com.enqualcomm.support.bean.NoticeContent; import com.enqualcomm.support.bean.NotificationParam; import com.enqualcomm.support.bean.Silent; @@ -38,6 +34,10 @@ import com.enqualcomm.support.bean.Weather; import java.util.ArrayList; import java.util.Iterator; +import rx.Observable; +import rx.Subscriber; +import rx.schedulers.Schedulers; + import static com.enqualcomm.support.Constants.ACTION_ALARM_ALARM_CHANGE; import static com.enqualcomm.support.Constants.ACTION_ANTIOFF_ALARM_CHANGE; import static com.enqualcomm.support.bean.Contact.CATEGORY_ADMIN; @@ -48,1131 +48,1156 @@ import static com.enqualcomm.support.bean.Contact.CATEGORY_SOS; import static com.enqualcomm.support.bean.Contact.CATEGORY_VIDEO; public class DBHelper { - private static long lastUpdateTime; - private Context context; - private ContentResolver cr; - private Handler mHandler;//=new Handler(EventLooperHandlerThread.makeLooper(DBHelper.class.getSimpleName())); -// private Handler mHandler=new Handler(); - public DBHelper(ContentResolver var1, Context var2) { - this.cr = var1; - this.context = var2; - EventLooperHandlerThread eventLooperHandlerThread=new EventLooperHandlerThread(DBHelper.class.getSimpleName()); - eventLooperHandlerThread.start(); - mHandler=new Handler( eventLooperHandlerThread.looper); - } - - private void addAllContact(ArrayList contactArray, ContentResolver resolver) { - Iterator contactIT = contactArray.iterator(); - - while(contactIT.hasNext()) { - Contact contact = (Contact)contactIT.next(); - ContentValues contentvalues = new ContentValues(); - long raw_contactID = ContentUris.parseId(resolver.insert(RawContacts.CONTENT_URI, contentvalues)); - - contentvalues.clear(); - contentvalues.put("raw_contact_id", raw_contactID); - contentvalues.put("mimetype", "vnd.android.cursor.item/name"); - contentvalues.put("data2", contact.name); - resolver.insert(Data.CONTENT_URI, contentvalues); - contentvalues.clear(); - - contentvalues.put("raw_contact_id", raw_contactID); - contentvalues.put("mimetype", "vnd.android.cursor.item/phone_v2"); - contentvalues.put("data1", contact.number); - contentvalues.put("data2", 2); - resolver.insert(Data.CONTENT_URI, contentvalues); - contentvalues.clear(); + private static long lastUpdateTime; + private Context context; + private ContentResolver cr; + private Handler mHandler;//=new Handler(EventLooperHandlerThread.makeLooper(DBHelper.class.getSimpleName())); + + // private Handler mHandler=new Handler(); + public DBHelper(ContentResolver var1, Context var2) { + this.cr = var1; + this.context = var2; + HandlerThread handlerThread = new HandlerThread("ic:db-handler-thread"); + handlerThread.start(); + mHandler = new Handler(handlerThread.getLooper()); } - } + /** + * 添加联系人 + * + * @param contactArray + * @param resolver + */ + private void addAllContact(ArrayList contactArray, ContentResolver resolver) { + Observable.create(subscriber -> { + Iterator contactIT = contactArray.iterator(); + while (contactIT.hasNext()) { + Contact contact = (Contact) contactIT.next(); + ContentValues contentvalues = new ContentValues(); + long raw_contactID = ContentUris.parseId(resolver.insert(RawContacts.CONTENT_URI, contentvalues)); + contentvalues.clear(); + contentvalues.put("raw_contact_id", raw_contactID); + contentvalues.put("mimetype", "vnd.android.cursor.item/name"); + contentvalues.put("data2", contact.name); + resolver.insert(Data.CONTENT_URI, contentvalues); + contentvalues.clear(); + contentvalues.put("raw_contact_id", raw_contactID); + contentvalues.put("mimetype", "vnd.android.cursor.item/phone_v2"); + contentvalues.put("data1", contact.number); + contentvalues.put("data2", 2); + resolver.insert(Data.CONTENT_URI, contentvalues); + contentvalues.clear(); + } + }).subscribeOn(Schedulers.io()).subscribe(); + } - public int getContactCount(ContentResolver resolver) - { - StringBuilder sb = new StringBuilder(); + /** + * 获取联系人个数 + * + * @param resolver + * @return + */ + public int getContactCount(ContentResolver resolver) { + try { + //这个要做到同步返回,没法用异步 + //如果要用异步的方式则要通过回调来实现 + Cursor cursor = resolver.query(ICContentProvider.CONTACT_URI, (String[]) null, null, (String[]) null, "CATEGORY ASC"); + return cursor.getCount(); + } catch (Exception e) { + e.printStackTrace(); + } + return 0; + } - Cursor cursor = resolver.query(ICContentProvider.CONTACT_URI, (String[])null, null, (String[])null, "CATEGORY ASC"); + /** + * 删除所有的联系人 + * + * @param contactArrayList + * @param where + * @param resolver + */ + private void deleteAllContact(ArrayList contactArrayList, String where, ContentResolver resolver) { + Observable.create(subscriber -> { + String sb = "where=" + where; + ICLogger.i(sb); + for (Contact contact : contactArrayList) { + deleteContactId(resolver, contact.name); + } + resolver.delete(ICContentProvider.CONTACT_URI, where, null); + }).subscribeOn(Schedulers.io()).subscribe(); + } - return cursor.getCount(); + private Uri insertDownLoadInfo(String var1, int var2, int var3, String var4) { + ContentValues var5 = new ContentValues(); + var5.put("IMSI", var1); + var5.put("TIME", var4); + var5.put("NUMBER", var2); + var5.put("TOTAL_NUMBER", var3); + return this.cr.insert(ICContentProvider.DOWNLOADINFO_URL, var5); + } - } - private void deleteAllContact(ArrayList contactArraylist, String where, ContentResolver resolver) { - StringBuilder sb = new StringBuilder(); - sb.append("where="); - sb.append(where); - ICLogger.i(sb.toString()); - Cursor cursor = resolver.query(ICContentProvider.CONTACT_URI, (String[])null, where, (String[])null, "CATEGORY ASC"); + private void saveContactsImpl(ArrayList contactArray, + boolean admin, boolean care, + boolean call, boolean partner, + boolean video, boolean sos) { + StringBuilder log = new StringBuilder(); + log.append("saveContactsImpl contactList = "); + log.append(contactArray.toString()); + ICLogger.i(log.toString()); + StringBuilder where = new StringBuilder("CATEGORY IN ("); + if (admin) { + where.append(CATEGORY_ADMIN); + where.append(","); + } - Iterator contactIT = contactArraylist.iterator(); + if (care) { + where.append(CATEGORY_CARE); + where.append(","); + } - while(contactIT.hasNext()) { - this.DeleteContactId(resolver, ((Contact)contactIT.next()).name); - } - resolver.delete(ICContentProvider.CONTACT_URI, where, (String[])null); - } - - private Uri insertDownLoadInfo(String var1, int var2, int var3, String var4) { - ContentValues var5 = new ContentValues(); - var5.put("IMSI", var1); - var5.put("TIME", var4); - var5.put("NUMBER", var2); - var5.put("TOTAL_NUMBER", var3); - return this.cr.insert(ICContentProvider.DOWNLOADINFO_URL, var5); - } - - private void saveContactsImpl(ArrayList contactArray, boolean admin, boolean care, boolean call, boolean partner, boolean video,boolean sos) { - StringBuilder log = new StringBuilder(); - log.append("saveContactsImpl contactList = "); - log.append(contactArray.toString()); - ICLogger.i(log.toString()); - StringBuilder where = new StringBuilder("CATEGORY IN ("); - if (admin) { - where.append(CATEGORY_ADMIN); - where.append(","); - } + if (call) { + where.append(CATEGORY_CALL); + where.append(","); + } - if (care) { - where.append(CATEGORY_CARE); - where.append(","); - } + if (partner) { + where.append(CATEGORY_PARTNER); + where.append(","); + } - if (call) { - where.append(CATEGORY_CALL); - where.append(","); - } + if (video) { + where.append(CATEGORY_VIDEO); + where.append(","); + } - if (partner) { - where.append(CATEGORY_PARTNER); - where.append(","); - } + if (sos) { + where.append(CATEGORY_SOS); + where.append(","); + } + int len = where.length(); + if (len > 13) { + where.setCharAt(len - 1, ')'); + this.deleteAllContact(contactArray, where.toString(), this.cr); + int contactCount = contactArray.size(); + if (contactCount != 0) { + ContentValues[] contentlist = new ContentValues[contactCount]; + + for (int i = 0; i < contactCount; ++i) { + Contact contact = (Contact) contactArray.get(i); + ContentValues contentValues = new ContentValues(); + contentlist[i] = contentValues; + contentValues.put("CATEGORY", contact.category); + contentValues.put("NAME", contact.name); + contentValues.put("NUMBER", contact.number); + contentValues.put("ICON", contact.icon_index); + contentValues.put("EXTRA", contact.extra); + StringBuilder log1 = new StringBuilder(); + log1.append("contact="); + log1.append(contact.toString()); + ICLogger.i(log1.toString()); + } + + this.cr.bulkInsert(ICContentProvider.CONTACT_URI, contentlist); + this.addAllContact(contactArray, this.cr); + } - if (video) { - where.append(CATEGORY_VIDEO); - where.append(","); + } } - if (sos) { - where.append(CATEGORY_SOS); - where.append(","); - } - int len = where.length(); - if (len > 13) { - where.setCharAt(len - 1, ')'); - this.deleteAllContact(contactArray, where.toString(), this.cr); - int contactCount = contactArray.size(); - if (contactCount != 0) { - ContentValues[] contentlist = new ContentValues[contactCount]; - - for(int i = 0; i < contactCount; ++i) { - Contact contact = (Contact)contactArray.get(i); - ContentValues contentValues = new ContentValues(); - contentlist[i] = contentValues; - contentValues.put("CATEGORY", contact.category); - contentValues.put("NAME", contact.name); - contentValues.put("NUMBER", contact.number); - contentValues.put("ICON", contact.icon_index); - contentValues.put("EXTRA", contact.extra); - StringBuilder log1 = new StringBuilder(); - log1.append("contact="); - log1.append(contact.toString()); - ICLogger.i(log1.toString()); + private void upDateMonitorImpl(String var1, String var2) { + Cursor var5 = this.cr.query(ICContentProvider.DEVICESTATUS_URL, (String[]) null, (String) null, (String[]) null, (String) null); + ArrayList var4 = new ArrayList(); + if (var5 != null) { + while (true) { + if (!var5.moveToNext()) { + var5.close(); + break; + } + + var4.add(new DeviceStatus(var5.getString(1), "0", "0", var5.getInt(4))); + } } - this.cr.bulkInsert(ICContentProvider.CONTACT_URI, contentlist); - this.addAllContact(contactArray, this.cr); - } + this.cr.delete(ICContentProvider.DEVICESTATUS_URL, (String) null, (String[]) null); + if (var4.size() != 0) { + ContentValues[] var8 = new ContentValues[var4.size()]; + + for (int var3 = 0; var3 < var4.size(); ++var3) { + DeviceStatus var6 = (DeviceStatus) var4.get(var3); + ContentValues var7 = new ContentValues(); + var8[var3] = var7; + var7.put("IS_SILENCE", var6.isSilence); + var7.put("START_MONITOR", var1); + var7.put("END_MONITOR", var2); + var7.put("IS_ALARM", var6.isAlarm); + } - } - } - - private void upDateMonitorImpl(String var1, String var2) { - Cursor var5 = this.cr.query(ICContentProvider.DEVICESTATUS_URL, (String[])null, (String)null, (String[])null, (String)null); - ArrayList var4 = new ArrayList(); - if (var5 != null) { - while(true) { - if (!var5.moveToNext()) { - var5.close(); - break; + this.cr.bulkInsert(ICContentProvider.DEVICESTATUS_URL, var8); } - var4.add(new DeviceStatus(var5.getString(1), "0", "0", var5.getInt(4))); - } } - this.cr.delete(ICContentProvider.DEVICESTATUS_URL, (String)null, (String[])null); - if (var4.size() != 0) { - ContentValues[] var8 = new ContentValues[var4.size()]; - - for(int var3 = 0; var3 < var4.size(); ++var3) { - DeviceStatus var6 = (DeviceStatus)var4.get(var3); - ContentValues var7 = new ContentValues(); - var8[var3] = var7; - var7.put("IS_SILENCE", var6.isSilence); - var7.put("START_MONITOR", var1); - var7.put("END_MONITOR", var2); - var7.put("IS_ALARM", var6.isAlarm); - } - - this.cr.bulkInsert(ICContentProvider.DEVICESTATUS_URL, var8); + public void deleteMessage(Uri var1) { + this.cr.delete(var1, (String) null, (String[]) null); } - } - - public void deleteMessage(Uri var1) { - this.cr.delete(var1, (String)null, (String[])null); - } - - public String DeleteContactId(ContentResolver contentResolver, String name) { - String ContactId=null; - Uri uri = ContactsContract.RawContacts.CONTENT_URI; - ContentResolver resolver = contentResolver; - String where = ContactsContract.PhoneLookup.DISPLAY_NAME; - Cursor cursor = resolver.query(uri, new String[]{Data._ID}, where + "=?", new String[]{name}, null); - if (cursor.moveToFirst()) { - int id = cursor.getInt(0); - ContactId=String.valueOf(id); - //根据id删除data中的相应数据 - resolver.delete(uri, where + "=?", new String[]{name}); - uri = ContactsContract.Data.CONTENT_URI; - resolver.delete(uri, ContactsContract.Data.RAW_CONTACT_ID + "=?", new String[]{id + ""}); - } - return ContactId; - } - - public boolean getWeather() { - Cursor var5 = this.cr.query(ICContentProvider.WEATHER_URL, (String[])null, (String)null, (String[])null, (String)null); - if (var5 != null && var5.moveToNext()) { - String var1 = var5.getString(1); - String var2 = var5.getString(2); - String var3 = var5.getString(3); - String var4 = var5.getString(4); - String var7 = var5.getString(5); - StringBuilder var6 = new StringBuilder(); - var6.append("weather_type="); - var6.append(var1); - var6.append("min_temperature="); - var6.append(var2); - var6.append("max_temperature="); - var6.append(var3); - var6.append("cur_temperature="); - var6.append(var4); - var6.append("weather_index="); - var6.append(var7); - ICLogger.i(var6.toString()); - return true; - } else { - return false; + public String deleteContactId(ContentResolver contentResolver, String name) { + String ContactId = null; + Uri uri = ContactsContract.RawContacts.CONTENT_URI; + ContentResolver resolver = contentResolver; + String where = ContactsContract.PhoneLookup.DISPLAY_NAME; + Cursor cursor = resolver.query(uri, new String[]{Data._ID}, where + "=?", new String[]{name}, null); + if (cursor.moveToFirst()) { + int id = cursor.getInt(0); + ContactId = String.valueOf(id); + //根据id删除data中的相应数据 + resolver.delete(uri, where + "=?", new String[]{name}); + uri = ContactsContract.Data.CONTENT_URI; + resolver.delete(uri, ContactsContract.Data.RAW_CONTACT_ID + "=?", new String[]{id + ""}); + } + return ContactId; } - } - - public Uri insertMessage(Content var1) { - ContentValues var2 = new ContentValues(); - var2.put("CATEGORY", var1.category); - var2.put("CONTENT", var1.content); - var2.put("PREVIEW", var1.preview); - var2.put("STATUS", var1.status); - var2.put("IN_OR_OUT", var1.inOrOut); - var2.put("CONTACT_CATEGORY", var1.contactCategory); - var2.put("CONTACT_NUMBER", var1.contactNumber); - var2.put("SERVER_TIME", var1.serverTime); - var2.put("LOCAL_TIME", var1.localTime); - var2.put("ICON", var1.icon); - return this.cr.insert(ICContentProvider.MESSAGE_URI, var2); - } - - public Uri insertOrUpdate(Content var1) { - StringBuilder sb = new StringBuilder("CATEGORY="); - sb.append(var1.category); - sb.append(" and CONTENT='"); - sb.append(var1.content); - sb.append("' and CONTACT_NUMBER='"); - sb.append(var1.contactNumber); - sb.append("' and CONTACT_CATEGORY="); - sb.append(var1.contactCategory); - String where = sb.toString(); - Cursor cursor = this.cr.query(ICContentProvider.MESSAGE_URI, new String[]{"_id"}, where, (String[])null, (String)null); - long id; - if (cursor != null) { - if (cursor.moveToNext()) { - id = cursor.getLong(0); - } else { - id = -1L; - } - - cursor.close(); - } else { - id = -1L; + + public boolean getWeather() { + Cursor var5 = this.cr.query(ICContentProvider.WEATHER_URL, (String[]) null, (String) null, (String[]) null, (String) null); + if (var5 != null && var5.moveToNext()) { + String var1 = var5.getString(1); + String var2 = var5.getString(2); + String var3 = var5.getString(3); + String var4 = var5.getString(4); + String var7 = var5.getString(5); + StringBuilder var6 = new StringBuilder(); + var6.append("weather_type="); + var6.append(var1); + var6.append("min_temperature="); + var6.append(var2); + var6.append("max_temperature="); + var6.append(var3); + var6.append("cur_temperature="); + var6.append(var4); + var6.append("weather_index="); + var6.append(var7); + ICLogger.i(var6.toString()); + return true; + } else { + return false; + } } - if (id != -1L) { - Uri var6 = ContentUris.withAppendedId(ICContentProvider.MESSAGE_URI, id); - ContentValues var5 = new ContentValues(); - var5.put("STATUS", var1.status); - var5.put("CONTENT", var1.content); - this.cr.update(var6, var5, (String)null, (String[])null); - return var6; - } else { - return this.insertMessage(var1); + public Uri insertMessage(Content var1) { + ContentValues var2 = new ContentValues(); + var2.put("CATEGORY", var1.category); + var2.put("CONTENT", var1.content); + var2.put("PREVIEW", var1.preview); + var2.put("STATUS", var1.status); + var2.put("IN_OR_OUT", var1.inOrOut); + var2.put("CONTACT_CATEGORY", var1.contactCategory); + var2.put("CONTACT_NUMBER", var1.contactNumber); + var2.put("SERVER_TIME", var1.serverTime); + var2.put("LOCAL_TIME", var1.localTime); + var2.put("ICON", var1.icon); + return this.cr.insert(ICContentProvider.MESSAGE_URI, var2); } - } - - public Uri insertOrUpdate(Content content, long id) { - label21: { - if (id > 0L) { - ContentResolver var4 = this.cr; - Uri var5 = ICContentProvider.MESSAGE_URI; - StringBuilder var6 = new StringBuilder(); - var6.append("_id="); - var6.append(id); - String where = var6.toString(); - Cursor cursor = var4.query(var5, new String[]{"_id"}, where, (String[])null, (String)null); + + public Uri insertOrUpdate(Content var1) { + StringBuilder sb = new StringBuilder("CATEGORY="); + sb.append(var1.category); + sb.append(" and CONTENT='"); + sb.append(var1.content); + sb.append("' and CONTACT_NUMBER='"); + sb.append(var1.contactNumber); + sb.append("' and CONTACT_CATEGORY="); + sb.append(var1.contactCategory); + String where = sb.toString(); + Cursor cursor = this.cr.query(ICContentProvider.MESSAGE_URI, new String[]{"_id"}, where, (String[]) null, (String) null); + long id; if (cursor != null) { - if (cursor.moveToNext()) { - id = cursor.getLong(0); - } else { - id = -1L; - } + if (cursor.moveToNext()) { + id = cursor.getLong(0); + } else { + id = -1L; + } - cursor.close(); - break label21; + cursor.close(); + } else { + id = -1L; } - } - id = -1L; + if (id != -1L) { + Uri var6 = ContentUris.withAppendedId(ICContentProvider.MESSAGE_URI, id); + ContentValues var5 = new ContentValues(); + var5.put("STATUS", var1.status); + var5.put("CONTENT", var1.content); + this.cr.update(var6, var5, (String) null, (String[]) null); + return var6; + } else { + return this.insertMessage(var1); + } } - if (id != -1L) { - Uri var8 = ContentUris.withAppendedId(ICContentProvider.MESSAGE_URI, id); - ContentValues var9 = new ContentValues(); - var9.put("STATUS", content.status); - this.cr.update(var8, var9, (String)null, (String[])null); - return var8; - } else { - return this.insertMessage(content); - } - } - - public Uri insertOrUpdateDownLoadInfo(String var1, int var2, int var3, String var4) { - StringBuilder var7 = new StringBuilder("IMSI="); - var7.append(var1); - String var9 = var7.toString(); - Cursor var10 = this.cr.query(ICContentProvider.DOWNLOADINFO_URL, new String[]{"_id"}, var9, (String[])null, (String)null); - long var5; - if (var10 != null) { - if (var10.moveToNext()) { - var5 = var10.getLong(0); - } else { - var5 = -1L; - } - - var10.close(); - } else { - var5 = -1L; - } + public Uri insertOrUpdate(Content content, long id) { + label21: + { + if (id > 0L) { + ContentResolver var4 = this.cr; + Uri var5 = ICContentProvider.MESSAGE_URI; + StringBuilder var6 = new StringBuilder(); + var6.append("_id="); + var6.append(id); + String where = var6.toString(); + Cursor cursor = var4.query(var5, new String[]{"_id"}, where, (String[]) null, (String) null); + if (cursor != null) { + if (cursor.moveToNext()) { + id = cursor.getLong(0); + } else { + id = -1L; + } + + cursor.close(); + break label21; + } + } - if (var5 != -1L) { - Uri var11 = ContentUris.withAppendedId(ICContentProvider.DOWNLOADINFO_URL, var5); - ContentValues var8 = new ContentValues(); - var8.put("IMSI", var1); - var8.put("TIME", var4); - var8.put("NUMBER", var2); - var8.put("TOTAL_NUMBER", var3); - this.cr.update(var11, var8, (String)null, (String[])null); - return var11; - } else { - ICLogger.i("插入"); - return this.insertDownLoadInfo(var1, var2, var3, var4); - } - } - - public void insertOrUpdateUnreadMsg(NotificationParam var1) { - StringBuilder var4 = new StringBuilder("id="); - var4.append(var1.id); - String var8 = var4.toString(); - Cursor var9 = this.cr.query(ICContentProvider.UNREAD_MSG_URI, new String[]{"category"}, var8, (String[])null, (String)null); - boolean var2 = false; - boolean var3 = false; - if (var9 != null) { - while(true) { - var2 = var3; - if (var9.moveToNext()) { - int var7 = var9.getInt(0); - if (var7 != var1.category) { - continue; - } - - Uri var5 = ContentUris.withAppendedId(ICContentProvider.UNREAD_MSG_URI, (long)var7); - ContentValues var6 = new ContentValues(); - var6.put("category", var1.category); - var6.put("id", var1.id); - var6.put("count", var1.noReadmsgCount); - var6.put("recvtime", var1.lastRevTime); - this.cr.update(var5, var6, (String)null, (String[])null); - var2 = true; + id = -1L; } - var9.close(); - break; - } + if (id != -1L) { + Uri var8 = ContentUris.withAppendedId(ICContentProvider.MESSAGE_URI, id); + ContentValues var9 = new ContentValues(); + var9.put("STATUS", content.status); + this.cr.update(var8, var9, (String) null, (String[]) null); + return var8; + } else { + return this.insertMessage(content); + } } - if (!var2) { - ContentValues var10 = new ContentValues(); - var10.put("category", var1.category); - var10.put("id", var1.id); - var10.put("count", var1.noReadmsgCount); - var10.put("recvtime", var1.lastRevTime); - this.cr.insert(ICContentProvider.UNREAD_MSG_URI, var10); - } + public Uri insertOrUpdateDownLoadInfo(String var1, int var2, int var3, String var4) { + StringBuilder var7 = new StringBuilder("IMSI="); + var7.append(var1); + String var9 = var7.toString(); + Cursor var10 = this.cr.query(ICContentProvider.DOWNLOADINFO_URL, new String[]{"_id"}, var9, (String[]) null, (String) null); + long var5; + if (var10 != null) { + if (var10.moveToNext()) { + var5 = var10.getLong(0); + } else { + var5 = -1L; + } - } - - public void insertTest(ArrayList var1) { - int var3 = var1.size(); - if (var3 != 0) { - ContentValues[] var4 = new ContentValues[var3]; - - for(int var2 = 0; var2 < var3; ++var2) { - Contact var5 = (Contact)var1.get(var2); - ContentValues var6 = new ContentValues(); - var4[var2] = var6; - var6.put("CATEGORY", var5.category); - var6.put("NAME", var5.name); - var6.put("NUMBER", var5.number); - var6.put("ICON", var5.icon_index); - var6.put("EXTRA", var5.extra); - } - - this.cr.bulkInsert(ICContentProvider.CONTACT_URI, var4); - } + var10.close(); + } else { + var5 = -1L; + } - } + if (var5 != -1L) { + Uri var11 = ContentUris.withAppendedId(ICContentProvider.DOWNLOADINFO_URL, var5); + ContentValues var8 = new ContentValues(); + var8.put("IMSI", var1); + var8.put("TIME", var4); + var8.put("NUMBER", var2); + var8.put("TOTAL_NUMBER", var3); + this.cr.update(var11, var8, (String) null, (String[]) null); + return var11; + } else { + ICLogger.i("插入"); + return this.insertDownLoadInfo(var1, var2, var3, var4); + } + } - public ArrayList queryAlarm() { - ArrayList var1 = new ArrayList(); - Cursor cursor = this.cr.query(ICContentProvider.ALARM_URI, (String[])null, (String)null, (String[])null, (String)null); - if (cursor != null) { - while(true) { - if (!cursor.moveToNext()) { - cursor.close(); - break; + public void insertOrUpdateUnreadMsg(NotificationParam var1) { + StringBuilder var4 = new StringBuilder("id="); + var4.append(var1.id); + String var8 = var4.toString(); + Cursor var9 = this.cr.query(ICContentProvider.UNREAD_MSG_URI, new String[]{"category"}, var8, (String[]) null, (String) null); + boolean var2 = false; + boolean var3 = false; + if (var9 != null) { + while (true) { + var2 = var3; + if (var9.moveToNext()) { + int var7 = var9.getInt(0); + if (var7 != var1.category) { + continue; + } + + Uri var5 = ContentUris.withAppendedId(ICContentProvider.UNREAD_MSG_URI, (long) var7); + ContentValues var6 = new ContentValues(); + var6.put("category", var1.category); + var6.put("id", var1.id); + var6.put("count", var1.noReadmsgCount); + var6.put("recvtime", var1.lastRevTime); + this.cr.update(var5, var6, (String) null, (String[]) null); + var2 = true; + } + + var9.close(); + break; + } } - if ("ON".equals(cursor.getString(4))) { - var1.add(new Alarm(cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5))); + if (!var2) { + ContentValues var10 = new ContentValues(); + var10.put("category", var1.category); + var10.put("id", var1.id); + var10.put("count", var1.noReadmsgCount); + var10.put("recvtime", var1.lastRevTime); + this.cr.insert(ICContentProvider.UNREAD_MSG_URI, var10); } - } + } - return var1; - } - - public ArrayList queryAntioff(boolean var1) { - ContentResolver var3 = this.cr; - Uri var4 = ICContentProvider.ANTIOFF_URI; - String var2; - if (var1) { - var2 = "STATUS='ON'"; - } else { - var2 = null; + public void insertTest(ArrayList var1) { + int var3 = var1.size(); + if (var3 != 0) { + ContentValues[] var4 = new ContentValues[var3]; + + for (int var2 = 0; var2 < var3; ++var2) { + Contact var5 = (Contact) var1.get(var2); + ContentValues var6 = new ContentValues(); + var4[var2] = var6; + var6.put("CATEGORY", var5.category); + var6.put("NAME", var5.name); + var6.put("NUMBER", var5.number); + var6.put("ICON", var5.icon_index); + var6.put("EXTRA", var5.extra); + } + + this.cr.bulkInsert(ICContentProvider.CONTACT_URI, var4); + } + } - Cursor var5 = var3.query(var4, (String[])null, var2, (String[])null, (String)null); - ArrayList var6 = new ArrayList(); - if (var5 != null) { - while(var5.moveToNext()) { - var6.add(new Antioff(var5.getString(1), var5.getString(2), var5.getString(3), var5.getString(4), var5.getString(5))); - } + public ArrayList queryAlarm() { + ArrayList var1 = new ArrayList(); + Cursor cursor = this.cr.query(ICContentProvider.ALARM_URI, (String[]) null, (String) null, (String[]) null, (String) null); + if (cursor != null) { + while (true) { + if (!cursor.moveToNext()) { + cursor.close(); + break; + } + + if ("ON".equals(cursor.getString(4))) { + var1.add(new Alarm(cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5))); + } + } + } - var5.close(); + return var1; } - return var6; - } - - public Contact queryContactIconInfo(String var1) { - String var2 = var1; - Cursor var4 = this.cr.query(ICContentProvider.CONTACT_URI, (String[])null, "NUMBER=?", new String[]{var1}, "CATEGORY ASC"); - Contact var5 = null; - Contact var3 = null; - if (var4 != null) { - var5 = var3; - if (var4.moveToNext()) { - var5 = new Contact(var4.getInt(1), var4.getString(2), var4.getString(3), var4.getString(4), var4.getString(5)); - } - - var4.close(); + public ArrayList queryAntioff(boolean var1) { + ContentResolver var3 = this.cr; + Uri var4 = ICContentProvider.ANTIOFF_URI; + String var2; + if (var1) { + var2 = "STATUS='ON'"; + } else { + var2 = null; + } + + Cursor var5 = var3.query(var4, (String[]) null, var2, (String[]) null, (String) null); + ArrayList var6 = new ArrayList(); + if (var5 != null) { + while (var5.moveToNext()) { + var6.add(new Antioff(var5.getString(1), var5.getString(2), var5.getString(3), var5.getString(4), var5.getString(5))); + } + + var5.close(); + } + + return var6; } - var3 = var5; - if (var5 == null) { - String var7 = var2; - if (var2.contains("@")) { - var7 = var2.substring(2); - } - - Cursor var6 = this.context.getContentResolver().query(ICContentProvider.CONTACT_URI, (String[])null, "EXTRA=?", new String[]{var7}, "CATEGORY ASC"); - var3 = var5; - if (var6 != null) { - if (var6.moveToNext()) { - var5 = new Contact(var6.getInt(1), var6.getString(2), var6.getString(3), var6.getString(4), var6.getString(5)); + public Contact queryContactIconInfo(String var1) { + String var2 = var1; + Cursor var4 = this.cr.query(ICContentProvider.CONTACT_URI, (String[]) null, "NUMBER=?", new String[]{var1}, "CATEGORY ASC"); + Contact var5 = null; + Contact var3 = null; + if (var4 != null) { + var5 = var3; + if (var4.moveToNext()) { + var5 = new Contact(var4.getInt(1), var4.getString(2), var4.getString(3), var4.getString(4), var4.getString(5)); + } + + var4.close(); } - var4.close(); var3 = var5; - } - } + if (var5 == null) { + String var7 = var2; + if (var2.contains("@")) { + var7 = var2.substring(2); + } + + Cursor var6 = this.context.getContentResolver().query(ICContentProvider.CONTACT_URI, (String[]) null, "EXTRA=?", new String[]{var7}, "CATEGORY ASC"); + var3 = var5; + if (var6 != null) { + if (var6.moveToNext()) { + var5 = new Contact(var6.getInt(1), var6.getString(2), var6.getString(3), var6.getString(4), var6.getString(5)); + } - return var3; - } - - public ArrayList queryNotice(String var1) { - ArrayList noticelist = new ArrayList(); - ContentResolver var3 = this.cr; - Uri var4 = ICContentProvider.NOTICE_URL; - StringBuilder var5 = new StringBuilder(); - var5.append("TIME like '"); - var5.append(var1); - var5.append("%'"); - Cursor cr_notice = var3.query(var4, (String[])null, var5.toString(), (String[])null, (String)null); - if (cr_notice != null) { - while(true) { - if (!cr_notice.moveToNext()) { - cr_notice.close(); - break; + var4.close(); + var3 = var5; + } } - noticelist.add(new NoticeContent(cr_notice.getString(1), - cr_notice.getString(2), - cr_notice.getString(3), - cr_notice.getString(4), - cr_notice.getString(5), - cr_notice.getString(6), - cr_notice.getString(7))); - } + return var3; } - return noticelist; - } - - public ArrayList querySilence(boolean var1) { - ContentResolver var3 = this.cr; - Uri var4 = ICContentProvider.SILENT_URI; - String var2; - if (var1) { - var2 = "STATUS='ON'"; - } else { - var2 = null; + public ArrayList queryNotice(String var1) { + ArrayList noticelist = new ArrayList(); + ContentResolver var3 = this.cr; + Uri var4 = ICContentProvider.NOTICE_URL; + StringBuilder var5 = new StringBuilder(); + var5.append("TIME like '"); + var5.append(var1); + var5.append("%'"); + Cursor cr_notice = var3.query(var4, (String[]) null, var5.toString(), (String[]) null, (String) null); + if (cr_notice != null) { + while (true) { + if (!cr_notice.moveToNext()) { + cr_notice.close(); + break; + } + + noticelist.add(new NoticeContent(cr_notice.getString(1), + cr_notice.getString(2), + cr_notice.getString(3), + cr_notice.getString(4), + cr_notice.getString(5), + cr_notice.getString(6), + cr_notice.getString(7))); + } + } + + return noticelist; } - Cursor var5 = var3.query(var4, (String[])null, var2, (String[])null, (String)null); - ArrayList var6 = new ArrayList(); - if (var5 != null) { - while(var5.moveToNext()) { - var6.add(new Silent(var5.getString(1), var5.getString(2), var5.getString(3), var5.getString(4), var5.getString(5))); - } + public ArrayList querySilence(boolean var1) { + ContentResolver var3 = this.cr; + Uri var4 = ICContentProvider.SILENT_URI; + String var2; + if (var1) { + var2 = "STATUS='ON'"; + } else { + var2 = null; + } + + Cursor var5 = var3.query(var4, (String[]) null, var2, (String[]) null, (String) null); + ArrayList var6 = new ArrayList(); + if (var5 != null) { + while (var5.moveToNext()) { + var6.add(new Silent(var5.getString(1), var5.getString(2), var5.getString(3), var5.getString(4), var5.getString(5))); + } - var5.close(); - } + var5.close(); + } - return var6; - } - - public ArrayList queryStheartRate(boolean var1) { - ContentResolver var3 = this.cr; - Uri var4 = ICContentProvider.STHEART_RATE_URL; - String var2; - if (var1) { - var2 = "STATUS='ON'"; - } else { - var2 = null; + return var6; } - Cursor var5 = var3.query(var4, (String[])null, var2, (String[])null, (String)null); - ArrayList var6 = new ArrayList(); - if (var5 != null) { - while(var5.moveToNext()) { - var6.add(new StheartRate(var5.getString(1), var5.getString(2), var5.getString(3), var5.getString(4), var5.getString(5))); - } + public ArrayList queryStheartRate(boolean var1) { + ContentResolver var3 = this.cr; + Uri var4 = ICContentProvider.STHEART_RATE_URL; + String var2; + if (var1) { + var2 = "STATUS='ON'"; + } else { + var2 = null; + } - var5.close(); - } + Cursor var5 = var3.query(var4, (String[]) null, var2, (String[]) null, (String) null); + ArrayList var6 = new ArrayList(); + if (var5 != null) { + while (var5.moveToNext()) { + var6.add(new StheartRate(var5.getString(1), var5.getString(2), var5.getString(3), var5.getString(4), var5.getString(5))); + } - return var6; - } + var5.close(); + } - public NotificationParam queryUnreadMsg(String id, int value) { + return var6; + } - Cursor cursor = this.cr.query(ICContentProvider.UNREAD_MSG_URI, new String[]{"category"}, new StringBuilder("id=").append(id).toString(), (String[])null, (String)null); - NotificationParam ret = null; + public NotificationParam queryUnreadMsg(String id, int value) { - if (cursor != null) { - while(true) { - if (cursor.moveToNext()) { - if (cursor.getInt(0) != value) { - continue; - } - ret = new NotificationParam(value, cursor.getString(1), cursor.getInt(2), cursor.getLong(3)); + Cursor cursor = this.cr.query(ICContentProvider.UNREAD_MSG_URI, new String[]{"category"}, new StringBuilder("id=").append(id).toString(), (String[]) null, (String) null); + NotificationParam ret = null; + + if (cursor != null) { + while (true) { + if (cursor.moveToNext()) { + if (cursor.getInt(0) != value) { + continue; + } + ret = new NotificationParam(value, cursor.getString(1), cursor.getInt(2), cursor.getLong(3)); + } + + cursor.close(); + break; + } } - cursor.close(); - break; - } + return ret; } - return ret; - } - - public ArrayList queryUnreadMsg() { - ArrayList var1 = new ArrayList(); - Cursor var2 = this.cr.query(ICContentProvider.UNREAD_MSG_URI, (String[])null, (String)null, (String[])null, (String)null); - if (var2 != null) { - while(true) { - if (!var2.moveToNext()) { - var2.close(); - break; + public ArrayList queryUnreadMsg() { + ArrayList var1 = new ArrayList(); + Cursor var2 = this.cr.query(ICContentProvider.UNREAD_MSG_URI, (String[]) null, (String) null, (String[]) null, (String) null); + if (var2 != null) { + while (true) { + if (!var2.moveToNext()) { + var2.close(); + break; + } + + var1.add(new NotificationParam(var2.getInt(0), var2.getString(1), var2.getInt(2), Long.valueOf(var2.getLong(3)))); + } } - var1.add(new NotificationParam(var2.getInt(0), var2.getString(1), var2.getInt(2), Long.valueOf(var2.getLong(3)))); - } + return var1; } - return var1; - } - - public void resetDatabase() { - this.cr.delete(ICContentProvider.NOTICE_URL, (String)null, (String[])null); - this.cr.delete(ICContentProvider.STHEART_RATE_URL, (String)null, (String[])null); - this.cr.delete(ICContentProvider.URLDOWNLOADPIC_URL, (String)null, (String[])null); - this.cr.delete(ICContentProvider.DEVICESTATUS_URL, (String)null, (String[])null); - this.cr.delete(ICContentProvider.DOWNLOADINFO_URL, (String)null, (String[])null); - this.cr.delete(ICContentProvider.IKNOWLEDGE_URL, (String)null, (String[])null); - this.cr.delete(ICContentProvider.WEATHER_URL, (String)null, (String[])null); - this.cr.delete(ICContentProvider.ALARM_URI, (String)null, (String[])null); - this.cr.delete(ICContentProvider.CONTACT_URI, (String)null, (String[])null); - this.cr.delete(ICContentProvider.MESSAGE_URI, (String)null, (String[])null); - this.cr.delete(ICContentProvider.SILENT_URI, (String)null, (String[])null); - this.cr.delete(ICContentProvider.ANTIOFF_URI, (String)null, (String[])null); - this.cr.delete(ICContentProvider.UNREAD_MSG_URI, (String)null, (String[])null); - } - - public void saveAlarm(ArrayList paramArrayList) { - this.cr.delete(ICContentProvider.ALARM_URI, null, null); - int i = paramArrayList.size(); - if (i != 0) { - ContentValues[] arrayOfContentValues = new ContentValues[i]; - for (byte b = 0; b < i; b++) { - Alarm alarm = paramArrayList.get(b); - ContentValues contentValues = new ContentValues(); - arrayOfContentValues[b] = contentValues; - contentValues.put("TIME", alarm.time); - contentValues.put("WEEK", alarm.week); - contentValues.put("RING", alarm.ring); - contentValues.put("STATUS", alarm.status); - contentValues.put("NAME", alarm.name); - } - this.cr.bulkInsert(ICContentProvider.ALARM_URI, arrayOfContentValues); + public void resetDatabase() { + this.cr.delete(ICContentProvider.NOTICE_URL, (String) null, (String[]) null); + this.cr.delete(ICContentProvider.STHEART_RATE_URL, (String) null, (String[]) null); + this.cr.delete(ICContentProvider.URLDOWNLOADPIC_URL, (String) null, (String[]) null); + this.cr.delete(ICContentProvider.DEVICESTATUS_URL, (String) null, (String[]) null); + this.cr.delete(ICContentProvider.DOWNLOADINFO_URL, (String) null, (String[]) null); + this.cr.delete(ICContentProvider.IKNOWLEDGE_URL, (String) null, (String[]) null); + this.cr.delete(ICContentProvider.WEATHER_URL, (String) null, (String[]) null); + this.cr.delete(ICContentProvider.ALARM_URI, (String) null, (String[]) null); + this.cr.delete(ICContentProvider.CONTACT_URI, (String) null, (String[]) null); + this.cr.delete(ICContentProvider.MESSAGE_URI, (String) null, (String[]) null); + this.cr.delete(ICContentProvider.SILENT_URI, (String) null, (String[]) null); + this.cr.delete(ICContentProvider.ANTIOFF_URI, (String) null, (String[]) null); + this.cr.delete(ICContentProvider.UNREAD_MSG_URI, (String) null, (String[]) null); } - this.context.sendBroadcast(new Intent(ACTION_ALARM_ALARM_CHANGE)); - } - - public void saveAntioff(ArrayList paramArrayList) { - String str; - Cursor cursor = this.cr.query(ICContentProvider.ANTIOFF_URI, null, null, null, null); - if (cursor != null) { - for (str = null; cursor.moveToNext(); str = cursor.getString(5)); - cursor.close(); - } else { - str = null; + + public void saveAlarm(ArrayList paramArrayList) { + this.cr.delete(ICContentProvider.ALARM_URI, null, null); + int i = paramArrayList.size(); + if (i != 0) { + ContentValues[] arrayOfContentValues = new ContentValues[i]; + for (byte b = 0; b < i; b++) { + Alarm alarm = paramArrayList.get(b); + ContentValues contentValues = new ContentValues(); + arrayOfContentValues[b] = contentValues; + contentValues.put("TIME", alarm.time); + contentValues.put("WEEK", alarm.week); + contentValues.put("RING", alarm.ring); + contentValues.put("STATUS", alarm.status); + contentValues.put("NAME", alarm.name); + } + this.cr.bulkInsert(ICContentProvider.ALARM_URI, arrayOfContentValues); + } + this.context.sendBroadcast(new Intent(ACTION_ALARM_ALARM_CHANGE)); + } + + public void saveAntioff(ArrayList paramArrayList) { + String str; + Cursor cursor = this.cr.query(ICContentProvider.ANTIOFF_URI, null, null, null, null); + if (cursor != null) { + for (str = null; cursor.moveToNext(); str = cursor.getString(5)) ; + cursor.close(); + } else { + str = null; + } + this.cr.delete(ICContentProvider.ANTIOFF_URI, null, null); + int i = paramArrayList.size(); + if (i != 0) { + ContentValues[] arrayOfContentValues = new ContentValues[i]; + for (byte b = 0; b < i; b++) { + Antioff antioff = paramArrayList.get(b); + ContentValues contentValues = new ContentValues(); + arrayOfContentValues[b] = contentValues; + contentValues.put("START_TIME", antioff.start); + contentValues.put("END_TIME", antioff.end); + contentValues.put("WEEK", antioff.week); + contentValues.put("STATUS", antioff.status); + contentValues.put("CUR_SYS_STATUS", str); + } + this.cr.bulkInsert(ICContentProvider.ANTIOFF_URI, arrayOfContentValues); + } + this.context.sendBroadcast(new Intent(ACTION_ANTIOFF_ALARM_CHANGE)); } - this.cr.delete(ICContentProvider.ANTIOFF_URI, null, null); - int i = paramArrayList.size(); - if (i != 0) { - ContentValues[] arrayOfContentValues = new ContentValues[i]; - for (byte b = 0; b < i; b++) { - Antioff antioff = paramArrayList.get(b); - ContentValues contentValues = new ContentValues(); - arrayOfContentValues[b] = contentValues; - contentValues.put("START_TIME", antioff.start); - contentValues.put("END_TIME", antioff.end); - contentValues.put("WEEK", antioff.week); - contentValues.put("STATUS", antioff.status); - contentValues.put("CUR_SYS_STATUS", str); - } - this.cr.bulkInsert(ICContentProvider.ANTIOFF_URI, arrayOfContentValues); + + public void saveContacts(final ArrayList contactArray, boolean admin, boolean care, boolean call, boolean partner, boolean video, boolean sos) { + synchronized (this) { + } + + try { + long currenttime = SystemClock.elapsedRealtime(); + if (currenttime - lastUpdateTime > 1000L) { + this.saveContactsImpl(contactArray, admin, care, call, partner, video, sos); + lastUpdateTime = currenttime; + } else { + mHandler.postDelayed(new Runnable() { + @Override + public void run() { + DBHelper.this.saveContacts(contactArray, admin, care, call, partner, video, sos); + } + }, 1000); + } + } catch (Exception e) { + e.printStackTrace(); + } } - this.context.sendBroadcast(new Intent(ACTION_ANTIOFF_ALARM_CHANGE)); - } - - public void saveContacts(final ArrayList contactArray, boolean admin, boolean care, boolean call, boolean partner, boolean video,boolean sos) { - synchronized(this){} - - try { - long currenttime = SystemClock.elapsedRealtime(); - if (currenttime - lastUpdateTime > 1000L) { - this.saveContactsImpl(contactArray, admin, care,call, partner, video,sos); - lastUpdateTime = currenttime; - } else { - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - DBHelper.this.saveContacts(contactArray, admin, care,call, partner, video,sos); - } - }, 1000); - } - } finally { - ; + + public void saveNoticeContent(ArrayList var1) { + this.cr.delete(ICContentProvider.NOTICE_URL, (String) null, (String[]) null); + if (var1 != null) { + int var3 = var1.size(); + if (var3 != 0) { + ContentValues[] var4 = new ContentValues[var3]; + + for (int var2 = 0; var2 < var3; ++var2) { + NoticeContent var5 = (NoticeContent) var1.get(var2); + ContentValues var6 = new ContentValues(); + var4[var2] = var6; + var6.put("TIME", var5.noticeTime); + var6.put("NAME", var5.noticeName); + var6.put("NUMBER", var5.noticeNumber); + var6.put("ID", var5.noticeID); + var6.put("CATEGORY", var5.noticeCategory); + var6.put("FREQUENCY", var5.noticeFrequency); + var6.put("CONTENT", var5.noticeContent); + } + + this.cr.bulkInsert(ICContentProvider.NOTICE_URL, var4); + } + } + + this.context.sendBroadcast(new Intent("com.enqualcomm.support.ACTION_NOTICE_ALARM_CHANGE")); } - } - - public void saveNoticeContent(ArrayList var1) { - this.cr.delete(ICContentProvider.NOTICE_URL, (String)null, (String[])null); - if (var1 != null) { - int var3 = var1.size(); - if (var3 != 0) { - ContentValues[] var4 = new ContentValues[var3]; - - for(int var2 = 0; var2 < var3; ++var2) { - NoticeContent var5 = (NoticeContent)var1.get(var2); - ContentValues var6 = new ContentValues(); - var4[var2] = var6; - var6.put("TIME", var5.noticeTime); - var6.put("NAME", var5.noticeName); - var6.put("NUMBER", var5.noticeNumber); - var6.put("ID", var5.noticeID); - var6.put("CATEGORY", var5.noticeCategory); - var6.put("FREQUENCY", var5.noticeFrequency); - var6.put("CONTENT", var5.noticeContent); + public void saveSilent(ArrayList slist) { + Cursor cursor = this.cr.query(ICContentProvider.SILENT_URI, (String[]) null, (String) null, (String[]) null, (String) null); + String current_sys_status; + if (cursor != null) { + //获取silent免打扰状态 ON/OFF + for (current_sys_status = null; cursor.moveToNext(); current_sys_status = cursor.getString(5)) { + } + + cursor.close(); + } else { + current_sys_status = null; + } + + this.cr.delete(ICContentProvider.SILENT_URI, (String) null, (String[]) null); + int count = slist.size(); + if (count != 0) { + ContentValues[] contentValueslist = new ContentValues[count]; + + for (int row = 0; row < count; ++row) { + Silent silent = (Silent) slist.get(row); + ContentValues contentValues = new ContentValues(); + contentValueslist[row] = contentValues; + contentValues.put("START_TIME", silent.start); + contentValues.put("END_TIME", silent.end); + contentValues.put("WEEK", silent.week); + contentValues.put("STATUS", silent.status); + contentValues.put("CUR_SYS_STATUS", current_sys_status); + ICLogger.i("add silience " + silent.start + "-" + silent.end + " " + silent.week + " " + silent.status + " " + current_sys_status); + + } + + this.cr.bulkInsert(ICContentProvider.SILENT_URI, contentValueslist); } - this.cr.bulkInsert(ICContentProvider.NOTICE_URL, var4); - } } - this.context.sendBroadcast(new Intent("com.enqualcomm.support.ACTION_NOTICE_ALARM_CHANGE")); - } + public void saveStheartRateList(ArrayList var1) { + StringBuilder var4 = new StringBuilder(); + var4.append("stheartRateListSize="); + var4.append(var1.size()); + var4.append("stheartRateList="); + var4.append(var1.toString()); + ICLogger.i(var4.toString()); + this.cr.delete(ICContentProvider.STHEART_RATE_URL, (String) null, (String[]) null); + int var3 = var1.size(); + if (var3 != 0) { + ContentValues[] var7 = new ContentValues[var3]; + + for (int var2 = 0; var2 < var3; ++var2) { + StheartRate var5 = (StheartRate) var1.get(var2); + ContentValues var6 = new ContentValues(); + var7[var2] = var6; + var6.put("START_TIME", var5.start); + var6.put("END_TIME", var5.end); + var6.put("WEEK", var5.week); + var6.put("STATUS", var5.status); + var6.put("INTERVAL", var5.interval); + } - public void saveSilent(ArrayList slist) { - Cursor cursor = this.cr.query(ICContentProvider.SILENT_URI, (String[])null, (String)null, (String[])null, (String)null); - String current_sys_status; - if (cursor != null) { - //获取silent免打扰状态 ON/OFF - for(current_sys_status = null; cursor.moveToNext(); current_sys_status = cursor.getString(5)) { - } + this.cr.bulkInsert(ICContentProvider.STHEART_RATE_URL, var7); + } - cursor.close(); - } else { - current_sys_status = null; + this.context.sendBroadcast(new Intent("com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE")); } - this.cr.delete(ICContentProvider.SILENT_URI, (String)null, (String[])null); - int count = slist.size(); - if (count != 0) { - ContentValues[] contentValueslist = new ContentValues[count]; - - for(int row = 0; row < count; ++row) { - Silent silent = (Silent)slist.get(row); - ContentValues contentValues = new ContentValues(); - contentValueslist[row] = contentValues; - contentValues.put("START_TIME", silent.start); - contentValues.put("END_TIME", silent.end); - contentValues.put("WEEK", silent.week); - contentValues.put("STATUS", silent.status); - contentValues.put("CUR_SYS_STATUS", current_sys_status); - ICLogger.i("add silience "+silent.start+"-"+silent.end+" "+silent.week+" "+silent.status+" "+current_sys_status); - - } - - this.cr.bulkInsert(ICContentProvider.SILENT_URI, contentValueslist); + public void saveUrlDownloadPic(String var1) { + String[] var8 = var1.split(","); + + for (int var2 = 0; var2 < var8.length; ++var2) { + ContentResolver var5 = this.cr; + Uri var6 = ICContentProvider.URLDOWNLOADPIC_URL; + String var7 = var8[var2]; + Cursor var9 = var5.query(var6, new String[]{"_id"}, "URL=?", new String[]{var7}, (String) null); + long var3; + if (var9 != null) { + if (var9.moveToNext()) { + var3 = var9.getLong(0); + } else { + var3 = -1L; + } + + var9.close(); + } else { + var3 = -1L; + } + + if (var3 == -1L) { + ContentValues var10 = new ContentValues(); + var10.put("URL", var8[var2]); + this.cr.insert(ICContentProvider.URLDOWNLOADPIC_URL, var10); + } + } + } - } - - public void saveStheartRateList(ArrayList var1) { - StringBuilder var4 = new StringBuilder(); - var4.append("stheartRateListSize="); - var4.append(var1.size()); - var4.append("stheartRateList="); - var4.append(var1.toString()); - ICLogger.i(var4.toString()); - this.cr.delete(ICContentProvider.STHEART_RATE_URL, (String)null, (String[])null); - int var3 = var1.size(); - if (var3 != 0) { - ContentValues[] var7 = new ContentValues[var3]; - - for(int var2 = 0; var2 < var3; ++var2) { - StheartRate var5 = (StheartRate)var1.get(var2); - ContentValues var6 = new ContentValues(); - var7[var2] = var6; - var6.put("START_TIME", var5.start); - var6.put("END_TIME", var5.end); - var6.put("WEEK", var5.week); - var6.put("STATUS", var5.status); - var6.put("INTERVAL", var5.interval); - } - - this.cr.bulkInsert(ICContentProvider.STHEART_RATE_URL, var7); + public void saveWeather(Weather var1) { + this.cr.delete(ICContentProvider.WEATHER_URL, (String) null, (String[]) null); + ContentValues var2 = new ContentValues(); + var2.put("WEATHER_TYPE", var1.weatherType); + var2.put("MIN_TEMPERATURE", var1.min_Temperature); + var2.put("MAX_TEMPERATURE", var1.max_Temperature); + var2.put("CUR_TEMPERATURE", var1.cur_Temperature); + var2.put("WEATHER_INDEX", var1.weatherIndex); + var2.put("WEATHER_INFO", var1.weatherInfo); + Uri var4 = this.cr.insert(ICContentProvider.WEATHER_URL, var2); + StringBuilder var3 = new StringBuilder(); + var3.append("升级天气=="); + var3.append(var1.toString()); + var3.append("条目="); + var3.append(var4); + ICLogger.i(var3.toString()); } - this.context.sendBroadcast(new Intent("com.enqualcomm.support.STHEART_RATE_ALARM_CHANGE")); - } - - public void saveUrlDownloadPic(String var1) { - String[] var8 = var1.split(","); - - for(int var2 = 0; var2 < var8.length; ++var2) { - ContentResolver var5 = this.cr; - Uri var6 = ICContentProvider.URLDOWNLOADPIC_URL; - String var7 = var8[var2]; - Cursor var9 = var5.query(var6, new String[]{"_id"}, "URL=?", new String[]{var7}, (String)null); - long var3; - if (var9 != null) { - if (var9.moveToNext()) { - var3 = var9.getLong(0); - } else { - var3 = -1L; + public void upDateMonitor(final String var1, final String var2) { + synchronized (this) { } - var9.close(); - } else { - var3 = -1L; - } + try { + long var3 = SystemClock.elapsedRealtime(); + if (var3 - lastUpdateTime > 1000L) { + this.upDateMonitorImpl(var1, var2); + lastUpdateTime = var3; + } else { + mHandler.postDelayed(new Runnable() { + @Override + public void run() { + DBHelper.this.upDateMonitor(var1, var2); + } + }, 1000); + } + } finally { + ; + } - if (var3 == -1L) { - ContentValues var10 = new ContentValues(); - var10.put("URL", var8[var2]); - this.cr.insert(ICContentProvider.URLDOWNLOADPIC_URL, var10); - } } - } - - public void saveWeather(Weather var1) { - this.cr.delete(ICContentProvider.WEATHER_URL, (String)null, (String[])null); - ContentValues var2 = new ContentValues(); - var2.put("WEATHER_TYPE", var1.weatherType); - var2.put("MIN_TEMPERATURE", var1.min_Temperature); - var2.put("MAX_TEMPERATURE", var1.max_Temperature); - var2.put("CUR_TEMPERATURE", var1.cur_Temperature); - var2.put("WEATHER_INDEX", var1.weatherIndex); - var2.put("WEATHER_INFO", var1.weatherInfo); - Uri var4 = this.cr.insert(ICContentProvider.WEATHER_URL, var2); - StringBuilder var3 = new StringBuilder(); - var3.append("升级天气=="); - var3.append(var1.toString()); - var3.append("条目="); - var3.append(var4); - ICLogger.i(var3.toString()); - } - - public void upDateMonitor(final String var1, final String var2) { - synchronized(this){} - - try { - long var3 = SystemClock.elapsedRealtime(); - if (var3 - lastUpdateTime > 1000L) { - this.upDateMonitorImpl(var1, var2); - lastUpdateTime = var3; - } else { - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - DBHelper.this.upDateMonitor(var1, var2); - } - },1000); - } - } finally { - ; + public void upDateStatus(int var1) { + ContentValues var2 = new ContentValues(); + var2.put("IS_ALARM", var1); + this.cr.update(ICContentProvider.DEVICESTATUS_URL, var2, (String) null, (String[]) null); } - } - - public void upDateStatus(int var1) { - ContentValues var2 = new ContentValues(); - var2.put("IS_ALARM", var1); - this.cr.update(ICContentProvider.DEVICESTATUS_URL, var2, (String)null, (String[])null); - } - - public void upDateStatus(String var1) { - ContentValues var2 = new ContentValues(); - var2.put("IS_SILENCE", var1); - this.cr.update(ICContentProvider.DEVICESTATUS_URL, var2, (String)null, (String[])null); - } - - public void upDateorInsertDeviceStatus(String var1) { - Cursor var2 = this.cr.query(ICContentProvider.DEVICESTATUS_URL, (String[])null, (String)null, (String[])null, (String)null); - ContentValues var3 = new ContentValues(); - var3.put("IS_SILENCE", var1); - if (var2 != null) { - if (var2.getCount() == 0) { - this.cr.insert(ICContentProvider.DEVICESTATUS_URL, var3); - return; - } - this.cr.update(ICContentProvider.DEVICESTATUS_URL, var3, (String)null, (String[])null); + public void upDateStatus(String var1) { + ContentValues var2 = new ContentValues(); + var2.put("IS_SILENCE", var1); + this.cr.update(ICContentProvider.DEVICESTATUS_URL, var2, (String) null, (String[]) null); } - } + public void upDateorInsertDeviceStatus(String var1) { + Cursor var2 = this.cr.query(ICContentProvider.DEVICESTATUS_URL, (String[]) null, (String) null, (String[]) null, (String) null); + ContentValues var3 = new ContentValues(); + var3.put("IS_SILENCE", var1); + if (var2 != null) { + if (var2.getCount() == 0) { + this.cr.insert(ICContentProvider.DEVICESTATUS_URL, var3); + return; + } + this.cr.update(ICContentProvider.DEVICESTATUS_URL, var3, (String) null, (String[]) null); + } + } - public void updateMessage(Content var1, Uri var2) { - ContentValues var3 = new ContentValues(); - var3.put("CATEGORY", var1.category); - var3.put("CONTENT", var1.content); - var3.put("PREVIEW", var1.preview); - var3.put("STATUS", var1.status); - var3.put("IN_OR_OUT", var1.inOrOut); - var3.put("CONTACT_CATEGORY", var1.contactCategory); - var3.put("CONTACT_NUMBER", var1.contactNumber); - var3.put("SERVER_TIME", var1.serverTime); - var3.put("LOCAL_TIME", var1.localTime); - this.cr.update(var2, var3, (String)null, (String[])null); - } + + public void updateMessage(Content var1, Uri var2) { + ContentValues var3 = new ContentValues(); + var3.put("CATEGORY", var1.category); + var3.put("CONTENT", var1.content); + var3.put("PREVIEW", var1.preview); + var3.put("STATUS", var1.status); + var3.put("IN_OR_OUT", var1.inOrOut); + var3.put("CONTACT_CATEGORY", var1.contactCategory); + var3.put("CONTACT_NUMBER", var1.contactNumber); + var3.put("SERVER_TIME", var1.serverTime); + var3.put("LOCAL_TIME", var1.localTime); + this.cr.update(var2, var3, (String) null, (String[]) null); + } - public void insertSleepRecord(SleepRecord sr){ - /*每次打点的记录表 SLEEP_DATE 代表记录睡眠的日期,例如 22日上午7:00的计入到21日的睡眠记录中。 DATE代表记录的时间,此出应该等于上文的 22日 7:00 */ + public void insertSleepRecord(SleepRecord sr) { + /*每次打点的记录表 SLEEP_DATE 代表记录睡眠的日期,例如 22日上午7:00的计入到21日的睡眠记录中。 DATE代表记录的时间,此出应该等于上文的 22日 7:00 */ // sqlite.execSQL("CREATE TABLE SLEEP_RECORDS(_id INTEGER PRIMARY KEY AUTOINCREMENT ,SLEEP_DATE TEXT,DATE TEXT, TIME TEXT,STEPCOUNT INTEGER ,ROLLTIMES INTEGER ,STATUS TEXT )"); - ContentValues values=new ContentValues(); - values.put("DATE",sr.date); - values.put("SLEEP_DATE",sr.sleep_date); - values.put("STEPCOUNT",sr.stepCount); - values.put("STATUS",sr.status); - this.cr.insert( ICContentProvider.SLEEP_RECORDS_URI, values); - } - - - public ArrayList querySleepRecord(String sleep_date) { - ArrayList sleeprecordList = new ArrayList(); - ContentResolver pcr = this.cr; - Uri table = ICContentProvider.SLEEP_RECORDS_URI; - StringBuilder where = new StringBuilder(); - where.append("SLEEP_DATE like '"); - where.append(sleep_date); - where.append("'"); - Cursor cr_sleeprecord = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null); - if (cr_sleeprecord != null) { - while (true) { - if (!cr_sleeprecord.moveToNext()) { - cr_sleeprecord.close(); - break; + ContentValues values = new ContentValues(); + values.put("DATE", sr.date); + values.put("SLEEP_DATE", sr.sleep_date); + values.put("STEPCOUNT", sr.stepCount); + values.put("STATUS", sr.status); + this.cr.insert(ICContentProvider.SLEEP_RECORDS_URI, values); + } + + + public ArrayList querySleepRecord(String sleep_date) { + ArrayList sleeprecordList = new ArrayList(); + ContentResolver pcr = this.cr; + Uri table = ICContentProvider.SLEEP_RECORDS_URI; + StringBuilder where = new StringBuilder(); + where.append("SLEEP_DATE like '"); + where.append(sleep_date); + where.append("'"); + Cursor cr_sleeprecord = pcr.query(table, (String[]) null, where.toString(), (String[]) null, (String) null); + if (cr_sleeprecord != null) { + while (true) { + if (!cr_sleeprecord.moveToNext()) { + cr_sleeprecord.close(); + break; + } + sleeprecordList.add(new SleepRecord( + cr_sleeprecord.getString(cr_sleeprecord.getColumnIndex("DATE")), cr_sleeprecord.getString(cr_sleeprecord.getColumnIndex("SLEEP_DATE")), cr_sleeprecord.getInt(cr_sleeprecord.getColumnIndex("STEPCOUNT")))); + } } - sleeprecordList.add(new SleepRecord( - cr_sleeprecord.getString(cr_sleeprecord.getColumnIndex("DATE")), cr_sleeprecord.getString(cr_sleeprecord.getColumnIndex("SLEEP_DATE")), cr_sleeprecord.getInt(cr_sleeprecord.getColumnIndex("STEPCOUNT")))); - } + return sleeprecordList; } - return sleeprecordList; - } - public void updateSleepInfo(SleepInfo si){ - /*计算后的分值,每天会在睡眠结束后计算Records获得*/ -// sqlite.execSQL("CREATE TABLE SLEEP_STATUS(_id INTEGER PRIMARY KEY AUTOINCREMENT ,DATE TEXT , DEEP_SLEEP INTEGER , LIGHT_SLEEP INTEGER ,SCORE INTEGER )"); - - ContentValues values = new ContentValues(); - values.put("DATE",si.getCurrentDate()); - values.put("DEEP_SLEEP",si.getDeepsleep_minutes()); - values.put("LIGHT_SLEEP",si.getLightsleep_minutes()); - values.put("SCORE",si.getScore()); - this.cr.insert( ICContentProvider.SLEEP_STATUS_URI, values); - } - - - public int querySleepScore(String dateyyyyMMddHHmmss){ - - ContentResolver pcr = this.cr; - Uri table = ICContentProvider.SLEEP_STATUS_URI; - StringBuilder where = new StringBuilder(); - where.append("DATE like '"); - where.append(dateyyyyMMddHHmmss); - where.append("'"); - ICLogger.i("Query SleepScore "+where); - Cursor cr_sleeprecord = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null); - if (cr_sleeprecord != null) { - int score=0; - if (cr_sleeprecord.getCount()> 0) { - if (cr_sleeprecord.moveToFirst()) { - int index = cr_sleeprecord.getColumnIndex("SCORE"); - score = cr_sleeprecord.getInt(4); - ICLogger.i("get SleepScore "+score + " column index "+index); + + /** + * 更新睡眠信息 + * + * @param si + */ + public void updateSleepInfo(SleepInfo si) { + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + /*计算后的分值,每天会在睡眠结束后计算Records获得*/ + ContentValues values = new ContentValues(); + values.put("DATE", si.getCurrentDate()); + values.put("DEEP_SLEEP", si.getDeepsleep_minutes()); + values.put("LIGHT_SLEEP", si.getLightsleep_minutes()); + values.put("SCORE", si.getScore()); + cr.insert(ICContentProvider.SLEEP_STATUS_URI, values); } + }).subscribeOn(Schedulers.io()).subscribe(); + } + + + public int querySleepScore(String dateyyyyMMddHHmmss) { + ContentResolver pcr = this.cr; + Uri table = ICContentProvider.SLEEP_STATUS_URI; + StringBuilder where = new StringBuilder(); + where.append("DATE like '"); + where.append(dateyyyyMMddHHmmss); + where.append("'"); + ICLogger.i("Query SleepScore " + where); + Cursor cr_sleeprecord = pcr.query(table, (String[]) null, where.toString(), (String[]) null, (String) null); + if (cr_sleeprecord != null) { + int score = 0; + if (cr_sleeprecord.getCount() > 0) { + if (cr_sleeprecord.moveToFirst()) { + int index = cr_sleeprecord.getColumnIndex("SCORE"); + score = cr_sleeprecord.getInt(4); + ICLogger.i("get SleepScore " + score + " column index " + index); + } + } + cr_sleeprecord.close(); + ICLogger.i("get SleepScore " + score); + return score; } - cr_sleeprecord.close(); - ICLogger.i("get SleepScore "+ score); - return score; + return 0; } - return 0; - } - public int deleteSleepData(){ - this.cr.delete(ICContentProvider.SLEEP_RECORDS_URI, (String)null, (String[])null); + + public int deleteSleepData() { + this.cr.delete(ICContentProvider.SLEEP_RECORDS_URI, (String) null, (String[]) null); return 0; } - public void insertEventMsg(String dateyyyyMMddHHmmss,int event_type,String event_name){ - //日志表格,存储开机关机,低电报警等消息。。。 -// sqlite.execSQL("CREATE TABLE EVENT_MESSAGE(_id INTEGER PRIMARY KEY AUTOINCREMENT , EVENT_TYPE INTEGER, EVENT_NAME TEXT, TIME TEXT )"); - - ContentValues values = new ContentValues(); - values.put("EVENT_TYPE",event_type); - values.put("EVENT_NAME",event_name); - values.put("TIME",dateyyyyMMddHHmmss); - this.cr.insert( ICContentProvider.EVENT_MESSAGE_URI, values); - - } - -//sqlite.execSQL("CREATE TABLE PROTOCOL_CMD_RECORDS(_id INTEGER PRIMARY KEY AUTOINCREMENT , FLAG INTEGER, DATE TEXT, TIME TEXT ,TOPIC TEXT,CMD TEXT )"); - - public long insertCMDRecord(StringMessage msg){ - ContentValues values = new ContentValues(); - values.put("FLAG",msg.haveSent()); - if(msg.getDate()==null || msg.getTime()==null) - msg.setDate(TimeUtil.getSystemDateYYMMDD(),TimeUtil.getSystemTimeHHmmss()); - values.put("DATE",msg.getDate()); - values.put("TIME",msg.getTime()); - values.put("TOPIC",msg.cmd()); - values.put("CMD",msg.isFromCache()); - long raw_contactID = ContentUris.parseId(cr.insert(ICContentProvider.PROTOCOL_CMD_RECORDS_URI, values)); - if (Config.LOG_TOFILE) ICLogger.logToFile( "APILog", " insert db " +raw_contactID+" "+msg.getDate()+msg.getTime()+" "+ msg.cmd()+" "+msg.isFromCache()); - - return raw_contactID; - } - - - // - public void updateCMDRecord(int id, int flag){ - - String WhereClause=null; - if (id>=0) { - WhereClause=new StringBuilder("_id=").append(id).toString(); - - ContentValues flagcontent = new ContentValues(); - flagcontent.put("FLAG", flag); - this.cr.update(ICContentProvider.PROTOCOL_CMD_RECORDS_URI, flagcontent, WhereClause, (String[])null); + + public void insertEventMsg(String dateyyyyMMddHHmmss, int event_type, String event_name) { + //日志表格,存储开机关机,低电报警等消息。。。 + ContentValues values = new ContentValues(); + values.put("EVENT_TYPE", event_type); + values.put("EVENT_NAME", event_name); + values.put("TIME", dateyyyyMMddHHmmss); + this.cr.insert(ICContentProvider.EVENT_MESSAGE_URI, values); + } - } - - public void clearCMDRecordsHaveSent(){ - ContentResolver pcr = this.cr; - Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI; - StringBuilder where = new StringBuilder(); - where.append("FLAG>1"); - Cursor cmdrecords = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null); - if(cmdrecords!=null){ - if(cmdrecords.getCount()>500) { - pcr.delete(table, where.toString(), (String[]) null); - ICLogger.i("delete cmdRecords have sent "); - }else{ - ICLogger.i("cmdRecords less than 500 , skip delete "); - } + + public long insertCMDRecord(StringMessage msg) { + ContentValues values = new ContentValues(); + values.put("FLAG", msg.haveSent()); + if (msg.getDate() == null || msg.getTime() == null) + msg.setDate(TimeUtil.getSystemDateYYMMDD(), TimeUtil.getSystemTimeHHmmss()); + values.put("DATE", msg.getDate()); + values.put("TIME", msg.getTime()); + values.put("TOPIC", msg.cmd()); + values.put("CMD", msg.isFromCache()); + long raw_contactID = ContentUris.parseId(cr.insert(ICContentProvider.PROTOCOL_CMD_RECORDS_URI, values)); + if (Config.LOG_TOFILE) + ICLogger.logToFile("APILog", " insert db " + raw_contactID + " " + msg.getDate() + msg.getTime() + " " + msg.cmd() + " " + msg.isFromCache()); + + return raw_contactID; } - } - - public StringMessage queryNotSentCMDRecord(){ - ContentResolver pcr = this.cr; - Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI; - StringBuilder where = new StringBuilder(); - where.append("FLAG=0"); - //ICLogger.i("Query cmdRecords "+where); - Cursor cmdrecords = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null); - StringMessage msg=null; - if (cmdrecords != null) { - int score=0; - if (cmdrecords.getCount()> 0) { - if (cmdrecords.moveToFirst()) { - String topic=cmdrecords.getString(cmdrecords.getColumnIndex("TOPIC")); - String cmd=cmdrecords.getString(cmdrecords.getColumnIndex("CMD")); - String date=cmdrecords.getString(cmdrecords.getColumnIndex("DATE")); - String time=cmdrecords.getString(cmdrecords.getColumnIndex("TIME")); - int flag=cmdrecords.getInt(cmdrecords.getColumnIndex("FLAG")); - int index=cmdrecords.getInt(cmdrecords.getColumnIndex("_id")); - - msg=new StringMessage(new String[]{topic}); - msg.refresh(cmd); - msg.setDate(date,time); - msg.setSentFlag(flag); - msg.setIndex(index); - ICLogger.i("get cmd Record not sent _id "+index + " "+date+time+" topic "+topic+" cmd "+cmd); - } - } - cmdrecords.close(); - if (msg==null) - ICLogger.i("no cmd record in not sent status !"); + public void updateCMDRecord(int id, int flag) { + String WhereClause = null; + if (id >= 0) { + WhereClause = new StringBuilder("_id=").append(id).toString(); + ContentValues flagcontent = new ContentValues(); + flagcontent.put("FLAG", flag); + this.cr.update(ICContentProvider.PROTOCOL_CMD_RECORDS_URI, flagcontent, WhereClause, null); + } } - return msg; - } - - - public StringMessage queryWaitCMDRecord(){ - ContentResolver pcr = this.cr; - Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI; - StringBuilder where = new StringBuilder(); - where.append("FLAG=1"); - // ICLogger.i("Query cmdRecords "+where); - Cursor cmdrecords = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null); - StringMessage msg=null; - if (cmdrecords != null) { - int score=0; - if (cmdrecords.getCount()> 0) { - if (cmdrecords.moveToFirst()) { - String topic=cmdrecords.getString(cmdrecords.getColumnIndex("TOPIC")); - String cmd=cmdrecords.getString(cmdrecords.getColumnIndex("CMD")); - String date=cmdrecords.getString(cmdrecords.getColumnIndex("DATE")); - String time=cmdrecords.getString(cmdrecords.getColumnIndex("TIME")); - int flag=cmdrecords.getInt(cmdrecords.getColumnIndex("FLAG")); - int index=cmdrecords.getInt(cmdrecords.getColumnIndex("_id")); - - msg=new StringMessage(new String[]{topic}); - msg.refresh(cmd); - msg.setDate(date,time); - msg.setSentFlag(flag); - msg.setIndex(index); - ICLogger.i("get cmd Record wait response _id "+index + " "+date+time+" topic "+topic+" cmd "+cmd); + public void clearCMDRecordsHaveSent() { + ContentResolver pcr = this.cr; + Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI; + StringBuilder where = new StringBuilder(); + where.append("FLAG>1"); + Cursor cmdRecords = pcr.query(table, null, where.toString(), null, null); + if (cmdRecords != null) { + if (cmdRecords.getCount() > 500) { + pcr.delete(table, where.toString(), null); + ICLogger.i("delete cmdRecords have sent "); + } else { + ICLogger.i("cmdRecords less than 500 , skip delete "); + } } - } - cmdrecords.close(); - - if (msg==null) - ICLogger.i("no cmd record in wait status !"); } - return msg; - } - - - public StringMessage queryDiscardCMDRecord(){ - ContentResolver pcr = this.cr; - Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI; - StringBuilder where = new StringBuilder(); - where.append("FLAG=3"); - // ICLogger.i("Query cmdRecords "+where); - Cursor cmdrecords = pcr.query(table, (String[])null, where.toString(), (String[])null, (String)null); - StringMessage msg=null; - if (cmdrecords != null) { - int score=0; - if (cmdrecords.getCount()> 0) { - if (cmdrecords.moveToFirst()) { - String topic=cmdrecords.getString(cmdrecords.getColumnIndex("TOPIC")); - String cmd=cmdrecords.getString(cmdrecords.getColumnIndex("CMD")); - String date=cmdrecords.getString(cmdrecords.getColumnIndex("DATE")); - String time=cmdrecords.getString(cmdrecords.getColumnIndex("TIME")); - int flag=cmdrecords.getInt(cmdrecords.getColumnIndex("FLAG")); - int index=cmdrecords.getInt(cmdrecords.getColumnIndex("_id")); - - msg=new StringMessage(new String[]{topic}); - msg.refresh(cmd); - msg.setDate(date,time); - msg.setSentFlag(flag); - msg.setIndex(index); - ICLogger.i("get cmd Record discarded response _id "+index + " "+date+time+" topic "+topic+" cmd "+cmd); + + public StringMessage queryNotSentCMDRecord() { + ContentResolver pcr = this.cr; + Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI; + StringBuilder where = new StringBuilder(); + where.append("FLAG=0"); + //ICLogger.i("Query cmdRecords "+where); + Cursor cmdrecords = pcr.query(table, null, where.toString(), null, null); + StringMessage msg = null; + if (cmdrecords != null) { + int score = 0; + if (cmdrecords.getCount() > 0) { + if (cmdrecords.moveToFirst()) { + String topic = cmdrecords.getString(cmdrecords.getColumnIndex("TOPIC")); + String cmd = cmdrecords.getString(cmdrecords.getColumnIndex("CMD")); + String date = cmdrecords.getString(cmdrecords.getColumnIndex("DATE")); + String time = cmdrecords.getString(cmdrecords.getColumnIndex("TIME")); + int flag = cmdrecords.getInt(cmdrecords.getColumnIndex("FLAG")); + int index = cmdrecords.getInt(cmdrecords.getColumnIndex("_id")); + + msg = new StringMessage(new String[]{topic}); + msg.refresh(cmd); + msg.setDate(date, time); + msg.setSentFlag(flag); + msg.setIndex(index); + ICLogger.i("get cmd Record not sent _id " + index + " " + date + time + " topic " + topic + " cmd " + cmd); + + } + } + cmdrecords.close(); + + if (msg == null) + ICLogger.i("no cmd record in not sent status !"); } - } - cmdrecords.close(); + return msg; + } + - if (msg==null) - ICLogger.i("no cmd record in wait status !"); + public StringMessage queryWaitCMDRecord() { + ContentResolver pcr = this.cr; + Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI; + StringBuilder where = new StringBuilder(); + where.append("FLAG=1"); + // ICLogger.i("Query cmdRecords "+where); + Cursor cmdrecords = pcr.query(table, (String[]) null, where.toString(), (String[]) null, (String) null); + StringMessage msg = null; + if (cmdrecords != null) { + int score = 0; + if (cmdrecords.getCount() > 0) { + if (cmdrecords.moveToFirst()) { + String topic = cmdrecords.getString(cmdrecords.getColumnIndex("TOPIC")); + String cmd = cmdrecords.getString(cmdrecords.getColumnIndex("CMD")); + String date = cmdrecords.getString(cmdrecords.getColumnIndex("DATE")); + String time = cmdrecords.getString(cmdrecords.getColumnIndex("TIME")); + int flag = cmdrecords.getInt(cmdrecords.getColumnIndex("FLAG")); + int index = cmdrecords.getInt(cmdrecords.getColumnIndex("_id")); + + msg = new StringMessage(new String[]{topic}); + msg.refresh(cmd); + msg.setDate(date, time); + msg.setSentFlag(flag); + msg.setIndex(index); + ICLogger.i("get cmd Record wait response _id " + index + " " + date + time + " topic " + topic + " cmd " + cmd); + + } + } + cmdrecords.close(); + + if (msg == null) + ICLogger.i("no cmd record in wait status !"); + } + return msg; } - return msg; - } + public StringMessage queryDiscardCMDRecord() { + ContentResolver pcr = this.cr; + Uri table = ICContentProvider.PROTOCOL_CMD_RECORDS_URI; + StringBuilder where = new StringBuilder(); + where.append("FLAG=3"); + // ICLogger.i("Query cmdRecords "+where); + Cursor cmdrecords = pcr.query(table, (String[]) null, where.toString(), (String[]) null, (String) null); + StringMessage msg = null; + if (cmdrecords != null) { + int score = 0; + if (cmdrecords.getCount() > 0) { + if (cmdrecords.moveToFirst()) { + String topic = cmdrecords.getString(cmdrecords.getColumnIndex("TOPIC")); + String cmd = cmdrecords.getString(cmdrecords.getColumnIndex("CMD")); + String date = cmdrecords.getString(cmdrecords.getColumnIndex("DATE")); + String time = cmdrecords.getString(cmdrecords.getColumnIndex("TIME")); + int flag = cmdrecords.getInt(cmdrecords.getColumnIndex("FLAG")); + int index = cmdrecords.getInt(cmdrecords.getColumnIndex("_id")); + + msg = new StringMessage(new String[]{topic}); + msg.refresh(cmd); + msg.setDate(date, time); + msg.setSentFlag(flag); + msg.setIndex(index); + ICLogger.i("get cmd Record discarded response _id " + index + " " + date + time + " topic " + topic + " cmd " + cmd); + } + } + cmdrecords.close(); + + if (msg == null) + ICLogger.i("no cmd record in wait status !"); + } + return msg; + } + } diff --git a/app/src/main/java/com/enqualcomm/support/utils/MissedCallContentObserver.java b/app/src/main/java/com/enqualcomm/support/utils/MissedCallContentObserver.java index 212dd14e..cc952423 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/MissedCallContentObserver.java +++ b/app/src/main/java/com/enqualcomm/support/utils/MissedCallContentObserver.java @@ -1,4 +1,5 @@ package com.enqualcomm.support.utils; + import android.content.Context; import android.content.Intent; import android.database.ContentObserver; @@ -6,10 +7,12 @@ import android.database.Cursor; import android.os.Handler; import android.os.Message; import android.provider.CallLog.Calls; + import com.enqualcomm.support.Constants; import com.enqualcomm.support.bean.Contact; import com.enqualcomm.support.bean.EventLooperHandlerThread; import com.enqualcomm.support.bean.Runtime; + import java.text.SimpleDateFormat; import java.util.Date; @@ -17,12 +20,12 @@ public class MissedCallContentObserver extends ContentObserver { private static final int MISSED_CALL_MSG = 1; private static final String[] PROJECT = new String[]{"name", "number", "type", "new", "date"}; private Context mContext; - private Handler mHandler = new Handler(EventLooperHandlerThread.makeLooper(MissedCallContentObserver.class.getSimpleName())) { + private Handler mHandler = new Handler(EventLooperHandlerThread.getInstance().makeLooper()) { public void handleMessage(Message var1) { int var2 = var1.what; boolean var3 = true; if (var2 == 1) { - MissedCallContentObserver.DataHolder var5 = (MissedCallContentObserver.DataHolder)var1.obj; + MissedCallContentObserver.DataHolder var5 = (MissedCallContentObserver.DataHolder) var1.obj; StringBuilder var4 = new StringBuilder(); var4.append("you have a missed call, name : "); var4.append(var5.contact.name); @@ -67,10 +70,10 @@ public class MissedCallContentObserver extends ContentObserver { } public void onChange(boolean var1) { - Cursor var2 = this.mContext.getContentResolver().query(Calls.CONTENT_URI, PROJECT, (String)null, (String[])null, "date DESC"); + Cursor var2 = this.mContext.getContentResolver().query(Calls.CONTENT_URI, PROJECT, (String) null, (String[]) null, "date DESC"); if (var2 != null) { if (var2.moveToFirst()) { - switch(var2.getInt(var2.getColumnIndex("type"))) { + switch (var2.getInt(var2.getColumnIndex("type"))) { case 1: ICLogger.i("incoming type"); break; @@ -88,14 +91,14 @@ public class MissedCallContentObserver extends ContentObserver { this.mMissedCallDate = var4; Date var6 = new Date(var4); (new SimpleDateFormat("yyyy-MM-dd;HH:mm:ss")).format(var6); - Cursor var13 = this.mContext.getContentResolver().query(Constants.CONTACT_URI, (String[])null, "CATEGORY IN (1,2,3)", (String[])null, (String)null); + Cursor var13 = this.mContext.getContentResolver().query(Constants.CONTACT_URI, (String[]) null, "CATEGORY IN (1,2,3)", (String[]) null, (String) null); if (var13 != null) { StringBuilder var7 = new StringBuilder(); var7.append("cursor1.size = "); var7.append(var13.getCount()); ICLogger.i(var7.toString()); - while(var13.moveToNext()) { + while (var13.moveToNext()) { String var8 = var13.getString(3); if (var8.contains(var3) || var3.contains(var8)) { int var9 = var13.getInt(1); diff --git a/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java b/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java index 07169df5..85e4a1de 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java +++ b/app/src/main/java/com/enqualcomm/support/utils/NettyConnection.java @@ -6,15 +6,11 @@ import android.os.Message; import android.os.SystemClock; import android.util.Log; - import com.enqualcomm.support.Config; -import com.enqualcomm.support.adapter.BTHelper; import com.enqualcomm.support.bean.EventLooperHandlerThread; -import com.enqualcomm.support.service.SilentManager; -import com.ic.protocols.protocolAPIHelper; +import com.enqualcomm.support.bean.Runtime; import com.enqualcomm.support.bean.StringMessage; -import com.enqualcomm.support.service.HeartRateManager; -import com.enqualcomm.support.CoreService; +import com.ic.protocols.protocolAPIHelper; import java.nio.ByteBuffer; import java.util.concurrent.ExecutorService; @@ -25,193 +21,192 @@ import rx.schedulers.Schedulers; import static com.enqualcomm.support.utils.RxSocket.SocketStatus.CONNECTED; -import com.enqualcomm.support.bean.Runtime; - public class NettyConnection implements Connection { - private static long realtime_old; - private static final String TAG = NettyConnection.class.getSimpleName(); + private static long realtime_old; + private static final String TAG = NettyConnection.class.getSimpleName(); + + ExecutorService executorService = Executors.newSingleThreadExecutor(); - ExecutorService executorService = Executors.newSingleThreadExecutor(); + private protocolAPIHelper API = null; + private ConnectionListener listener = null; - private protocolAPIHelper API=null; - private ConnectionListener listener=null; - - private int timeout = 60; + private int timeout = 60; private Handler mHandler; - public NettyConnection(ConnectionListener paramConnectionListener,Runtime runtime) { - Log.i(TAG, "NettyConnection "); - this.listener = paramConnectionListener; + public NettyConnection(ConnectionListener paramConnectionListener, Runtime runtime) { + Log.i(TAG, "NettyConnection "); + this.listener = paramConnectionListener; - mHandler = new Handler(EventLooperHandlerThread.makeLooper(NettyConnection.class.getSimpleName()),new Handler.Callback() { - @Override - public boolean handleMessage(Message message) { + mHandler = new Handler(EventLooperHandlerThread.getInstance().makeLooper(), new Handler.Callback() { + @Override + public boolean handleMessage(Message message) { - if (message.what == 100){ - byte[] bytes=message.getData().getByteArray("RecvData"); - String msg= new String(bytes); + if (message.what == 100) { + byte[] bytes = message.getData().getByteArray("RecvData"); + String msg = new String(bytes); - log("get Msg :"+msg+" (size) byteslen" + bytes.length +" strlen"+ msg.length()); - API.parserCmd("",bytes); + log("get Msg :" + msg + " (size) byteslen" + bytes.length + " strlen" + msg.length()); + API.parserCmd("", bytes); + } + return false; } - return false; - } - }); - - if (API == null) API=new protocolAPIHelper(this,runtime ); - - initReadListener(); - init_connection_listener(); - } - - private void connectImpl(String host, int port) { - connectServer(host,port); - } - - public void close() { + }); + + if (API == null) API = new protocolAPIHelper(this, runtime); + + initReadListener(); + init_connection_listener(); + } + + private void connectImpl(String host, int port) { + connectServer(host, port); + } + + public void close() { // listener =null; // RxSocket.getInstance().setConnectionListener(null); - this.disconnect(); - } - - public void connect(final String host, final int port) { - long l = SystemClock.elapsedRealtime(); - if (host.isEmpty()||host ==null){ - ICLogger.i("host name error "+host); - return ; + this.disconnect(); } - if (l - realtime_old < 3000L ) { - ICLogger.i("3秒内skip 重连!"); - return; - } - realtime_old = l; - ICLogger.i("connect1 "+host+":"+port); + + public void connect(final String host, final int port) { + long l = SystemClock.elapsedRealtime(); + if (host.isEmpty() || host == null) { + ICLogger.i("host name error " + host); + return; + } + if (l - realtime_old < 3000L) { + ICLogger.i("3秒内skip 重连!"); + return; + } + realtime_old = l; + ICLogger.i("connect1 " + host + ":" + port); // disconnect(); - this.executorService.execute(new Runnable() { - public void run() { - NettyConnection.this.connectImpl(host, port); - ICLogger.i("connect2"); - } + this.executorService.execute(new Runnable() { + public void run() { + NettyConnection.this.connectImpl(host, port); + ICLogger.i("connect2"); + } }); - } - - public void disconnect() { - - disconnectServer(); - } - + } - private boolean connectServer(String serverip,int serverport){ + public void disconnect() { - //进行连接Socket:这里使用的是,在本地上开启了一个服务器。 + disconnectServer(); + } - RxSocket.getInstance().connectRx(serverip==null?"118.178.155.223":serverip,serverport) - .subscribe( - aBoolean -> { - log("RxSocket Connect "+aBoolean); - }, - throwable -> { - log("RxSocket Connect Error : "+throwable.getMessage()); - }, - () -> { - log("RxSocket Connect main"); - } - ); - - - return true; - } - - public boolean disconnectServer(){ - - log("Call disconnectServer"); - //断开连接 - RxSocket.getInstance().disConnect() - .subscribe( - aBoolean -> { - log("RxSocket DisConnect "+aBoolean); - }, - throwable -> { - log("RxSocket DisConnect Error : "+throwable.getMessage()); - }, - () -> { - log("RxSocket DisConnect main"); - } - ); + private boolean connectServer(String serverip, int serverport) { - return true; - } - private void log(String msg) { - ICLogger.log(TAG,msg); - } + //进行连接Socket:这里使用的是,在本地上开启了一个服务器。 + RxSocket.getInstance().connectRx(serverip == null ? "118.178.155.223" : serverip, serverport) + .subscribe( + aBoolean -> { + log("RxSocket Connect " + aBoolean); + }, + throwable -> { + log("RxSocket Connect Error : " + throwable.getMessage()); + }, + () -> { + log("RxSocket Connect main"); - public boolean isServerConnected(){ - return (RxSocket.getInstance().getSocketStatus()== CONNECTED)?true:false; - } + } + ); - public boolean sendMsg(String cmd) { - if( cmd==null || cmd.isEmpty()) - { - return false; + return true; } + public boolean disconnectServer() { - if (!isServerConnected()){ - - log("skiped"+cmd); - if (Config.LOG_TOFILE) ICLogger.logToFile("APILog"," skiped " + cmd); - return false; - }else{ - log("send "+cmd); - if (Config.LOG_TOFILE) ICLogger.logToFile("APILog"," sent " + cmd); - //向RxSocket写数据 - //示例数据:IWAP00867155030001063# - byte[] test = cmd.getBytes(); - ByteBuffer byteBuffer = ByteBuffer.wrap(test); - RxSocket.getInstance().write(byteBuffer) + log("Call disconnectServer"); + //断开连接 + RxSocket.getInstance().disConnect() .subscribe( aBoolean -> { - log("RxSocket write " + aBoolean); + log("RxSocket DisConnect " + aBoolean); }, throwable -> { - log("RxSocket write Error : " + throwable.getMessage()); + log("RxSocket DisConnect Error : " + throwable.getMessage()); }, () -> { - log("RxSocket write main "); + log("RxSocket DisConnect main"); } ); + return true; + } + + private void log(String msg) { + ICLogger.log(TAG, msg); + } + + public boolean isServerConnected() { + return (RxSocket.getInstance().getSocketStatus() == CONNECTED) ? true : false; } - return true; - } + public boolean sendMsg(String cmd) { + + if (cmd == null || cmd.isEmpty()) { + return false; + } + - public boolean sendMsg(String cmdtype,byte[] cmdArray) { - log(cmdtype); - return sendMsg(cmdArray); + if (!isServerConnected()) { + + log("skiped" + cmd); + if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " skiped " + cmd); + return false; + } else { + log("send " + cmd); + if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " sent " + cmd); + //向RxSocket写数据 + //示例数据:IWAP00867155030001063# + byte[] test = cmd.getBytes(); + ByteBuffer byteBuffer = ByteBuffer.wrap(test); + RxSocket.getInstance().write(byteBuffer) + .subscribe( + aBoolean -> { + log("RxSocket write " + aBoolean); + }, + throwable -> { + log("RxSocket write Error : " + throwable.getMessage()); + }, + () -> { + log("RxSocket write main "); + } + ); + + + } + + return true; + } + + public boolean sendMsg(String cmdtype, byte[] cmdArray) { + log(cmdtype); + return sendMsg(cmdArray); } - public boolean sendMsg(byte[] cmdArray) { - if( cmdArray==null || cmdArray.length==0) - { + public boolean sendMsg(byte[] cmdArray) { + + if (cmdArray == null || cmdArray.length == 0) { return false; } - if (!isServerConnected()){ + if (!isServerConnected()) { - log("skipedBytes "+new String(cmdArray)); - if (Config.LOG_TOFILE)ICLogger.logToFile("APILog"," skiped " + new String(cmdArray)); + log("skipedBytes " + new String(cmdArray)); + if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " skiped " + new String(cmdArray)); return false; - }else{ - log("sendBytes "+new String(cmdArray)); - if (Config.LOG_TOFILE) ICLogger.logToFile("APILog"," sentBytes " + new String(cmdArray)); + } else { + log("sendBytes " + new String(cmdArray)); + if (Config.LOG_TOFILE) + ICLogger.logToFile("APILog", " sentBytes " + new String(cmdArray)); //向RxSocket写数据 //示例数据:IWAP00867155030001063# ByteBuffer byteBuffer = ByteBuffer.wrap(cmdArray); @@ -233,20 +228,23 @@ public class NettyConnection implements Connection { return true; } - public int getTimeout() { return this.timeout; } + + public int getTimeout() { + return this.timeout; + } - public void DeliverCMDMessageToSystem(String cmd,String msg){ - if (this.listener!=null){ - String[] msgArr=new String[]{cmd,msg}; - StringMessage stringMessage=new StringMessage(msgArr); - stringMessage.refresh(msg); - this.listener.onReceive(stringMessage ); - } - } + public void DeliverCMDMessageToSystem(String cmd, String msg) { + if (this.listener != null) { + String[] msgArr = new String[]{cmd, msg}; + StringMessage stringMessage = new StringMessage(msgArr); + stringMessage.refresh(msg); + this.listener.onReceive(stringMessage); + } + } - private void initReadListener(){ - //监听Socket的收包 + private void initReadListener() { + //监听Socket的收包 // RxSocket.getInstance().read() // .subscribeOn(Schedulers.newThread()) // .observeOn(AndroidSchedulers.mainThread()) @@ -268,68 +266,70 @@ public class NettyConnection implements Connection { // log("get Msg ()"); // } // ); - RxSocket.getInstance().setSocketReadCallback(new RxSocket.SocketReadCallback() { - @Override - public void onRecvMsg(byte[] bytes) { - - Message msg=new Message(); - Bundle bdl=new Bundle(); - bdl.putByteArray("RecvData",bytes); - msg.what=100; - msg.setData(bdl); - mHandler.sendMessage(msg); - } - }); - - - } - - - - private void init_connection_listener(){ - - //监听Socket的连接状态 - RxSocket.getInstance().socketStatusListener() - .subscribeOn(Schedulers.newThread()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(socketStatus -> { - log("socketStatusListener socketStatus:" + socketStatus.name()); - if (socketStatus.name().equals("CONNECTED")){ - if (this.listener!=null){ - this.listener.onConnectionOpen(); - } - }else if (socketStatus.name().equals("DIS_CONNECT") || socketStatus.name().equals("DIS_CONNECT_BY_SERVERSIDE")) { - if (this.listener!=null){ - this.listener.onConnectionClose(socketStatus.name()); - } - disconnectServer(); - } - }); - } - public void open() { - - - } - - public void send(StringMessage msg) { - - if(msg==null) { - ICLogger.i(" StringMessage is null skip send!"); - return ; - } - sendMsg(msg.isFromCache()); - ICLogger.logToFile("APILog","send "+msg.getIndex()+" "+msg.getDate()+msg.getTime()+" "+msg.cmd()+" "+msg.isFromCache()); - // ICLogger.i(paramStringMessage.isFromCache()); - - } - - public boolean sendBlocking(StringMessage paramStringMessage) { - ICLogger.i(paramStringMessage.isFromCache()); - sendMsg(paramStringMessage.isFromCache()); - return true; + RxSocket.getInstance().setSocketReadCallback(new RxSocket.SocketReadCallback() { + @Override + public void onRecvMsg(byte[] bytes) { + + Message msg = new Message(); + Bundle bdl = new Bundle(); + bdl.putByteArray("RecvData", bytes); + msg.what = 100; + msg.setData(bdl); + mHandler.sendMessage(msg); + } + }); + + + } + + + private void init_connection_listener() { + + //监听Socket的连接状态 + RxSocket.getInstance().socketStatusListener() + .subscribeOn(Schedulers.newThread()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(socketStatus -> { + log("socketStatusListener socketStatus:" + socketStatus.name()); + if (socketStatus.name().equals("CONNECTED")) { + if (this.listener != null) { + this.listener.onConnectionOpen(); + } + } else if (socketStatus.name().equals("DIS_CONNECT") || socketStatus.name().equals("DIS_CONNECT_BY_SERVERSIDE")) { + if (this.listener != null) { + this.listener.onConnectionClose(socketStatus.name()); + } + disconnectServer(); + } + }); + } + + public void open() { + + + } + + public void send(StringMessage msg) { + + if (msg == null) { + ICLogger.i(" StringMessage is null skip send!"); + return; + } + sendMsg(msg.isFromCache()); + ICLogger.logToFile("APILog", "send " + msg.getIndex() + " " + msg.getDate() + msg.getTime() + " " + msg.cmd() + " " + msg.isFromCache()); + // ICLogger.i(paramStringMessage.isFromCache()); + + } + + public boolean sendBlocking(StringMessage paramStringMessage) { + ICLogger.i(paramStringMessage.isFromCache()); + sendMsg(paramStringMessage.isFromCache()); + return true; + } + + public void setTimeout(int paramInt) { + this.timeout = paramInt; } - - public void setTimeout(int paramInt) { this.timeout = paramInt; } } diff --git a/app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java b/app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java index 2a0767cb..660951a5 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java +++ b/app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java @@ -1,53 +1,36 @@ package com.enqualcomm.support.utils; -import android.app.Notification; import android.app.NotificationManager; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; -import android.media.RingtoneManager; -import android.net.Uri; import android.os.Handler; -import android.os.Messenger; +import android.os.HandlerThread; import android.os.PowerManager; import android.os.Vibrator; -import android.support.v4.app.NotificationCompat; -import android.view.Gravity; -import android.view.MotionEvent; -import android.view.View; import android.view.WindowManager; - import com.enqualcomm.support.Config; import com.enqualcomm.support.Constants; import com.enqualcomm.support.CoreService; -import com.enqualcomm.support.LocationClient; import com.enqualcomm.support.R; -import com.enqualcomm.support.bean.EventLooperHandlerThread; -import com.enqualcomm.support.bean.NotificationParam; +import com.enqualcomm.support.bean.Contact; import com.enqualcomm.support.bean.Runtime; import com.enqualcomm.support.bean.StringMessage; import com.enqualcomm.support.bean.VoiceContent; -import com.enqualcomm.support.service.Deliver; -import com.ic.jni.ICJniUtils; -import com.enqualcomm.support.bean.Contact; import com.enqualcomm.support.service.AudioService; +import com.enqualcomm.support.service.Deliver; import com.enqualcomm.support.service.HeartRateManager; import com.ic.protocols.protocolAPIHelper; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; -import static android.media.RingtoneManager.TYPE_NOTIFICATION; import static android.os.PowerManager.ACQUIRE_CAUSES_WAKEUP; import static android.os.PowerManager.SCREEN_DIM_WAKE_LOCK; -import static com.enqualcomm.support.Constants.ACTION_CLOSE_UNREAD_MSG; -import static com.enqualcomm.support.Constants.ACTION_HEATR_RATE_START; import static com.enqualcomm.support.Constants.ACTION_MESSAGE_SENT; import static com.enqualcomm.support.Constants.ACTION_PLAYTIME; import static com.enqualcomm.support.Constants.ACTION_REMOTE_CAMERA; -import static com.enqualcomm.support.Constants.ACTION_SEND_EMEGENCY_LOCATION_START; -import static com.enqualcomm.support.Constants.ACTION_SEND_SOS_MSG; import static com.enqualcomm.support.Constants.ACTION_SET_SIT_RANGE; import static com.enqualcomm.support.Constants.ACTION_SHUTDOWN; import static com.enqualcomm.support.Constants.ACTION_TEMP_RESULT; @@ -58,489 +41,499 @@ import static com.enqualcomm.support.Constants.KEY_MESSAGE_URL; import static com.enqualcomm.support.Constants.KEY_TEMP_BODY; import static com.enqualcomm.support.Constants.KEY_TEMP_WRIST; import static com.enqualcomm.support.Constants.RESUME_ACTION; - import static com.enqualcomm.support.bean.Content.CONTACT_CATEGORY_GROUP; import static com.enqualcomm.support.utils.TemperatureUtil.KEY_TEMP_BYPROTOCOL; import static com.enqualcomm.support.utils.TemperatureUtil.KEY_TEMP_OUT; public class ProcessReceiver extends BroadcastReceiver { - private static final int MICRO_CHAT = 2; - - private static int last_app_id; - - private static String last_message_name; - - private static CustomDialog mCustomDialog; - - private CustomNotification mCustomNotification; - - private CustomDialog.Builder mDialog; - - private CustomNotification.Builder mNotificationDialog; - - private NotificationManager mNotificationManager; - - private Vibrator vibrator; - - private float x1 = 0.0F; - - private float x2 = 0.0F; - - private float y1 = 0.0F; - - private float y2 = 0.0F; - - private static Handler mHandler=new Handler(EventLooperHandlerThread.makeLooper(ProcessReceiver.class.getSimpleName())); - private void initMyDialog(final Context context, final Contact contact, int app_id,String msg,boolean needreply) { - String var4 = contact==null?"SMS":contact.name; - - if (this.mDialog == null) { - this.mDialog = new CustomDialog.Builder(context); - } + private static final int MICRO_CHAT = 2; - StringBuilder var5 = new StringBuilder(); - var5.append("===mCustomDialog ") - .append(mCustomDialog) - .append(" , appid ").append(app_id); + private static int last_app_id; - ICLogger.i(var5.toString()); - if (mCustomDialog != null && mCustomDialog.isShowing() && last_message_name != null && var4 != null && last_message_name.equals(var4) && last_app_id == app_id) { - mCustomDialog.dismiss(); - } + private static String last_message_name; - last_message_name = var4; - last_app_id = app_id; - CustomDialog.Builder tmpDialog; - if (app_id == 1) { - tmpDialog = this.mDialog.setTitle(context.getString(R.string.setting_title)).setApp(1); - StringBuilder var6 = new StringBuilder(); - var6.append(context.getString(R.string.voiceMessage)); - var6.append(" "); - var6.append(var4); - var6.append(context.getString(R.string.voiceMessageEnd)); - mCustomDialog = tmpDialog.setMessage(var6.toString()).setPositiveButton(context.getString(R.string.ok), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface var1x, int var2x) { - var1x.dismiss(); - ComponentName var3 = new ComponentName("com.enqualcomm.imessage", "com.enqualcomm.imessage.ui.chat.ChatActivity_"); - Intent var5 = new Intent("android.intent.action.MAIN"); - var5.putExtra("ACTIVITY_TYPE", 2); - var5.putExtra("contact", contact); - var5.addCategory("android.intent.category.DEFAULT"); - var5.addFlags(FLAG_ACTIVITY_NEW_TASK); - var5.setComponent(var3); - VibrateUtil.getInstance(context).VibrateOn(false); - try { - context.startActivity(var5); - } catch (Exception e) { - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); - } + private static CustomDialog mCustomDialog; + private CustomNotification mCustomNotification; + + private CustomDialog.Builder mDialog; + + private CustomNotification.Builder mNotificationDialog; + + private NotificationManager mNotificationManager; + + private Vibrator vibrator; + + private float x1 = 0.0F; + + private float x2 = 0.0F; + + private float y1 = 0.0F; + + private float y2 = 0.0F; + + public ProcessReceiver() { + if (mHandler == null) { + HandlerThread handlerThread = new HandlerThread("ic:process-receiver-handler-thread"); + handlerThread.start(); + mHandler = new Handler(handlerThread.getLooper()); } - }).setNegativeButton(context.getString(R.string.cancel), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface var1, int var2) { - var1.dismiss(); - VibrateUtil.getInstance(context).VibrateOn(false); - } - }).create(); - mCustomDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST); - mCustomDialog.show(); - } else if (app_id == 2) { - tmpDialog = this.mDialog.setTitle(context.getString(R.string.hht_misscall_call)).setApp(app_id); - StringBuilder var7 = new StringBuilder(); - var7.append(context.getString(R.string.hht_call_start)); - var7.append(var4); - var7.append(context.getString(R.string.hht_call_end)); - mCustomDialog = tmpDialog.setMessage(var7.toString()).setPositiveButton(context.getString(R.string.ok), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface var1, int var2) { - var1.dismiss(); - VibrateUtil.getInstance(context).VibrateOn(false); - } - }).create(); - mCustomDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST); - mCustomDialog.show(); - }else if (app_id ==3){ - tmpDialog = this.mDialog.setTitle(context.getString(R.string.sms_title)).setApp(1); - StringBuilder var7 = new StringBuilder(); - var7.append(context.getString(R.string.sms_notify)); - mCustomDialog = tmpDialog.setMessage(var7.toString()).setPositiveButton(context.getString(R.string.ok), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface var1, int var2) { - var1.dismiss(); - ComponentName var3 = new ComponentName("com.zmapp.sms", "com.zmapp.sms.MainActivity"); - Intent var5 = new Intent("android.intent.action.MAIN"); - var5.addCategory("android.intent.category.DEFAULT"); - var5.addFlags(FLAG_ACTIVITY_NEW_TASK); - var5.setComponent(var3); - VibrateUtil.getInstance(context).VibrateOn(false); - try { - context.startActivity(var5); - } catch (Exception e) { - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); - } + } + + private static Handler mHandler = null; + + private void initMyDialog(final Context context, final Contact contact, int app_id, String msg, boolean needreply) { + String var4 = contact == null ? "SMS" : contact.name; + + if (this.mDialog == null) { + this.mDialog = new CustomDialog.Builder(context); } - }).setNegativeButton(context.getString(R.string.cancel), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface var1, int var2) { - var1.dismiss(); - VibrateUtil.getInstance(context).VibrateOn(false); + + StringBuilder var5 = new StringBuilder(); + var5.append("===mCustomDialog ") + .append(mCustomDialog) + .append(" , appid ").append(app_id); + + ICLogger.i(var5.toString()); + if (mCustomDialog != null && mCustomDialog.isShowing() && last_message_name != null && var4 != null && last_message_name.equals(var4) && last_app_id == app_id) { + mCustomDialog.dismiss(); } - }).create(); - mCustomDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST); - mCustomDialog.show(); - }else if (app_id ==4) { - tmpDialog = this.mDialog.setTitle("WEB"+context.getString(R.string.sms_title)).setApp(1); - StringBuilder var7 = new StringBuilder(); - var7.append(msg); - - if (needreply) { - mCustomDialog = tmpDialog.setMessage(var7.toString()).setPositiveButton(context.getString(R.string.ok), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface var1, int var2) { - var1.dismiss(); - VibrateUtil.getInstance(context).VibrateOn(false); - if (CoreService.getInstance() != null) { - Runtime runtime = CoreService.getInstance().getRuntime(); - if (Config.custom_name.equals("YQ") || Config.custom_name.equals("YQ_EN")) { - runtime.setAlarmType(Runtime.AlarmType.ALARM_MSGREAD); - Config.setLastUnReadMessage(CoreService.getInstance(), ""); - Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime)); - } else { - CoreService.getInstance().getConnection().send(protocolAPIHelper.getPushTxtReadFlagToSrvMSG(runtime)); - } - } - } - }).create(); - }else{ - mCustomDialog = tmpDialog.setMessage(var7.toString()).setPositiveButton(context.getString(R.string.ok), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface var1, int var2) { - var1.dismiss(); - VibrateUtil.getInstance(context).VibrateOn(false); - } - }).create(); - } - mCustomDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST); - mCustomDialog.show(); - } else if (app_id ==5) { - tmpDialog = this.mDialog.setTitle(context.getString(R.string.findDev)).setApp(1); - StringBuilder var7 = new StringBuilder(); - var7.append(msg); - mCustomDialog = tmpDialog.setMessage(var7.toString()).setPositiveButton(context.getString(R.string.ok), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface var1, int var2) { - var1.dismiss(); - VibrateUtil.getInstance(context).VibrateOn(false); - stopmediaplayer(); - } - }).create(); - mCustomDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST); - mCustomDialog.show(); - }else if (app_id ==6) { - tmpDialog = this.mDialog.setTitle(context.getString(R.string.notification_title)).setApp(1); - StringBuilder var7 = new StringBuilder(); - var7.append(msg); - mCustomDialog = tmpDialog.setMessage(var7.toString()).setPositiveButton(context.getString(R.string.ok), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface var1, int var2) { - var1.dismiss(); - VibrateUtil.getInstance(context).VibrateOn(false); - stopmediaplayer(); - - if(msg.contains("Take Photo")) { - String packagename = "com.eqc.camera"; - String activityName = "com.eqc.camera.TakePictureActivity"; - if (Util.installed(context, "com.ic.camera")) { - packagename = "com.ic.camera"; - activityName = "com.ic.camera.MainActivity"; - } - ComponentName var3 = new ComponentName(packagename, activityName); - Intent var5 = new Intent("android.intent.action.MAIN"); - var5.addCategory("android.intent.category.DEFAULT"); - var5.addFlags(FLAG_ACTIVITY_NEW_TASK); - var5.setComponent(var3); - try { - context.startActivity(var5); - } catch (Exception e) { - e.printStackTrace(); - ICLogger.e(e.getMessage(),e); + + last_message_name = var4; + last_app_id = app_id; + CustomDialog.Builder tmpDialog; + if (app_id == 1) { + tmpDialog = this.mDialog.setTitle(context.getString(R.string.setting_title)).setApp(1); + StringBuilder var6 = new StringBuilder(); + var6.append(context.getString(R.string.voiceMessage)); + var6.append(" "); + var6.append(var4); + var6.append(context.getString(R.string.voiceMessageEnd)); + mCustomDialog = tmpDialog.setMessage(var6.toString()).setPositiveButton(context.getString(R.string.ok), new DialogInterface.OnClickListener() { + public void onClick(DialogInterface var1x, int var2x) { + var1x.dismiss(); + ComponentName var3 = new ComponentName("com.enqualcomm.imessage", "com.enqualcomm.imessage.ui.chat.ChatActivity_"); + Intent var5 = new Intent("android.intent.action.MAIN"); + var5.putExtra("ACTIVITY_TYPE", 2); + var5.putExtra("contact", contact); + var5.addCategory("android.intent.category.DEFAULT"); + var5.addFlags(FLAG_ACTIVITY_NEW_TASK); + var5.setComponent(var3); + VibrateUtil.getInstance(context).VibrateOn(false); + try { + context.startActivity(var5); + } catch (Exception e) { + e.printStackTrace(); + ICLogger.e(e.getMessage(), e); + } + + } + }).setNegativeButton(context.getString(R.string.cancel), new DialogInterface.OnClickListener() { + public void onClick(DialogInterface var1, int var2) { + var1.dismiss(); + VibrateUtil.getInstance(context).VibrateOn(false); + } + }).create(); + mCustomDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST); + mCustomDialog.show(); + } else if (app_id == 2) { + tmpDialog = this.mDialog.setTitle(context.getString(R.string.hht_misscall_call)).setApp(app_id); + StringBuilder var7 = new StringBuilder(); + var7.append(context.getString(R.string.hht_call_start)); + var7.append(var4); + var7.append(context.getString(R.string.hht_call_end)); + mCustomDialog = tmpDialog.setMessage(var7.toString()).setPositiveButton(context.getString(R.string.ok), new DialogInterface.OnClickListener() { + public void onClick(DialogInterface var1, int var2) { + var1.dismiss(); + VibrateUtil.getInstance(context).VibrateOn(false); + } + }).create(); + mCustomDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST); + mCustomDialog.show(); + } else if (app_id == 3) { + tmpDialog = this.mDialog.setTitle(context.getString(R.string.sms_title)).setApp(1); + StringBuilder var7 = new StringBuilder(); + var7.append(context.getString(R.string.sms_notify)); + mCustomDialog = tmpDialog.setMessage(var7.toString()).setPositiveButton(context.getString(R.string.ok), new DialogInterface.OnClickListener() { + public void onClick(DialogInterface var1, int var2) { + var1.dismiss(); + ComponentName var3 = new ComponentName("com.zmapp.sms", "com.zmapp.sms.MainActivity"); + Intent var5 = new Intent("android.intent.action.MAIN"); + var5.addCategory("android.intent.category.DEFAULT"); + var5.addFlags(FLAG_ACTIVITY_NEW_TASK); + var5.setComponent(var3); + VibrateUtil.getInstance(context).VibrateOn(false); + try { + context.startActivity(var5); + } catch (Exception e) { + e.printStackTrace(); + ICLogger.e(e.getMessage(), e); + } + } + }).setNegativeButton(context.getString(R.string.cancel), new DialogInterface.OnClickListener() { + public void onClick(DialogInterface var1, int var2) { + var1.dismiss(); + VibrateUtil.getInstance(context).VibrateOn(false); + } + }).create(); + mCustomDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST); + mCustomDialog.show(); + } else if (app_id == 4) { + tmpDialog = this.mDialog.setTitle("WEB" + context.getString(R.string.sms_title)).setApp(1); + StringBuilder var7 = new StringBuilder(); + var7.append(msg); + + if (needreply) { + mCustomDialog = tmpDialog.setMessage(var7.toString()).setPositiveButton(context.getString(R.string.ok), new DialogInterface.OnClickListener() { + public void onClick(DialogInterface var1, int var2) { + var1.dismiss(); + VibrateUtil.getInstance(context).VibrateOn(false); + if (CoreService.getInstance() != null) { + Runtime runtime = CoreService.getInstance().getRuntime(); + if (Config.custom_name.equals("YQ") || Config.custom_name.equals("YQ_EN")) { + runtime.setAlarmType(Runtime.AlarmType.ALARM_MSGREAD); + Config.setLastUnReadMessage(CoreService.getInstance(), ""); + Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime)); + } else { + CoreService.getInstance().getConnection().send(protocolAPIHelper.getPushTxtReadFlagToSrvMSG(runtime)); + } + } + } + }).create(); + } else { + mCustomDialog = tmpDialog.setMessage(var7.toString()).setPositiveButton(context.getString(R.string.ok), new DialogInterface.OnClickListener() { + public void onClick(DialogInterface var1, int var2) { + var1.dismiss(); + VibrateUtil.getInstance(context).VibrateOn(false); + } + }).create(); } - } + mCustomDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST); + mCustomDialog.show(); + } else if (app_id == 5) { + tmpDialog = this.mDialog.setTitle(context.getString(R.string.findDev)).setApp(1); + StringBuilder var7 = new StringBuilder(); + var7.append(msg); + mCustomDialog = tmpDialog.setMessage(var7.toString()).setPositiveButton(context.getString(R.string.ok), new DialogInterface.OnClickListener() { + public void onClick(DialogInterface var1, int var2) { + var1.dismiss(); + VibrateUtil.getInstance(context).VibrateOn(false); + stopmediaplayer(); + } + }).create(); + mCustomDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST); + mCustomDialog.show(); + } else if (app_id == 6) { + tmpDialog = this.mDialog.setTitle(context.getString(R.string.notification_title)).setApp(1); + StringBuilder var7 = new StringBuilder(); + var7.append(msg); + mCustomDialog = tmpDialog.setMessage(var7.toString()).setPositiveButton(context.getString(R.string.ok), new DialogInterface.OnClickListener() { + public void onClick(DialogInterface var1, int var2) { + var1.dismiss(); + VibrateUtil.getInstance(context).VibrateOn(false); + stopmediaplayer(); + + if (msg.contains("Take Photo")) { + String packagename = "com.eqc.camera"; + String activityName = "com.eqc.camera.TakePictureActivity"; + if (Util.installed(context, "com.ic.camera")) { + packagename = "com.ic.camera"; + activityName = "com.ic.camera.MainActivity"; + } + ComponentName var3 = new ComponentName(packagename, activityName); + Intent var5 = new Intent("android.intent.action.MAIN"); + var5.addCategory("android.intent.category.DEFAULT"); + var5.addFlags(FLAG_ACTIVITY_NEW_TASK); + var5.setComponent(var3); + try { + context.startActivity(var5); + } catch (Exception e) { + e.printStackTrace(); + ICLogger.e(e.getMessage(), e); + } + } + } + }).create(); + mCustomDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST); + mCustomDialog.show(); } - }).create(); - mCustomDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST); - mCustomDialog.show(); } - } - private void playFindDevVoice(Context context){ - - AudioService.getInstance().play(context.getAssets(), "Campus_Life.ogg"); - - } - private void stopmediaplayer(){ - AudioService.getInstance().stop(); - } - private void playNotificationVoice(Context paramContext) { - AudioService.getInstance().play(paramContext.getAssets(), "ring_msg.mp3"); - } - - private void playshutdownsound(Context paramContext) { - AudioService.getInstance().play(paramContext.getAssets(), "shutdownsound.mp3"); - } - - - private void screenOn(Context paramContext) { - final PowerManager.WakeLock wakelock = ((PowerManager)paramContext.getSystemService(Context.POWER_SERVICE)).newWakeLock(ACQUIRE_CAUSES_WAKEUP| SCREEN_DIM_WAKE_LOCK, ProcessReceiver.class.getSimpleName()); - wakelock.acquire(); - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - wakelock.release(); - } - },5000); - } - - @Override - public void onReceive(Context paramContext, Intent paramIntent) { - - boolean isSilence; - Contact contact; - String str = paramIntent.getAction(); - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("action=="); - stringBuilder.append(str); - ICLogger.i(stringBuilder.toString()); - - if (CoreService.getInstance()==null) - { - ICLogger.i("CoreService is null skip deal with this message! "+str); - paramContext.startService(new Intent(paramContext,CoreService.class));// protocol service - return ; + + private void playFindDevVoice(Context context) { + + AudioService.getInstance().play(context.getAssets(), "Campus_Life.ogg"); + } - if (RESUME_ACTION.equals(str)) { - SharPreferenceUtil.setPrefBoolean(paramContext, "key_is_resume", paramIntent.getBooleanExtra("is_resume", false)); - return; - }else if (ACTION_MESSAGE_SENT.equals(str)) { - - String msgType=paramIntent.getStringExtra(KEY_MESSAGE_TYPE); - String msgFrom=paramIntent.getStringExtra(KEY_MESSAGE_FROM); - String msgUrl=paramIntent.getStringExtra(KEY_MESSAGE_URL); - ICLogger.i("receive msg to send type="+msgType+", msg from = "+msgFrom+", msgUrl"+msgUrl); - if (msgFrom==null) msgFrom="123"; - /** - * * 1 语音—— 1.监听语音 * 2.SOS语音 * 3.扩展 - * * 2 图片—— 1.签到图片 * 2.指令图片 * 3.设备图片 * 4.扩展 - */ - if (msgType.equals("voice")) - { - //创建voiceConent并添加到数据 - final VoiceContent voiceContent = VoiceContent.placeHolderOut(CONTACT_CATEGORY_GROUP, msgFrom, msgUrl,1,3); - - // 把voiceContent拆解成1024的分包 - Util.parseToVoicePacketSent(voiceContent); - //trigger 分包发送 - if (CoreService.getInstance().getConnection()!=null) - CoreService.getInstance().getConnection().DeliverCMDMessageToSystem("SentVoicePacket", ""); - }else if (msgType.equals("pic")){ - //创建voiceConent并添加到数据 - final VoiceContent voiceContent = VoiceContent.placeHolderOut(CONTACT_CATEGORY_GROUP, msgFrom, msgUrl,2,3); - - // 把voiceContent拆解成1024的分包 - Util.parseToVoicePacketSent(voiceContent); - //trigger 分包发送 - if (CoreService.getInstance().getConnection()!=null) { - - //h88专用功能,拍照时检查体温心率 - if(Util.getSystemProperties("persist.sys.do_check_condition","false").equals("true")) { - //开启测温 - if(CoreService.getInstance().getRuntime().check_stat_do_temp_test()) - TemperatureUtil.DoTempTest(); - - Util.mSleep(5000); - //开启测量PPG - if(CoreService.getInstance().getRuntime().check_stat_do_ppg_test()) - HeartRateManager.triggerPPGtest(); - } - //开启发送图片 - CoreService.getInstance().getConnection().DeliverCMDMessageToSystem("SentVoicePacket", ""); - } - } - }else if (ACTION_SHUTDOWN.equals(str)) { - playshutdownsound(paramContext); + private void stopmediaplayer() { + AudioService.getInstance().stop(); + } - Util.shutdown(); - return; - }else if (ACTION_PLAYTIME.equals(str)) { - LedUtil.setBlueLedOn(true); + private void playNotificationVoice(Context paramContext) { + AudioService.getInstance().play(paramContext.getAssets(), "ring_msg.mp3"); + } + + private void playshutdownsound(Context paramContext) { + AudioService.getInstance().play(paramContext.getAssets(), "shutdownsound.mp3"); + } + + + private void screenOn(Context paramContext) { + final PowerManager.WakeLock wakelock = ((PowerManager) paramContext.getSystemService(Context.POWER_SERVICE)).newWakeLock(ACQUIRE_CAUSES_WAKEUP | SCREEN_DIM_WAKE_LOCK, ProcessReceiver.class.getSimpleName()); + wakelock.acquire(); mHandler.postDelayed(new Runnable() { @Override public void run() { - LedUtil.setBlueLedOn(false); + wakelock.release(); } - },2000L); - return; - }else if (ACTION_REMOTE_CAMERA.equals(str)) { - if (paramIntent.hasExtra("remote_number")){ - //接收拍照命令,执行拍照 - String str1 = paramIntent.getStringExtra("remote_number"); - mHandler.post(new Runnable() { - @Override - public void run() { - (new CameraUtil(paramContext)).getPictur(str1); - } - }); - }else{ - //接收到拍照完毕命令,发送照片 - String msgFrom=paramIntent.getStringExtra("number"); - String msgUrl=paramIntent.getStringExtra("filepath"); - ICLogger.i("receive taken photo to send "+msgUrl); - //创建voiceConent并添加到数据 - final VoiceContent voiceContent = VoiceContent.placeHolderOut(CONTACT_CATEGORY_GROUP, msgFrom, msgUrl,2,2); - - - // 把voiceContent拆解成1024的分包 - Util.parseToVoicePacketSent(voiceContent); - //trigger 分包发送 - if (CoreService.getInstance().getConnection()!=null) { - - //h88专用功能,拍照后检测体温和心率 - if(Util.getSystemProperties("persist.sys.do_check_condition","false").equals("true")) { - //开启测温 - if(CoreService.getInstance().getRuntime().check_stat_do_temp_test()) - TemperatureUtil.DoTempTest(); - - Util.mSleep(500); - //开启测量PPG - if(CoreService.getInstance().getRuntime().check_stat_do_ppg_test()) - HeartRateManager.triggerPPGtest(); - } - //开启发送照片 - CoreService.getInstance().getConnection().DeliverCMDMessageToSystem("SentVoicePacket", ""); + }, 5000); + } + + @Override + public void onReceive(Context paramContext, Intent paramIntent) { + + boolean isSilence; + Contact contact; + String str = paramIntent.getAction(); + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("action=="); + stringBuilder.append(str); + ICLogger.i(stringBuilder.toString()); + + if (CoreService.getInstance() == null) { + ICLogger.i("CoreService is null skip deal with this message! " + str); + paramContext.startService(new Intent(paramContext, CoreService.class));// protocol service + return; } + if (RESUME_ACTION.equals(str)) { + SharPreferenceUtil.setPrefBoolean(paramContext, "key_is_resume", paramIntent.getBooleanExtra("is_resume", false)); + return; + } else if (ACTION_MESSAGE_SENT.equals(str)) { + + String msgType = paramIntent.getStringExtra(KEY_MESSAGE_TYPE); + String msgFrom = paramIntent.getStringExtra(KEY_MESSAGE_FROM); + String msgUrl = paramIntent.getStringExtra(KEY_MESSAGE_URL); + ICLogger.i("receive msg to send type=" + msgType + ", msg from = " + msgFrom + ", msgUrl" + msgUrl); + if (msgFrom == null) msgFrom = "123"; + /** + * * 1 语音—— 1.监听语音 * 2.SOS语音 * 3.扩展 + * * 2 图片—— 1.签到图片 * 2.指令图片 * 3.设备图片 * 4.扩展 + */ + if (msgType.equals("voice")) { + //创建voiceConent并添加到数据 + final VoiceContent voiceContent = VoiceContent.placeHolderOut(CONTACT_CATEGORY_GROUP, msgFrom, msgUrl, 1, 3); + + // 把voiceContent拆解成1024的分包 + Util.parseToVoicePacketSent(voiceContent); + //trigger 分包发送 + if (CoreService.getInstance().getConnection() != null) + CoreService.getInstance().getConnection().DeliverCMDMessageToSystem("SentVoicePacket", ""); + } else if (msgType.equals("pic")) { + //创建voiceConent并添加到数据 + final VoiceContent voiceContent = VoiceContent.placeHolderOut(CONTACT_CATEGORY_GROUP, msgFrom, msgUrl, 2, 3); + + // 把voiceContent拆解成1024的分包 + Util.parseToVoicePacketSent(voiceContent); + //trigger 分包发送 + if (CoreService.getInstance().getConnection() != null) { + + //h88专用功能,拍照时检查体温心率 + if (Util.getSystemProperties("persist.sys.do_check_condition", "false").equals("true")) { + //开启测温 + if (CoreService.getInstance().getRuntime().check_stat_do_temp_test()) + TemperatureUtil.DoTempTest(); + + Util.mSleep(5000); + //开启测量PPG + if (CoreService.getInstance().getRuntime().check_stat_do_ppg_test()) + HeartRateManager.triggerPPGtest(); + } + //开启发送图片 + CoreService.getInstance().getConnection().DeliverCMDMessageToSystem("SentVoicePacket", ""); + } + } + } else if (ACTION_SHUTDOWN.equals(str)) { + + playshutdownsound(paramContext); + + Util.shutdown(); + return; + } else if (ACTION_PLAYTIME.equals(str)) { + LedUtil.setBlueLedOn(true); + mHandler.postDelayed(new Runnable() { + @Override + public void run() { + LedUtil.setBlueLedOn(false); + } + }, 2000L); + return; + } else if (ACTION_REMOTE_CAMERA.equals(str)) { + if (paramIntent.hasExtra("remote_number")) { + //接收拍照命令,执行拍照 + String str1 = paramIntent.getStringExtra("remote_number"); + mHandler.post(new Runnable() { + @Override + public void run() { + (new CameraUtil(paramContext)).getPictur(str1); + } + }); + } else { + //接收到拍照完毕命令,发送照片 + String msgFrom = paramIntent.getStringExtra("number"); + String msgUrl = paramIntent.getStringExtra("filepath"); + ICLogger.i("receive taken photo to send " + msgUrl); + //创建voiceConent并添加到数据 + final VoiceContent voiceContent = VoiceContent.placeHolderOut(CONTACT_CATEGORY_GROUP, msgFrom, msgUrl, 2, 2); + + + // 把voiceContent拆解成1024的分包 + Util.parseToVoicePacketSent(voiceContent); + //trigger 分包发送 + if (CoreService.getInstance().getConnection() != null) { + + //h88专用功能,拍照后检测体温和心率 + if (Util.getSystemProperties("persist.sys.do_check_condition", "false").equals("true")) { + //开启测温 + if (CoreService.getInstance().getRuntime().check_stat_do_temp_test()) + TemperatureUtil.DoTempTest(); + + Util.mSleep(500); + //开启测量PPG + if (CoreService.getInstance().getRuntime().check_stat_do_ppg_test()) + HeartRateManager.triggerPPGtest(); + } + //开启发送照片 + CoreService.getInstance().getConnection().DeliverCMDMessageToSystem("SentVoicePacket", ""); + } - } + } - return; + return; - }else if (DIALOG_ACTION.equals(str)) { - if (paramIntent.hasExtra("contact")) { - contact = (Contact) paramIntent.getParcelableExtra("contact"); - SharPreferenceUtil.getPrefBoolean(paramContext, "key_is_resume", false); - isSilence = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false); - if (contact != null && !isSilence) { - if (!DeviceInfoUtil.isTopActivity(paramContext)) { - this.initMyDialog(paramContext, contact, 1,"",false); - this.playNotificationVoice(paramContext); - VibrateUtil.getInstance(paramContext).VibrateOn(true); - } + } else if (DIALOG_ACTION.equals(str)) { + if (paramIntent.hasExtra("contact")) { + contact = (Contact) paramIntent.getParcelableExtra("contact"); + SharPreferenceUtil.getPrefBoolean(paramContext, "key_is_resume", false); + isSilence = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false); + if (contact != null && !isSilence) { + if (!DeviceInfoUtil.isTopActivity(paramContext)) { + this.initMyDialog(paramContext, contact, 1, "", false); + this.playNotificationVoice(paramContext); + VibrateUtil.getInstance(paramContext).VibrateOn(true); + } - this.screenOn(paramContext); - } - }else if (paramIntent.hasExtra("sms")) { - String sms = paramIntent.getStringExtra("sms"); - SharPreferenceUtil.getPrefBoolean(paramContext, "key_is_resume", false); - isSilence = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false); - if (sms != null && !isSilence) { - //if (!DeviceInfoUtil.isTopActivity(paramContext)) { - this.initMyDialog(paramContext, null, 3,sms,false); - this.playNotificationVoice(paramContext); - VibrateUtil.getInstance(paramContext).VibrateOn(true); - //} - - this.screenOn(paramContext); - } - }else if (paramIntent.hasExtra("pushtxt")) { - String sms = paramIntent.getStringExtra("pushtxt"); - boolean needreply=false; - if (paramIntent.hasExtra("needreply")){ - needreply= paramIntent.getBooleanExtra("needreply",false); - } - SharPreferenceUtil.getPrefBoolean(paramContext, "key_is_resume", false); - isSilence = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false); - if (sms != null && !isSilence) { - if (!DeviceInfoUtil.isTopActivity(paramContext)) { - this.initMyDialog(paramContext, null, 4, sms,needreply); + this.screenOn(paramContext); + } + } else if (paramIntent.hasExtra("sms")) { + String sms = paramIntent.getStringExtra("sms"); + SharPreferenceUtil.getPrefBoolean(paramContext, "key_is_resume", false); + isSilence = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false); + if (sms != null && !isSilence) { + //if (!DeviceInfoUtil.isTopActivity(paramContext)) { + this.initMyDialog(paramContext, null, 3, sms, false); this.playNotificationVoice(paramContext); VibrateUtil.getInstance(paramContext).VibrateOn(true); + //} + + this.screenOn(paramContext); + } + } else if (paramIntent.hasExtra("pushtxt")) { + String sms = paramIntent.getStringExtra("pushtxt"); + boolean needreply = false; + if (paramIntent.hasExtra("needreply")) { + needreply = paramIntent.getBooleanExtra("needreply", false); + } + SharPreferenceUtil.getPrefBoolean(paramContext, "key_is_resume", false); + isSilence = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false); + if (sms != null && !isSilence) { + if (!DeviceInfoUtil.isTopActivity(paramContext)) { + this.initMyDialog(paramContext, null, 4, sms, needreply); + this.playNotificationVoice(paramContext); + VibrateUtil.getInstance(paramContext).VibrateOn(true); + } + + this.screenOn(paramContext); + } + } else if (paramIntent.hasExtra("findDev")) { + String finddevtxt = paramIntent.getStringExtra("findDev"); + SharPreferenceUtil.getPrefBoolean(paramContext, "key_is_resume", false); + isSilence = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false); + if (finddevtxt != null && !isSilence) { + this.initMyDialog(paramContext, null, 5, finddevtxt, false); + this.playFindDevVoice(paramContext); + VibrateUtil.getInstance(paramContext).VibrateOn(true); + + this.screenOn(paramContext); } + } else if (paramIntent.hasExtra("takephoto")) { + String takephoto = paramIntent.getStringExtra("takephoto"); + SharPreferenceUtil.getPrefBoolean(paramContext, "key_is_resume", false); + isSilence = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false); + if (takephoto != null && !isSilence) { - this.screenOn(paramContext); + this.initMyDialog(paramContext, null, 6, takephoto, false); + this.playNotificationVoice(paramContext); + VibrateUtil.getInstance(paramContext).VibrateOn(true); + + this.screenOn(paramContext); + } } - }else if (paramIntent.hasExtra("findDev")) { - String finddevtxt = paramIntent.getStringExtra("findDev"); - SharPreferenceUtil.getPrefBoolean(paramContext, "key_is_resume", false); - isSilence = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false); - if (finddevtxt != null && !isSilence) { - this.initMyDialog(paramContext, null, 5,finddevtxt,false); - this.playFindDevVoice(paramContext); - VibrateUtil.getInstance(paramContext).VibrateOn(true); - - this.screenOn(paramContext); - } - }else if (paramIntent.hasExtra("takephoto")) { - String takephoto = paramIntent.getStringExtra("takephoto"); - SharPreferenceUtil.getPrefBoolean(paramContext, "key_is_resume", false); - isSilence = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false); - if (takephoto != null && !isSilence) { - - this.initMyDialog(paramContext, null, 6,takephoto,false); - this.playNotificationVoice(paramContext); - VibrateUtil.getInstance(paramContext).VibrateOn(true); - - this.screenOn(paramContext); - } - } - }else if (ACTION_TEMP_RESULT.equals(str)) { - double wrist_temp = paramIntent.getDoubleExtra(KEY_TEMP_WRIST, 0.0f); - double body_temp = paramIntent.getDoubleExtra(KEY_TEMP_BODY, 0.0f); - double tempOut = paramIntent.getDoubleExtra(KEY_TEMP_OUT, 0.0f); - boolean byprotocol=paramIntent.getBooleanExtra(KEY_TEMP_BYPROTOCOL,false); - if(byprotocol==false) { - if (Config.disableWristTemp) { - //ic68 - body_temp=wrist_temp; - } - ICLogger.i("Received Temperature wrist "+wrist_temp+" body "+body_temp); - StringMessage temperatureMsg = protocolAPIHelper.getTemperatureMSG(wrist_temp, body_temp, tempOut, null); - if (temperatureMsg != null) { - ICLogger.i("temp 发送体温测量值 " + temperatureMsg.isFromCache()); - } - Deliver.sendLocationMSG(temperatureMsg); - }else{ - ICLogger.i("Skip protocol Temperature wrist "+wrist_temp+" body "+body_temp); - - } - }else if (ACTION_SET_SIT_RANGE.equals(str)) { - if (paramIntent.hasExtra( Constants.KEY_SIT_RANGE)){ - int sitrange=paramIntent.getIntExtra(Constants.KEY_SIT_RANGE,0); - Config.setKeepSitRangeInMinutes(paramContext,sitrange); - ICLogger.i("set KeepSitRange int "+sitrange+" minutes!"); - ICLogger.i("则重置 lastCheckSitTime 以及 lastSitCheckStepCount"); - Runtime.lastSitCheckStepCount=CoreService.getInstance().getRuntime().getTotalStepCount(); - Runtime.lastSitCheckTiimeyyyyMMddHHmmss=TimeUtil.getSystemTime3(); - } - } else { - //如果来电了,还有未读的消息,干脆关掉,防止影响接电话。 - if (mCustomDialog != null && mCustomDialog.isShowing()) { - mCustomDialog.dismiss(); - } + } else if (ACTION_TEMP_RESULT.equals(str)) { + double wrist_temp = paramIntent.getDoubleExtra(KEY_TEMP_WRIST, 0.0f); + double body_temp = paramIntent.getDoubleExtra(KEY_TEMP_BODY, 0.0f); + double tempOut = paramIntent.getDoubleExtra(KEY_TEMP_OUT, 0.0f); + boolean byprotocol = paramIntent.getBooleanExtra(KEY_TEMP_BYPROTOCOL, false); + if (byprotocol == false) { + if (Config.disableWristTemp) { + //ic68 + body_temp = wrist_temp; + } + ICLogger.i("Received Temperature wrist " + wrist_temp + " body " + body_temp); + StringMessage temperatureMsg = protocolAPIHelper.getTemperatureMSG(wrist_temp, body_temp, tempOut, null); + if (temperatureMsg != null) { + ICLogger.i("temp 发送体温测量值 " + temperatureMsg.isFromCache()); + } + Deliver.sendLocationMSG(temperatureMsg); + } else { + ICLogger.i("Skip protocol Temperature wrist " + wrist_temp + " body " + body_temp); - if (this.mCustomNotification != null && this.mCustomNotification.isShowing()) { - this.mCustomNotification.dismiss(); + } + } else if (ACTION_SET_SIT_RANGE.equals(str)) { + if (paramIntent.hasExtra(Constants.KEY_SIT_RANGE)) { + int sitrange = paramIntent.getIntExtra(Constants.KEY_SIT_RANGE, 0); + Config.setKeepSitRangeInMinutes(paramContext, sitrange); + ICLogger.i("set KeepSitRange int " + sitrange + " minutes!"); + ICLogger.i("则重置 lastCheckSitTime 以及 lastSitCheckStepCount"); + Runtime.lastSitCheckStepCount = CoreService.getInstance().getRuntime().getTotalStepCount(); + Runtime.lastSitCheckTiimeyyyyMMddHHmmss = TimeUtil.getSystemTime3(); + } + } else { + //如果来电了,还有未读的消息,干脆关掉,防止影响接电话。 + if (mCustomDialog != null && mCustomDialog.isShowing()) { + mCustomDialog.dismiss(); + } + + if (this.mCustomNotification != null && this.mCustomNotification.isShowing()) { + this.mCustomNotification.dismiss(); + } } - } - } - - public void sendStheartRateBroadcast(Context paramContext, String actionStr, int paramInt) { - Intent intent = new Intent(); - intent.setAction(actionStr); - intent.putExtra("stheartRateType", paramInt); - paramContext.sendBroadcast(intent); - } - public void sendSOSBroadcast(Context paramContext, String actionStr) { - Intent intent = new Intent(); - intent.setAction(actionStr); - paramContext.sendBroadcast(intent); - } + } + + public void sendStheartRateBroadcast(Context paramContext, String actionStr, int paramInt) { + Intent intent = new Intent(); + intent.setAction(actionStr); + intent.putExtra("stheartRateType", paramInt); + paramContext.sendBroadcast(intent); + } + + public void sendSOSBroadcast(Context paramContext, String actionStr) { + Intent intent = new Intent(); + intent.setAction(actionStr); + paramContext.sendBroadcast(intent); + } } diff --git a/app/src/main/java/com/ic/protocols/protocol_ic.java b/app/src/main/java/com/ic/protocols/protocol_ic.java index 9de10555..01494c34 100644 --- a/app/src/main/java/com/ic/protocols/protocol_ic.java +++ b/app/src/main/java/com/ic/protocols/protocol_ic.java @@ -6,6 +6,7 @@ import android.content.Intent; import android.net.Uri; import android.os.Environment; import android.os.Handler; +import android.os.HandlerThread; import com.enqualcomm.support.Config; import com.enqualcomm.support.Constants; @@ -14,7 +15,6 @@ import com.enqualcomm.support.R; import com.enqualcomm.support.bean.Alarm; import com.enqualcomm.support.bean.Contact; import com.enqualcomm.support.bean.Content; -import com.enqualcomm.support.bean.EventLooperHandlerThread; import com.enqualcomm.support.bean.ICLocation; import com.enqualcomm.support.bean.Runtime; import com.enqualcomm.support.bean.StringMessage; @@ -41,7 +41,6 @@ import java.util.Locale; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static android.content.Intent.FLAG_INCLUDE_STOPPED_PACKAGES; import static com.enqualcomm.support.Constants.ACTION_HEATR_RATE_START; -import static com.enqualcomm.support.Constants.ACTION_REMOTE_CAMERA; import static com.enqualcomm.support.Constants.DIALOG_ACTION; import static com.enqualcomm.support.LocationClient.LOCATION_MODE; import static com.enqualcomm.support.bean.Contact.GROUP_ALL; @@ -53,8 +52,9 @@ public class protocol_ic { private static final String CMDHEADER = "IW"; private static final String CMDEND = "#"; private static final String CMDSPLIT = ","; - public static final String defaultServerIP="watch.jiai.pro"; - public static final int defaultServerPort=8090; + public static final String defaultServerIP = "watch.jiai.pro"; + public static final int defaultServerPort = 8090; + public enum CMD_TYPE { /*终端发起*/ AP00,//登录包 @@ -289,14 +289,18 @@ public class protocol_ic { } - private Connection mConnection=null; - private Runtime mRuntime=null; + private Connection mConnection = null; + private Runtime mRuntime = null; public protocol_ic(Connection connect, Runtime runtime) { - mConnection=connect; - mRuntime=runtime; - + if (mHandler == null) { + HandlerThread handlerThread = new HandlerThread("ic:protocol-handler-thread"); + handlerThread.start(); + mHandler = new Handler(handlerThread.getLooper()); } + mConnection = connect; + mRuntime = runtime; + } private StringBuffer cmdbuf = new StringBuffer(); @@ -313,7 +317,7 @@ public class protocol_ic { return ""; } - }else{ + } else { return ""; } @@ -336,15 +340,16 @@ public class protocol_ic { } - private Handler mHandler=new Handler(EventLooperHandlerThread.makeLooper(protocol_ic.class.getSimpleName())); + private Handler mHandler = null; /**/ - public static StringMessage genStringMessage(String cmdName, String msg){ - StringMessage sm=new StringMessage(new String[]{cmdName,msg}); + public static StringMessage genStringMessage(String cmdName, String msg) { + StringMessage sm = new StringMessage(new String[]{cmdName, msg}); sm.refresh(msg); - sm.setDate(TimeUtil.getSystemDateYYMMDD(),TimeUtil.getSystemTimeHHmmss()); + sm.setDate(TimeUtil.getSystemDateYYMMDD(), TimeUtil.getSystemTimeHHmmss()); return sm; } + /* 返回true 表示 cmd 全部解析成功 返回false表示 cmd至少有一条解析失败,失败的数据归入buffer,下一次识别接着使用 @@ -355,11 +360,11 @@ public class protocol_ic { boolean iscmdComplete = false; boolean ret = true; String last_inCompletecmd = ""; - String cmd_msgbuf=new String(bytes); - log("bytes.size "+bytes.length); + String cmd_msgbuf = new String(bytes); + log("bytes.size " + bytes.length); // cmdbuf.append(cmd_msgbuf); cmdbuf.append(cmd_msgbuf); - log("cmdbuf.size "+cmdbuf.length() +" "+cmdbuf.toString()); + log("cmdbuf.size " + cmdbuf.length() + " " + cmdbuf.toString()); /* 如果不是 #结尾,就认为 接收数据不全,置位。 */ @@ -368,7 +373,7 @@ public class protocol_ic { } String[] cmdlist = cmd_msgbuf.split(CMDEND); int listlen = cmdlist.length; - log("listlen "+listlen); + log("listlen " + listlen); /* 如果解析出来的cmdlist不是空,且数据不是完整cmd则保留 最后一条数据到last_inCompletecmd */ @@ -384,12 +389,12 @@ public class protocol_ic { if (key == CMD_TYPE.BP28) { //如果是BP28则 后面的数据是音频,需要保留 byte[] amrBuf; - int amrLen = getBP28Amrlen(cmdlist[i] ); + int amrLen = getBP28Amrlen(cmdlist[i]); if (bytes.length > amrLen) { handleCmd(key, cmdlist[i], bytes); } } else { - handleCmd(key, cmdlist[i]); + handleCmd(key, cmdlist[i]); } } } @@ -398,6 +403,7 @@ public class protocol_ic { cmdbuf = new StringBuffer().append(last_inCompletecmd); return ret; } + public int getBP28Amrlen(String cmd) { String Name; @@ -407,8 +413,8 @@ public class protocol_ic { int packetLen; - String[] msg=cmd.split(CMDSPLIT); - if (msg.length>=6){ + String[] msg = cmd.split(CMDSPLIT); + if (msg.length >= 6) { try { Name = msg[1]; appendIndex = msg[2]; @@ -426,29 +432,30 @@ public class protocol_ic { log(stringBuffer.toString()); return packetLen; - }catch (Exception e){ - ICLogger.e(e.getMessage(),e); + } catch (Exception e) { + ICLogger.e(e.getMessage(), e); } - }else{ - log("getBP28AmrLen","format Error"); + } else { + log("getBP28AmrLen", "format Error"); } return -1; } + /*登录*/ public static StringMessage AP00(Runtime ds) { //示例数据:IWAP00867155030001063# - return genStringMessage(cmdMap.get(CMD_TYPE.AP00),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP00)).append(ds.IMEI()).append(CMDEND).toString()); + return genStringMessage(cmdMap.get(CMD_TYPE.AP00), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP00)).append(ds.IMEI()).append(CMDEND).toString()); } //处理 登录 BP00 - public void handleBP00(Runtime runtime,String cmd){ - String[] msg=cmd.split(CMDSPLIT); + public void handleBP00(Runtime runtime, String cmd) { + String[] msg = cmd.split(CMDSPLIT); // get Msg :IWBP00,20191229171933,8# (size)24 // 12-30 01:19:33.861 6492-6492/com.enqualcomm.support I/ICSrv.protocolAPIHelper: found cmd keyid=BP00 ,keyname=BP00 , IWBP00,20191229171933,8 - if (msg.length>=3) { + if (msg.length >= 3) { log("handleBP00", "Set Datetime " + msg[1]); log("handleBP00", "Set TimeZone " + msg[2]); try { @@ -464,14 +471,14 @@ public class protocol_ic { ICLogger.i("===" + TimeUtil.getDefaultTimeZone()); } - }catch (Exception e) { + } catch (Exception e) { ICLogger.e(e.getMessage(), e); } // Set Datetime 20200505112734 // Set TimeZone 8 - }else{ - log("handleBP00","format Error"); + } else { + log("handleBP00", "format Error"); } } @@ -492,19 +499,20 @@ public class protocol_ic { //02为工作模式 ,(设防,工作模式如果为00,则代表无或未设置) //5555: 计步步数,每次到达 9999 后重 0 开始计 (此处 9999 为示例,可以为2字节int 然后溢出归零) //30: 翻滚次数 - return genStringMessage(cmdMap.get(CMD_TYPE.AP03),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP03)).append(CMDSPLIT).append(String.format("%03d",abs(ds.getSignalStrength()))) - .append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append(ds.isPowerConnected()?"1":"0") + return genStringMessage(cmdMap.get(CMD_TYPE.AP03), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP03)).append(CMDSPLIT).append(String.format("%03d", abs(ds.getSignalStrength()))) + .append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append(ds.isPowerConnected() ? "1" : "0") .append(ds.getProtection()).append(ds.getWorkModeStr()).append(CMDSPLIT) .append(ds.getTotalStepCount()).append(CMDSPLIT).append(ds.getRolltimes()).append(CMDEND).toString()); } + //处理 心跳 BP03 - public void handleBP03(String cmd){ + public void handleBP03(String cmd) { log("BP03心跳接收成功"); } - public static StringMessage AP10(Runtime ds){ + public static StringMessage AP10(Runtime ds) { /** * IWAP10080524A2232.9806N11404.9355E000.1061830323.8706000908000502, @@ -515,9 +523,9 @@ public class protocol_ic { * 00:第一个0:是否需要回复地址信息,0:不回复,1回复. * 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# */ - return genStringMessage(cmdMap.get(CMD_TYPE.AP10),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP10)).append(TimeUtil.getShortDate()) + return genStringMessage(cmdMap.get(CMD_TYPE.AP10), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP10)).append(TimeUtil.getShortDate()) .append(ds.getGPSData()).append(TimeUtil.getShortTime()).append(ds.getGPSHeading()) - .append(String.format("%03d",abs(ds.getSignalStrength()))) + .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) @@ -534,20 +542,19 @@ public class protocol_ic { // 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()))) + 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 - public void handleBP01(String cmd){ + public void handleBP01(String cmd) { log("BP01定位接收成功"); } - /*LBS+WiFi混合定位*/ public static StringMessage AP02(Runtime ds) { //示例数据:IWAP02, @@ -569,15 +576,15 @@ public class protocol_ic { // 4: 表示WIFI组数, // 1|D8-24-BD-79-FA-1F|59: ssid|mac地址|信号强度,信号强度转正数:150 – abs(信号强度) - int apsum=0; - String wifiinfo=ds.getWifiInfo(); + int apsum = 0; + String wifiinfo = ds.getWifiInfo(); if (!wifiinfo.isEmpty()) { String[] list = wifiinfo.split("&"); apsum = list.length; } - ICLogger.i("Wifi ap sum "+apsum); - return genStringMessage(cmdMap.get(CMD_TYPE.AP02),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP02)).append(CMDSPLIT) + ICLogger.i("Wifi ap sum " + apsum); + return genStringMessage(cmdMap.get(CMD_TYPE.AP02), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP02)).append(CMDSPLIT) .append(ds.getLanguage()).append(CMDSPLIT) .append(0).append(CMDSPLIT) //为0时不回复地址 .append(ds.getLBSMultiStationData()).append(CMDSPLIT) //基站信息数据 @@ -585,26 +592,26 @@ public class protocol_ic { } //处理 定位 BP01 - public void handleBP02(String cmd){ + public void handleBP02(String cmd) { log("BP02定位接收成功"); } - - public static StringMessage APXL(String id){ + public static StringMessage APXL(String id) { //设备响应: IWAPXL,080835# //080835:指令流水号 - return genStringMessage(cmdMap.get(CMD_TYPE.APXL),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXL)) + return genStringMessage(cmdMap.get(CMD_TYPE.APXL), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXL)) .append(CMDSPLIT).append(id) .append(CMDEND).toString()); } /** * 测量心率 + * * @param cmd * @param connection */ - public void handleBPXL(String cmd, Connection connection){ + public void handleBPXL(String cmd, Connection connection) { //IWBPXL,353456789012345,080835# //说明: //IW:标识符 @@ -613,32 +620,33 @@ public class protocol_ic { //080835 :指令流水号 //设备响应: IWAPXL,080835# //080835:指令流水号 - String[] list=cmd.split(CMDSPLIT); - if (list.length==3){ - String index=list[2]; - String imei=list[1]; - ICLogger.i("Handle BPXL IMEI "+imei+",index "+index); + String[] list = cmd.split(CMDSPLIT); + if (list.length == 3) { + String index = list[2]; + String imei = list[1]; + ICLogger.i("Handle BPXL IMEI " + imei + ",index " + index); connection.send(APXL(index)); - }else{ + } else { ICLogger.i("BPXL format error!"); } } - public static StringMessage APXY(String id){ + public static StringMessage APXY(String id) { //设备响应: IWAPXY,080835# //080835:指令流水号 - return genStringMessage(cmdMap.get(CMD_TYPE.APXY),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXY)) + return genStringMessage(cmdMap.get(CMD_TYPE.APXY), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXY)) .append(CMDSPLIT).append(id) .append(CMDEND).toString()); } /** * 测量血压 + * * @param cmd * @param connection */ - public void handleBPXY(String cmd,Connection connection){ + public void handleBPXY(String cmd, Connection connection) { //IWBPXY,353456789012345,080835# //说明: //IW:标识符 @@ -647,25 +655,24 @@ public class protocol_ic { //080835 :指令流水号 //设备响应: IWAPXY,080835# //080835:指令流水号 - String[] list=cmd.split(CMDSPLIT); - if (list.length==3){ - String index=list[2]; - String imei=list[1]; - ICLogger.i("Handle BPXY IMEI "+imei+",index "+index); + String[] list = cmd.split(CMDSPLIT); + if (list.length == 3) { + String index = list[2]; + String imei = list[1]; + ICLogger.i("Handle BPXY IMEI " + imei + ",index " + index); connection.send(APXY(index)); - }else{ + } else { ICLogger.i("BPXY format error!"); } } - - public static StringMessage APJZ(String id,String BPH,String BPL,String Age,String Sex){ + public static StringMessage APJZ(String id, String BPH, String BPL, String Age, String Sex) { //设备响应: IWAPJZ,792997,120,85,42,1# //792997:指令流水号 // 高压120,低压85,年龄42,1 男性 - return genStringMessage(cmdMap.get(CMD_TYPE.APJZ),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APJZ)) + return genStringMessage(cmdMap.get(CMD_TYPE.APJZ), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APJZ)) .append(CMDSPLIT).append(id) .append(CMDSPLIT).append(BPH) .append(CMDSPLIT).append(BPL) @@ -675,12 +682,11 @@ public class protocol_ic { } /** - * * @param cmd * @param connection * @param runtime */ - public void handleBPJZ(String cmd,Connection connection,Runtime runtime){ + public void handleBPJZ(String cmd, Connection connection, Runtime runtime) { //cmdbuf.size 42 IWBPJZ,867155030001063,199600,120,85,45,1# 高压120,低压85,年龄45,男性 // cmdbuf.size 42 IWBPJZ,867155030001063,909957,120,85,42,0# 高压120,低压85,年龄42,女性 //IWBPJZ,353456789012345,080835,110,75# @@ -693,8 +699,8 @@ public class protocol_ic { //080835 :指令流水号 //设备响应: IWAPJZ,792997,120,85,42,1# //792997:指令流水号 - String[] list=cmd.split(CMDSPLIT); - if (list.length==7){ + String[] list = cmd.split(CMDSPLIT); + if (list.length == 7) { try { String index = list[2]; String imei = list[1]; @@ -706,30 +712,29 @@ public class protocol_ic { connection.send(APJZ(index, strBPH, strBPL, strAge, strSex)); runtime.getHRS().setXY_Ref(Integer.parseInt(strBPH), Integer.parseInt(strBPL), Integer.parseInt(strAge), Integer.parseInt(strSex)); ICLogger.i("Handle BPJZ IMEI " + imei + ",index " + index + ", BPH " + strBPH + ", BPL " + strBPL + ", Age " + strAge + ", Sex " + (strSex.equals("1") ? "男" : "女")); - }catch (Exception e){ - ICLogger.e(e.getMessage(),e); + } catch (Exception e) { + ICLogger.e(e.getMessage(), e); } - }else{ + } else { ICLogger.i("BPXY format error!"); } } - //重启 - public static StringMessage AP18(String index){ - return genStringMessage(cmdMap.get(CMD_TYPE.AP18),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP18)) + public static StringMessage AP18(String index) { + return genStringMessage(cmdMap.get(CMD_TYPE.AP18), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP18)) .append(CMDSPLIT).append(index) .append(CMDEND).toString()); } - public void handleBP18(Connection connection,String cmd) { + public void handleBP18(Connection connection, String cmd) { // IWBP18,867155030001063,161723 - String[] cmdlist=cmd.split(CMDSPLIT); - if (cmdlist.length==3) { + String[] cmdlist = cmd.split(CMDSPLIT); + if (cmdlist.length == 3) { connection.send(AP18(cmdlist[2])); @@ -737,16 +742,17 @@ public class protocol_ic { } //恢复出厂设置 - public static StringMessage AP17(String index){ - return genStringMessage(cmdMap.get(CMD_TYPE.AP17),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP17)) + public static StringMessage AP17(String index) { + return genStringMessage(cmdMap.get(CMD_TYPE.AP17), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP17)) .append(CMDSPLIT).append(index) .append(CMDEND).toString()); } - public void handleBP17(Connection connection,String cmd) { + + public void handleBP17(Connection connection, String cmd) { // IWBP17,867155030001063,161723 - String[] cmdlist=cmd.split(CMDSPLIT); - if (cmdlist.length==3) { + String[] cmdlist = cmd.split(CMDSPLIT); + if (cmdlist.length == 3) { connection.send(AP17(cmdlist[2])); @@ -756,16 +762,17 @@ public class protocol_ic { //关机 - public static StringMessage AP31(String index){ - return genStringMessage("AP31",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP31)) + public static StringMessage AP31(String index) { + return genStringMessage("AP31", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP31)) .append(CMDSPLIT).append(index) .append(CMDEND).toString()); } - public void handleBP31(Connection connection,String cmd) { + + public void handleBP31(Connection connection, String cmd) { // IWBP31,867155030001063,161723 - String[] cmdlist=cmd.split(CMDSPLIT); - if (cmdlist.length==3) { + String[] cmdlist = cmd.split(CMDSPLIT); + if (cmdlist.length == 3) { connection.send(AP31(cmdlist[2])); @@ -773,8 +780,8 @@ public class protocol_ic { } //设置SOS号码 - public static StringMessage AP12(String index,String phNum1,String phNum2,String phNum3){ - return genStringMessage("AP12",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP12)) + public static StringMessage AP12(String index, String phNum1, String phNum2, String phNum3) { + return genStringMessage("AP12", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP12)) .append(CMDSPLIT).append(index) .append(CMDSPLIT).append(phNum1) .append(CMDSPLIT).append(phNum2) @@ -783,18 +790,18 @@ public class protocol_ic { } //设置SOS号码 - public void handleBP12(Connection connection,String cmd,Runtime runtime){ + public void handleBP12(Connection connection, String cmd, Runtime runtime) { // IWBP12,353456789012345,080835,135XXXXXXXX,135XXXXXXXX,135XXXXXXXX# - String[] cmdlist=cmd.split(CMDSPLIT); - if (cmdlist.length>=3){ - String index=cmdlist[2]; - String phNum1=cmdlist.length==3?"":cmdlist[3]; - String phNum2=cmdlist.length>3?(cmdlist.length==4?"":cmdlist[4]):""; - String phNum3=(cmdlist.length>4)?(cmdlist.length==5? "":cmdlist[5]):""; - ICLogger.i(new StringBuffer().append("get Emegency Numbs "+phNum1+","+phNum2+","+phNum3).toString()); - connection.send(AP12(index,phNum1,phNum2,phNum3)); - - ArrayList contactArray=new ArrayList(); + String[] cmdlist = cmd.split(CMDSPLIT); + if (cmdlist.length >= 3) { + String index = cmdlist[2]; + String phNum1 = cmdlist.length == 3 ? "" : cmdlist[3]; + String phNum2 = cmdlist.length > 3 ? (cmdlist.length == 4 ? "" : cmdlist[4]) : ""; + String phNum3 = (cmdlist.length > 4) ? (cmdlist.length == 5 ? "" : cmdlist[5]) : ""; + ICLogger.i(new StringBuffer().append("get Emegency Numbs " + phNum1 + "," + phNum2 + "," + phNum3).toString()); + connection.send(AP12(index, phNum1, phNum2, phNum3)); + + ArrayList contactArray = new ArrayList(); // if(Config.custom_branch_name.equals("AK")){ // // contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos1", "07522312120")); @@ -803,22 +810,22 @@ public class protocol_ic { // if (!phNum2.isEmpty()) // contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos3", phNum2)); // }else { - if (!phNum1.isEmpty()) - contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos1", phNum1)); - if (!phNum2.isEmpty()) - contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos2", phNum2)); - if (!phNum3.isEmpty()) - contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos3", phNum3)); + if (!phNum1.isEmpty()) + contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos1", phNum1)); + if (!phNum2.isEmpty()) + contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos2", phNum2)); + if (!phNum3.isEmpty()) + contactArray.add(new Contact(Contact.CATEGORY_SOS, "sos3", phNum3)); // } - runtime.getDbHelper().saveContacts(contactArray,false,false,false,false,false,true); - }else{ + runtime.getDbHelper().saveContacts(contactArray, false, false, false, false, false, true); + } else { ICLogger.i(" BP12 format error!"); } } - public static StringMessage AP14(String index,String[] phnumbs){ - return genStringMessage("AP14",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14)) + public static StringMessage AP14(String index, String[] phnumbs) { + return genStringMessage("AP14", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP14)) .append(CMDSPLIT).append(index) .append(CMDSPLIT).append(phnumbs[0]) .append(CMDSPLIT).append(phnumbs[1]) @@ -832,8 +839,9 @@ public class protocol_ic { .append(CMDSPLIT).append(phnumbs[9]) .append(CMDEND).toString()); } + //设置通讯录,白名单(10个) - public void handleBP14(Connection connection,String cmd , Runtime runtime){ + public void handleBP14(Connection connection, String cmd, Runtime runtime) { // IWBP14,867155030001063,357444,9b44529b|13554820016,,,,,,,,, /** * IWBP14,353456789012345,080835, @@ -848,62 +856,62 @@ public class protocol_ic { * D3590D54|135xxxxxxxxxx, * D3590D54|135xxxxxxxxxx# */ - String[] cmdlist=cmd.split(CMDSPLIT); - String[] phnums=new String[]{"","","","","","","","","",""}; - StringBuffer sb=new StringBuffer().append("recv phone Numbs "); - if (cmdlist.length>=3){ - switch (cmdlist.length){ + String[] cmdlist = cmd.split(CMDSPLIT); + String[] phnums = new String[]{"", "", "", "", "", "", "", "", "", ""}; + StringBuffer sb = new StringBuffer().append("recv phone Numbs "); + if (cmdlist.length >= 3) { + switch (cmdlist.length) { case 13: - phnums[9]=cmdlist[12]; + phnums[9] = cmdlist[12]; sb.append(phnums[9]).append(","); case 12: - phnums[8]=cmdlist[11]; + phnums[8] = cmdlist[11]; sb.append(phnums[8]).append(","); case 11: - phnums[7]=cmdlist[10]; + phnums[7] = cmdlist[10]; sb.append(phnums[7]).append(","); case 10: - phnums[6]=cmdlist[9]; + phnums[6] = cmdlist[9]; sb.append(phnums[6]).append(","); case 9: - phnums[5]=cmdlist[8]; + phnums[5] = cmdlist[8]; sb.append(phnums[5]).append(","); case 8: - phnums[4]=cmdlist[7]; + phnums[4] = cmdlist[7]; sb.append(phnums[4]).append(","); case 7: - phnums[3]=cmdlist[6]; + phnums[3] = cmdlist[6]; sb.append(phnums[3]).append(","); case 6: - phnums[2]=cmdlist[5]; + phnums[2] = cmdlist[5]; sb.append(phnums[2]).append(","); case 5: - phnums[1]=cmdlist[4]; + phnums[1] = cmdlist[4]; sb.append(phnums[1]).append(","); case 4: - phnums[0]=cmdlist[3]; + phnums[0] = cmdlist[3]; sb.append(phnums[0]).append(","); } - String index=cmdlist[2]; + String index = cmdlist[2]; ICLogger.i(sb.toString()); - connection.send(AP14(index,phnums)); - ArrayList contactArray=new ArrayList(); + connection.send(AP14(index, phnums)); + ArrayList contactArray = new ArrayList(); - if(Config.custom_name.equals("YT")) { + if (Config.custom_name.equals("YT")) { ICLogger.i("=====add hotline 96885 "); contactArray.add(new Contact(Contact.CATEGORY_CALL, runtime.getContextProxy().context.getResources().getString(R.string.hotline), "96885")); } - for (int i=0; i< phnums.length;i++){ - String[] tmp= phnums[i].split("\\|"); - if (tmp.length==2){ - String name= Util.decodeUnicode2Utf8(tmp[0]); - String phonem=tmp[1]; - ICLogger.i("phnums["+i+"]="+phnums[i]+",split = "+tmp.length+" , name="+name+",-"+phonem); - contactArray.add(new Contact(Contact.CATEGORY_CALL,name,phonem)); - }else{ - ICLogger.i("phnums["+i+"]="+phnums[i]+",split = "+tmp.length); + for (int i = 0; i < phnums.length; i++) { + String[] tmp = phnums[i].split("\\|"); + if (tmp.length == 2) { + String name = Util.decodeUnicode2Utf8(tmp[0]); + String phonem = tmp[1]; + ICLogger.i("phnums[" + i + "]=" + phnums[i] + ",split = " + tmp.length + " , name=" + name + ",-" + phonem); + contactArray.add(new Contact(Contact.CATEGORY_CALL, name, phonem)); + } else { + ICLogger.i("phnums[" + i + "]=" + phnums[i] + ",split = " + tmp.length); } } @@ -912,25 +920,25 @@ public class protocol_ic { // contactArray.add(new Contact(Contact.CATEGORY_CARE,"CARE","666")); // contactArray.add(new Contact(Contact.CATEGORY_VOLTE,"VOLTE","666")); - runtime.getDbHelper().saveContacts(contactArray,false,false,true,false,false,false); + runtime.getDbHelper().saveContacts(contactArray, false, false, true, false, false, false); - }else{ + } else { ICLogger.i(" BP14 format error!"); } } - - public static StringMessage AP85(Runtime ds,String cmddata){ + public static StringMessage AP85(Runtime ds, String cmddata) { //示例数据:IWAP49,68## - return genStringMessage("AP85",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP85)) + return genStringMessage("AP85", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP85)) .append(CMDSPLIT).append(cmddata) .append(CMDEND).toString()); } + //设置闹钟 - public void handleBP85(String cmd , Connection connection,Runtime runtime){ + public void handleBP85(String cmd, Connection connection, Runtime runtime) { // IWBP85,867155030001063,155312,1,1,0235,12,1,1 // IWBP85,867155030002145,945166,1,0, // IWBP85,867155030001064,265960,1,1,1130,,1,1 @@ -946,21 +954,21 @@ public class protocol_ic { //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("@"); - ArrayList alarmlist=new ArrayList<>(); - if (datalist.length >0){ - for (int i =0 ; i< datalist.length;i++){ - String [] cmdarglist=datalist[i].split(","); - - if (i == 0){ - if (cmdarglist.length == 9){ + 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("@"); + ArrayList alarmlist = new ArrayList<>(); + if (datalist.length > 0) { + for (int i = 0; i < datalist.length; i++) { + String[] cmdarglist = datalist[i].split(","); + + if (i == 0) { + if (cmdarglist.length == 9) { try { imei = cmdarglist[1]; cmdindex = cmdarglist[2]; @@ -984,23 +992,23 @@ public class protocol_ic { .toString() ); alarmlist.add(new Alarm("ST" + alarmtime.substring(0, 2) + "." + alarmtime.substring(2), "W" + repeat, "CON", alarmswitch == 1 ? "ON" : "OFF", "闹铃")); - }catch (Exception e) { + } catch (Exception e) { ICLogger.e(e.getMessage(), e); } - }else if (cmdarglist.length == 5) { - try { - imei = cmdarglist[1]; - cmdindex = cmdarglist[2]; - all_alarmswitch = Integer.parseInt(cmdarglist[3]); - alarmcount = Integer.parseInt(cmdarglist[4]); - }catch (Exception e) { - ICLogger.e(e.getMessage(), e); - } - }else{ + } else if (cmdarglist.length == 5) { + try { + imei = cmdarglist[1]; + cmdindex = cmdarglist[2]; + all_alarmswitch = Integer.parseInt(cmdarglist[3]); + alarmcount = Integer.parseInt(cmdarglist[4]); + } catch (Exception e) { + ICLogger.e(e.getMessage(), e); + } + } else { log("data len is too small!"); } - }else{ - if (cmdarglist.length == 4){ + } else { + if (cmdarglist.length == 4) { try { alarmtime = cmdarglist[0]; repeat = cmdarglist[1]; @@ -1015,10 +1023,10 @@ public class protocol_ic { ); alarmlist.add(new Alarm("ST" + alarmtime.substring(0, 2) + "." + alarmtime.substring(2), "W" + repeat, "CON", alarmswitch == 1 ? "ON" : "OFF", "闹铃")); - }catch (Exception e){ - ICLogger.e(e.getMessage(),e); + } catch (Exception e) { + ICLogger.e(e.getMessage(), e); } - }else{ + } else { log("data len is too small!"); } @@ -1031,10 +1039,10 @@ public class protocol_ic { } //IWBP85,867155030002145,410385,1,0,# - String replacement=new StringBuilder("IWBP85,").append(imei).append(",").toString(); - String replycmd = cmd.replace(replacement,""); - ICLogger.i("gen reply "+replacement+" "+replycmd); - connection.send(AP85(runtime,replycmd)); + String replacement = new StringBuilder("IWBP85,").append(imei).append(",").toString(); + String replycmd = cmd.replace(replacement, ""); + ICLogger.i("gen reply " + replacement + " " + replycmd); + connection.send(AP85(runtime, replycmd)); } @@ -1058,9 +1066,7 @@ public class protocol_ic { // } - - - public static byte[] AP07(String packetTime,int count,int index,int datalen,byte[] amrdata){ + public static byte[] AP07(String packetTime, int count, int index, int datalen, byte[] amrdata) { //IWAP07,20140818064408,6,1,1024,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX# //说明: //IW:标识符 @@ -1076,31 +1082,31 @@ public class protocol_ic { //如果设备回复确认数据包接收失败状态,则重复发送上一个数据包 - String sb=new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP07)) + String sb = new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP07)) .append(CMDSPLIT).append(packetTime) .append(CMDSPLIT).append(count) .append(CMDSPLIT).append(index) .append(CMDSPLIT).append(datalen) .append(CMDSPLIT).toString(); - byte[] sentbuf=new byte[sb.length()+datalen+1]; - System.arraycopy(sb.getBytes(),0,sentbuf,0,sb.length()); - System.arraycopy(amrdata,0,sentbuf,sb.length(),datalen); - sentbuf[sb.length()+datalen]='#'; + byte[] sentbuf = new byte[sb.length() + datalen + 1]; + System.arraycopy(sb.getBytes(), 0, sentbuf, 0, sb.length()); + System.arraycopy(amrdata, 0, sentbuf, sb.length(), datalen); + sentbuf[sb.length() + datalen] = '#'; return sentbuf; } - public void handleBP07(String cmd , Connection connection ){ + public void handleBP07(String cmd, Connection connection) { //平台响应: IWBP07,20140818064408,6,1,1# //20140818064408:设备语音时间,yyyyMMddHHmmss 格式的年月日时分秒 //6:语音包分包总数 //1:当前设备收到的是第几个包 //1:表示服务器接受数据成功,0表示服务器接受数据失败 - String[] cmdlist=cmd.split(CMDSPLIT); - if (cmdlist.length==5){ + String[] cmdlist = cmd.split(CMDSPLIT); + if (cmdlist.length == 5) { try { String time = cmdlist[1]; int packetCount = Integer.parseInt(cmdlist[2]); @@ -1113,28 +1119,27 @@ public class protocol_ic { } //发送消息,再次检查要发送的语音包,确认其发送完毕 connection.DeliverCMDMessageToSystem("SentVoicePacket", "SentVoicePacket"); - }catch (Exception e){ - ICLogger.e(e.getMessage(),e); + } catch (Exception e) { + ICLogger.e(e.getMessage(), e); } - }else{ + } else { ICLogger.i(" BP07 Format error!"); } } - - public static StringMessage AP33(String cmdindex,int workMode){ + public static StringMessage AP33(String cmdindex, int workMode) { //IWAP33,080835,1# //080835:指令流水号 //1:设置信息,供服务器同步 - return genStringMessage("AP33",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP33)) + return genStringMessage("AP33", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP33)) .append(CMDSPLIT).append(cmdindex) .append(CMDSPLIT).append(workMode) .append(CMDEND).toString()); } //设置工作模式 - public void handleBP33(Connection connection,Runtime runtime,String cmd){ + public void handleBP33(Connection connection, Runtime runtime, String cmd) { // IWBP33,867155030001063,560555,1 // IW:标识符 @@ -1143,11 +1148,11 @@ public class protocol_ic { // 080835:指令流水号 // 1:设备工作模式,1:正常模式,2:省电模式,3:紧急模式 - String[] cmdlist=cmd.split(","); - if (cmdlist.length == 4){ + String[] cmdlist = cmd.split(","); + if (cmdlist.length == 4) { - log("work mode "+cmdlist[3]); + log("work mode " + cmdlist[3]); try { int mod = Integer.parseInt(cmdlist[3]); int Cycle = 900; @@ -1174,8 +1179,8 @@ public class protocol_ic { Config.setLocationCycle(runtime.getContextProxy().context, Cycle); runtime.getLocationInstance().setLocation_cycle(Cycle); runtime.getLocationInstance().setWorkingMod(mod); - }catch (Exception e){ - ICLogger.e(e.getMessage(),e); + } catch (Exception e) { + ICLogger.e(e.getMessage(), e); } // CoreService.getInstance().setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); //此处设置好配置后,会在LocationClient通过消息开始执行及时定位操作。 @@ -1184,18 +1189,18 @@ public class protocol_ic { } - public static StringMessage AP34(String cmdindex,int workMode){ + public static StringMessage AP34(String cmdindex, int workMode) { //IWAP34,588854,1# //080835:指令流水号 //8:模式 - return genStringMessage("AP34",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP34)) + return genStringMessage("AP34", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP34)) .append(CMDSPLIT).append(cmdindex) .append(CMDSPLIT).append(workMode) .append(CMDEND).toString()); } //设置自定义工作模式 - public void handleBP34(Connection connection,Runtime runtime,String cmd){ + public void handleBP34(Connection connection, Runtime runtime, String cmd) { // IWBP34,867155030001063,588854,8,900,1# // IW:标识符 @@ -1204,11 +1209,11 @@ public class protocol_ic { // 080835:指令流水号 // 1:设备工作模式,1:正常模式,2:省电模式,3:紧急模式 - String[] cmdlist=cmd.split(","); - if (cmdlist.length == 6){ + String[] cmdlist = cmd.split(","); + if (cmdlist.length == 6) { - log("work mode "+cmdlist[3]); + log("work mode " + cmdlist[3]); try { int mod = Integer.parseInt(cmdlist[3]); int Cycle = Integer.parseInt(cmdlist[4]); @@ -1231,13 +1236,14 @@ public class protocol_ic { runtime.getLocationInstance().setWorkingMod(mod); // CoreService.getInstance().setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); //此处设置好配置后,会在LocationClient通过消息开始执行及时定位操作。 - }catch (Exception e){ - ICLogger.e(e.getMessage(),e); + } catch (Exception e) { + ICLogger.e(e.getMessage(), e); } } } - public void handleBP40(Connection connection,Runtime runtime,String cmd){ + + public void handleBP40(Connection connection, Runtime runtime, String cmd) { // IWBP40,353456789012345,080835,XXXXXXXXXXXXXX# // IW:标识符 @@ -1247,40 +1253,41 @@ public class protocol_ic { // XXXXXXXXXXXX : 表示文字内容GB2312编码 - String[] cmdlist=cmd.split(","); - if (cmdlist.length == 4){ - String cmdindex=cmdlist[2]; - String txtmsg=cmdlist[3]; - StringBuilder sb=new StringBuilder(); - runtime.PushtxtMsg_srv_index=cmdindex;//给回复AP94用 + String[] cmdlist = cmd.split(","); + if (cmdlist.length == 4) { + String cmdindex = cmdlist[2]; + String txtmsg = cmdlist[3]; + StringBuilder sb = new StringBuilder(); + runtime.PushtxtMsg_srv_index = cmdindex;//给回复AP94用 sb.append(cmdindex).append(CMDSPLIT).append(TimeUtil.getSystemTimeyyyyMMddHHmmss()).append(CMDSPLIT).append(txtmsg); - if (Config.custom_name.equals("VitracK")){ + if (Config.custom_name.equals("VitracK")) { - }else{ + } else { // txtmsg = Util.decodeUnicode2Utf8(txtmsg); txtmsg = Util.UrlGB2312ToUTF8(txtmsg); } - StringMessage msg=AP40(cmdindex,1); + StringMessage msg = AP40(cmdindex, 1); //设定当前工作模式及循环频率 connection.send(msg); - ICLogger.i("received Txt Msg "+txtmsg); - if(!Config.noPushTxtReadReply) { + ICLogger.i("received Txt Msg " + txtmsg); + if (!Config.noPushTxtReadReply) { Config.setLastUnReadMessage(runtime.getContextProxy().context, sb.toString()); - runtime.getContextProxy().sendMsgBroadcast(txtmsg,3);//msgType 3需要回复,0不需要回复 - }else{ - runtime.getContextProxy().sendMsgBroadcast(txtmsg,0);//msgType 3需要回复,0不需要回复 + runtime.getContextProxy().sendMsgBroadcast(txtmsg, 3);//msgType 3需要回复,0不需要回复 + } else { + runtime.getContextProxy().sendMsgBroadcast(txtmsg, 0);//msgType 3需要回复,0不需要回复 } runtime.getContextProxy().saveMstToSMSDB(txtmsg); - }else{ + } else { ICLogger.i("BP40 format error!"); } } - public static StringMessage AP40(String cmdindex,int success){ + + public static StringMessage AP40(String cmdindex, int success) { // IWAP40,080835,1# // 080835:指令流水号 // 1:表示设备接受数据成功,0表示设备接受数据失败 - return genStringMessage("AP40",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP40)) + return genStringMessage("AP40", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP40)) .append(CMDSPLIT).append(cmdindex) .append(CMDSPLIT).append(success) .append(CMDEND).toString()); @@ -1289,26 +1296,26 @@ public class protocol_ic { /** * 心率上传,返回协议字串 + * * @param ds * @return */ - public static StringMessage AP49(Runtime ds){ + public static StringMessage AP49(Runtime ds) { //示例数据:IWAP49,68## - return genStringMessage(cmdMap.get(CMD_TYPE.AP49),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP49)) + return genStringMessage(cmdMap.get(CMD_TYPE.AP49), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP49)) .append(CMDSPLIT).append(ds.getHRS().getPPG()) .append(CMDEND).toString()); } - - /** * 返回上传心率血压的协议字串 + * * @param ds * @return */ - public static StringMessage APHT(Runtime ds){ + public static StringMessage APHT(Runtime ds) { //IWAPHT,60,130,85# //说明: //IW:标识符 @@ -1318,13 +1325,14 @@ public class protocol_ic { //85 : 血压低压 [舒张压] //平台响应: IWBPHT# //表示平台已接收,可不作响应 - return genStringMessage(cmdMap.get(CMD_TYPE.APHT),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT)) + return genStringMessage(cmdMap.get(CMD_TYPE.APHT), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT)) .append(CMDSPLIT).append(ds.getHRS().getPPG()) .append(CMDSPLIT).append(ds.getHRS().getBPH()) .append(CMDSPLIT).append(ds.getHRS().getBPL()) .append(CMDEND).toString()); } - public static StringMessage APHT(int ppg,int bph,int bpl){ + + public static StringMessage APHT(int ppg, int bph, int bpl) { //IWAPHT,60,130,85# //说明: //IW:标识符 @@ -1334,7 +1342,7 @@ public class protocol_ic { //85 : 血压低压 [舒张压] //平台响应: IWBPHT# //表示平台已接收,可不作响应 - return genStringMessage(cmdMap.get(CMD_TYPE.APHT),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT)) + return genStringMessage(cmdMap.get(CMD_TYPE.APHT), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT)) .append(CMDSPLIT).append(ppg) .append(CMDSPLIT).append(bph) .append(CMDSPLIT).append(bpl) @@ -1343,15 +1351,16 @@ public class protocol_ic { //立即定位反馈 - public static StringMessage AP16(String cmdindex){ + public static StringMessage AP16(String cmdindex) { //IWAP16,080835# //080835:指令流水号 - return genStringMessage(cmdMap.get(CMD_TYPE.AP16),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP16)) + return genStringMessage(cmdMap.get(CMD_TYPE.AP16), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP16)) .append(CMDSPLIT).append(cmdindex) .append(CMDEND).toString()); } + // 立即定位指令(长链接有效) - public void handleBP16(Connection connection,Runtime runtime,String cmd){ + public void handleBP16(Connection connection, Runtime runtime, String cmd) { //示例数据:IWBP16,867155030001063,335386 // IWBP16,353456789012345,080835# // 说明: @@ -1360,18 +1369,18 @@ public class protocol_ic { // 353456789012345:IMEI号,设备唯一ID // 080835 :指令流水号 String[] cmdlist = cmd.split(","); - if(cmdlist.length==3){ - log("imei "+cmdlist[1]+", cmdindex "+cmdlist[2]); + if (cmdlist.length == 3) { + log("imei " + cmdlist[1] + ", cmdindex " + cmdlist[2]); connection.send(AP16(cmdlist[2])); - }else{ + } else { log("error BP16 format"); } } /*通过基站获取时间和坐标*/ - public static StringMessage APTM(Runtime ds){ + public static StringMessage APTM(Runtime ds) { //示例数据:IWAPTM,460,0,9750,3613# //说明: //IW:标识符 @@ -1381,7 +1390,7 @@ public class protocol_ic { //9750: LAC //3613: CID - return genStringMessage(cmdMap.get(CMD_TYPE.APTM),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTM)) + return genStringMessage(cmdMap.get(CMD_TYPE.APTM), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTM)) .append(CMDSPLIT).append(ds.getLocationInstance().getMCC()) .append(CMDSPLIT).append(ds.getLocationInstance().getMNC()) .append(CMDSPLIT).append(ds.getLocationInstance().getLAC()) @@ -1390,73 +1399,69 @@ public class protocol_ic { } - public void handleBPTM(String cmd){ + public void handleBPTM(String cmd) { //平台响应: IWBPTM,20160225090909,22.123456,113.654321# //返回时间,格式为:yyyyMMddHHmmss ,为UTC0 时间 //经纬度保留六位小数,若没取到则返回 0 - String[] list=cmd.split(CMDSPLIT); + String[] list = cmd.split(CMDSPLIT); - if(list.length==4){ + if (list.length == 4) { - String time=list[1]; - String lat=list[2]; - String lon=list[3]; - ICLogger.i("BPTM , time="+time+", lat="+lat+", lon="+lon); - }else{ + String time = list[1]; + String lat = list[2]; + String lon = list[3]; + ICLogger.i("BPTM , time=" + time + ", lat=" + lat + ", lon=" + lon); + } else { ICLogger.i("BPTM format error"); } } - public static StringMessage AP15(String index){ + public static StringMessage AP15(String index) { //IWAP15, 080835# //080835:指令流水号 - return genStringMessage("AP15",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP15)) + return genStringMessage("AP15", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP15)) .append(CMDSPLIT).append(index) .append(CMDEND).toString()); } //设置定位周期 - public void handleBP15(String cmd ,Connection connection,Runtime runtime){ + public void handleBP15(String cmd, Connection connection, Runtime runtime) { // IWBP15, 353456789012345, 080835, 30# // 353456789012345:IMEI号,设备唯一ID // 080835 :指令流水号 // 30: 表示频率为30分钟 - String[] list=cmd.split(CMDSPLIT); + String[] list = cmd.split(CMDSPLIT); - if(list.length==4){ - String index=list[2]; - String time=list[3]; + if (list.length == 4) { + String index = list[2]; + String time = list[3]; connection.send(AP15(index)); - ICLogger.i("BP15 , 定位周期="+time+"秒"); + ICLogger.i("BP15 , 定位周期=" + time + "秒"); try { Config.setLocationMode(runtime.getContextProxy().context, ICLocation.CUSTOM_MOD8_GPS); - Config.setLocationCycle(runtime.getContextProxy().context, Integer.parseInt(time) ); + Config.setLocationCycle(runtime.getContextProxy().context, Integer.parseInt(time)); runtime.getLocationInstance().setWorkingMod(Config.getLocationMode(runtime.getContextProxy().context)); runtime.getLocationInstance().setLocation_cycle(Config.getLocationCycle(runtime.getContextProxy().context)); //set AlarmCycle and trigger Location CoreService.getInstance().setLocationAlarm(runtime.getLocationInstance().getWorkingMod()); - }catch (Exception e){ - ICLogger.e(e.getMessage(),e); + } catch (Exception e) { + ICLogger.e(e.getMessage(), e); } - }else{ + } else { ICLogger.i("BP15 format error"); } } - - - - /*语音下行反馈*/ public static StringMessage AP28(String name, String msg, int packagecount, int currentpackageindex, int received_success) { //示例数据:IWAP28,D3590D54,xxxx,6,1,1# - return genStringMessage("AP28",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP28)) + return genStringMessage("AP28", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP28)) .append(CMDSPLIT).append(name) .append(CMDSPLIT).append(msg) .append(CMDSPLIT).append(packagecount) @@ -1466,7 +1471,7 @@ public class protocol_ic { } //处理 BP28 语音消息 - public void handleBP28(Connection connection,String cmd,Runtime runtime,byte[] bytes) { + public void handleBP28(Connection connection, String cmd, Runtime runtime, byte[] bytes) { //log("handleBP28 msg"+cmd); /** * IWBP28, D3590D54,XXXX,6,1,1024,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX# @@ -1497,8 +1502,8 @@ public class protocol_ic { int packetLen; byte[] packetData; - String[] msg= cmd.split(CMDSPLIT); - if (msg.length>=6){ + String[] msg = cmd.split(CMDSPLIT); + if (msg.length >= 6) { try { Name = msg[1]; @@ -1541,12 +1546,12 @@ public class protocol_ic { connection.DeliverCMDMessageToSystem("NewVoice", amrFilepath);//通知下面线程状态变化 } - }catch (Exception e){ - ICLogger.e(e.getMessage(),e); + } catch (Exception e) { + ICLogger.e(e.getMessage(), e); } - }else{ - log("handleBP28","format Error"); + } else { + log("handleBP28", "format Error"); // connection.send(genStringMessage("AP28",AP28(Name,appendIndex,packetCount,currentId,0))); } @@ -1565,18 +1570,18 @@ public class protocol_ic { } //白名单开关(下行协议号:BP84,响应:AP84) - public static StringMessage AP84(String index,int success){ + public static StringMessage AP84(String index, int success) { //设备响应: IWAP80,080835,1# //080835:指令流水号 //1:表示设备执行成功,0 表示设备执行失败 - return genStringMessage("AP84",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP84)) + return genStringMessage("AP84", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP84)) .append(CMDSPLIT).append(index) .append(CMDSPLIT).append(success) .append(CMDEND).toString()); } - public void handleBP84(String cmd,Connection connection){ + public void handleBP84(String cmd, Connection connection) { //示例: //IWBP84,353456789012345,080835,1# //说明: @@ -1585,21 +1590,21 @@ public class protocol_ic { //353456789012345:IMEI号,设备唯一ID //080835 :指令流水号 //1: 表示白名单开,0 表示白名单关 - String[] list=cmd.split(CMDSPLIT); + String[] list = cmd.split(CMDSPLIT); - if (list.length==4){ - String index=list[2]; - String whitelist_switch=list[3]; - connection.send(AP84(index,1)); + if (list.length == 4) { + String index = list[2]; + String whitelist_switch = list[3]; + connection.send(AP84(index, 1)); - if (whitelist_switch.equals("1")){ - Util.setSystemProperties("persist.sys.whitelist.enable","true"); - }else{ - Util.setSystemProperties("persist.sys.whitelist.enable","false"); + if (whitelist_switch.equals("1")) { + Util.setSystemProperties("persist.sys.whitelist.enable", "true"); + } else { + Util.setSystemProperties("persist.sys.whitelist.enable", "false"); } - ICLogger.i("收到服务器指令:白名单"+(whitelist_switch.equals("1")?"开":"关")); + ICLogger.i("收到服务器指令:白名单" + (whitelist_switch.equals("1") ? "开" : "关")); - }else{ + } else { ICLogger.i("BP84 format error!"); } @@ -1607,17 +1612,17 @@ public class protocol_ic { } //17.绑定解绑(下行协议号:BP68,响应:AP68) - public static StringMessage AP68(String index,String cmd){ + public static StringMessage AP68(String index, String cmd) { //设备响应: IWAP86, 080835,1# //080835:指令流水号 - return genStringMessage("AP86",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP68)) + return genStringMessage("AP86", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP68)) .append(CMDSPLIT).append(index) .append(CMDSPLIT).append(cmd) .append(CMDEND).toString()); } - public void handleBP68(String cmd,Connection connection,Runtime runtime){ + public void handleBP68(String cmd, Connection connection, Runtime runtime) { //示例: //IWBP68,353456789012345,080835,1# @@ -1628,27 +1633,27 @@ public class protocol_ic { //080835 :指令流水号 //1 : 表示设备为激活状态(绑定成功) 0:表示设备为未激活状态(解绑成功) - String[] list=cmd.split(CMDSPLIT); + String[] list = cmd.split(CMDSPLIT); - if (list.length==4){ - String index=list[2]; - String type=list[3]; - connection.send(AP68(index,type)); - ICLogger.i("收到服务器消息:"+(type.equals("1")?"绑定成功 ":"未激活或者解绑")); - if (Config.custom_name.equals("YQ")||Config.custom_name.equals("YQ_EN")) {//AK-YQ + if (list.length == 4) { + String index = list[2]; + String type = list[3]; + connection.send(AP68(index, type)); + ICLogger.i("收到服务器消息:" + (type.equals("1") ? "绑定成功 " : "未激活或者解绑")); + if (Config.custom_name.equals("YQ") || Config.custom_name.equals("YQ_EN")) {//AK-YQ if (type.equals("1")) { WakeLockUtil.ScreenOnWakeLockTemperary(runtime.getContextProxy().context); // runtime.getContextProxy().sendMsgBroadcast(runtime.getContextProxy().context.getResources().getString(R.string.alarm_lock_success), 2); - Util.ShowToast(runtime,runtime.getContextProxy().context.getResources().getString(R.string.alarm_lock_success)); - Config.setNeedAntiOff(runtime.getContextProxy().context,true); - Config.setNeedCutOff(runtime.getContextProxy().context,true); + Util.ShowToast(runtime, runtime.getContextProxy().context.getResources().getString(R.string.alarm_lock_success)); + Config.setNeedAntiOff(runtime.getContextProxy().context, true); + Config.setNeedCutOff(runtime.getContextProxy().context, true); runtime.setNeedAntioff(true); runtime.setNeddReportCutoff(true); } else { WakeLockUtil.ScreenOnWakeLockTemperary(runtime.getContextProxy().context); runtime.getContextProxy().sendMsgBroadcast(runtime.getContextProxy().context.getResources().getString(R.string.alarm_unbind_success), 2); - Config.setNeedAntiOff(runtime.getContextProxy().context,false); - Config.setNeedCutOff(runtime.getContextProxy().context,false); + Config.setNeedAntiOff(runtime.getContextProxy().context, false); + Config.setNeedCutOff(runtime.getContextProxy().context, false); runtime.setNeedAntioff(false); runtime.setNeddReportCutoff(false); //1 分钟后重置 @@ -1657,29 +1662,28 @@ public class protocol_ic { public void run() { Util.doMasterClear(runtime.getContextProxy().context); } - },5000); + }, 5000); } } - }else{ + } else { ICLogger.i("BP86 format error!"); } } - //17.设置心率/血压测量周期(下行协议号:BP86,响应:AP86) - public static StringMessage AP86(String index){ + public static StringMessage AP86(String index) { //设备响应: IWAP86, 080835# //080835:指令流水号 - return genStringMessage("AP86",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP86)) + return genStringMessage("AP86", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP86)) .append(CMDSPLIT).append(index) .append(CMDEND).toString()); } - public void handleBP86(String cmd,Connection connection,Runtime runtime){ + public void handleBP86(String cmd, Connection connection, Runtime runtime) { //示例: //IWBP86, 353456789012345, 080835,1,720# @@ -1691,14 +1695,14 @@ public class protocol_ic { //1: 表示心率周期;2 :表示血压周期 //720: 表示720分钟 - String[] list=cmd.split(CMDSPLIT); + String[] list = cmd.split(CMDSPLIT); - if (list.length==5){ - String index=list[2]; - String type=list[3]; - String cycle=list[4]; + if (list.length == 5) { + String index = list[2]; + String type = list[3]; + String cycle = list[4]; connection.send(AP86(index)); - ICLogger.i("收到服务器指令:设置"+(type.equals("1")?"心率周期 ":"血压周期 ")+cycle+"分钟"); + ICLogger.i("收到服务器指令:设置" + (type.equals("1") ? "心率周期 " : "血压周期 ") + cycle + "分钟"); try { //发送重置PPGCycle的广播,会在CoreServer里面执行 @@ -1707,81 +1711,82 @@ public class protocol_ic { intent.setFlags(FLAG_INCLUDE_STOPPED_PACKAGES); intent.setFlags(FLAG_ACTIVITY_NEW_TASK); runtime.getContextProxy().sendBrodcast(ACTION_HEATR_RATE_START, intent); - }catch (Exception e){ - ICLogger.e(e.getMessage(),e); + } catch (Exception e) { + ICLogger.e(e.getMessage(), e); } - }else{ + } else { ICLogger.i("BP86 format error!"); } } //IWBP87,http://cn.map20000.com/physicalReport.html?lang=zh-CN&imeis=866671044898063# - public static StringMessage AP87(){ + public static StringMessage AP87() { //设备响应: IWAP86, 080835# //080835:指令流水号 - return genStringMessage("AP87",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP87)) + return genStringMessage("AP87", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP87)) .append(CMDEND).toString()); } - public void handleBP87(String cmd,Connection connection,Runtime runtime){ + public void handleBP87(String cmd, Connection connection, Runtime runtime) { //IWBP87,http://cn.map20000.com/physicalReport.html?lang=zh-CN&imeis=866671044898063# - String[] list=cmd.split(CMDSPLIT); + String[] list = cmd.split(CMDSPLIT); - if (list.length==2){ - String furl=list[1];//.replace("#",""); - ICLogger.i("收到服务器指令 BP87:Qrcode url "+furl); + if (list.length == 2) { + String furl = list[1];//.replace("#",""); + ICLogger.i("收到服务器指令 BP87:Qrcode url " + furl); // connection.send(AP87()); try { - String qrfilepath=Util.getLogfilePath(runtime,TimeUtil.getSystemDateYYMMDD()); - Util.setSystemProperties(Config.KeyQRURIFILE,qrfilepath); - FileOutputStream fos=new FileOutputStream(new File(qrfilepath)); + String qrfilepath = Util.getLogfilePath(runtime, TimeUtil.getSystemDateYYMMDD()); + Util.setSystemProperties(Config.KeyQRURIFILE, qrfilepath); + FileOutputStream fos = new FileOutputStream(new File(qrfilepath)); fos.write(furl.getBytes()); fos.close(); - }catch (Exception e){ - ICLogger.e(e.getMessage(),e); + } catch (Exception e) { + ICLogger.e(e.getMessage(), e); } - }else{ + } else { ICLogger.i("BP87 format error!"); } } - public static StringMessage AP88(String index){ + + public static StringMessage AP88(String index) { //设备响应: IWAP88, 080835# //080835:指令流水号 - return genStringMessage("AP88",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP88)) + return genStringMessage("AP88", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP88)) .append(CMDSPLIT).append(index) .append(CMDEND).toString()); } - public static void handleBP88(String cmd,Connection connection){ + public static void handleBP88(String cmd, Connection connection) { // IWBP88,080835# - String[] list=cmd.split(CMDSPLIT); + String[] list = cmd.split(CMDSPLIT); - if (list.length==2){ - String index=list[1]; + if (list.length == 2) { + String index = list[1]; connection.send(AP88(index)); ICLogger.i("收到服务器消息:查询设备"); - }else{ + } else { ICLogger.i("BP88 format error!"); } } //18.18.设置心率/血压阀值(下行协议号:BP89,响应:AP89) - public static StringMessage AP89(String index){ + public static StringMessage AP89(String index) { //设备响应: IWAP89, 080835# //080835:指令流水号 - return genStringMessage("AP89",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP89)) + return genStringMessage("AP89", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP89)) .append(CMDSPLIT).append(index) .append(CMDEND).toString()); } - public void handleBP89(String cmd,Connection connection){ + public void handleBP89(String cmd, Connection connection) { //示例: //IWBP89, 353456789012345, 080835,50,90,80,90,110,140# @@ -1796,39 +1801,38 @@ public class protocol_ic { //90: 低压阀值,低压高于该阀值上传血压,如果未设置,则留空 //110: 高压阀值,高压低于该阀值上传血压,如果未设置,则留空 //140: 高压阀值,高压高于该阀值上传血压,如果未设置,则留空 - String[] list=cmd.split(CMDSPLIT); - if (list.length==9){ - String index=list[2]; - String PPGH=list[3]; - String PPGL=list[4]; - String BPH_H=list[5]; - String BPH_L=list[6]; - String BPL_H=list[7]; - String BPL_L=list[8]; + String[] list = cmd.split(CMDSPLIT); + if (list.length == 9) { + String index = list[2]; + String PPGH = list[3]; + String PPGL = list[4]; + String BPH_H = list[5]; + String BPH_L = list[6]; + String BPL_H = list[7]; + String BPL_L = list[8]; connection.send(AP89(index)); - - ICLogger.i("收到服务器指令:心率/血压阀值 "+PPGH+","+PPGL+","+BPH_H+","+BPH_L+","+BPL_H+","+BPL_L); - }else{ + ICLogger.i("收到服务器指令:心率/血压阀值 " + PPGH + "," + PPGL + "," + BPH_H + "," + BPH_L + "," + BPL_H + "," + BPL_L); + } else { ICLogger.i("BP89 format error!"); } } //体温间隔测量 (后台测试体温)(下行协议号:BPTE,响应:APTE) - public static StringMessage APTE(String index,int freq){ + public static StringMessage APTE(String index, int freq) { //设备响应: IWAPTE,080835,60# //080835:指令流水号 //1:表示设备接受数据成功,0表示设备接受数据失败 - return genStringMessage("APTE",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTE)) + return genStringMessage("APTE", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTE)) .append(CMDSPLIT).append(index) .append(CMDSPLIT).append(freq) .append(CMDEND).toString()); } - public void handleBPTE(String cmd,Connection connection,Runtime runtime){ + public void handleBPTE(String cmd, Connection connection, Runtime runtime) { //示例: //IWBPTE,353456789012345,080835,60# @@ -1838,8 +1842,8 @@ public class protocol_ic { //353456789012345:IMEI号,设备唯一ID //080835 :指令流水号 //60 : 上传间隔,单位分钟(60分钟上传一次体温,终端收到后立即开始测量一次并重置定时器) - String[] list=cmd.split(CMDSPLIT); - if (list.length==4){ + String[] list = cmd.split(CMDSPLIT); + if (list.length == 4) { try { String index = list[2]; String freqstr = list[3]; @@ -1850,53 +1854,52 @@ public class protocol_ic { CoreService.getInstance().setTempAlarm(); - if(runtime.check_stat_do_temp_test()) TemperatureUtil.doTempTestInThread(); - }catch (Exception e){ - ICLogger.e(e.getMessage(),e); + if (runtime.check_stat_do_temp_test()) TemperatureUtil.doTempTestInThread(); + } catch (Exception e) { + ICLogger.e(e.getMessage(), e); } - }else{ + } else { ICLogger.i("BPTE format error!"); } } //体温上行(上行协议号:APTP,响应:BPTP) - public static StringMessage APTP(double wrist_temp,double body_temp,double tempout){ + public static StringMessage APTP(double wrist_temp, double body_temp, double tempout) { //设备: IWAPTP,36.3,33,132# //IW:标识符 //APTP : 命令字符 //35.3:测量体温 (摄氏度) //33,132:温补用的参数,此处不用,可以用0 来代替。 目前是代表的腕温,室外温度 - return genStringMessage(cmdMap.get(CMD_TYPE.APTP),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTP)) - .append(CMDSPLIT).append(String.format("%1$.1f",body_temp)) - .append(CMDSPLIT).append(String.format("%1$.1f",wrist_temp)) - .append(CMDSPLIT).append(String.format("%1$.1f",tempout)) + return genStringMessage(cmdMap.get(CMD_TYPE.APTP), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTP)) + .append(CMDSPLIT).append(String.format("%1$.1f", body_temp)) + .append(CMDSPLIT).append(String.format("%1$.1f", wrist_temp)) + .append(CMDSPLIT).append(String.format("%1$.1f", tempout)) .append(CMDEND).toString()); } - public void handleBPTP(){ + public void handleBPTP() { ICLogger.d("BPTP 服务器收到体温数据!"); } - public static StringMessage APX1(String id){ + public static StringMessage APX1(String id) { //设备响应: IWAPX1, 080835# //080835:指令流水号 - return genStringMessage("APX1",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APX1)) + return genStringMessage("APX1", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APX1)) .append(CMDSPLIT).append(id) .append(CMDEND).toString()); } /** - * * @param cmd * @param connection * @param runtime */ - public void handleBPX1(String cmd,Connection connection,Runtime runtime){ + public void handleBPX1(String cmd, Connection connection, Runtime runtime) { //IWBPX1,353456789012345,080835,2,1,-3,0# //说明: // IW:标识符 @@ -1907,14 +1910,14 @@ public class protocol_ic { // 1:高压修正值 // -3:低压修正值 // 0:血氧修正值 - String[] list=cmd.split(CMDSPLIT); - if (list.length==7){ - String index=list[2]; - String imei=list[1]; - String strXL=list[3]; - String strBPH=list[4]; - String strBPL=list[5]; - String strSpO2=list[6]; + String[] list = cmd.split(CMDSPLIT); + if (list.length == 7) { + String index = list[2]; + String imei = list[1]; + String strXL = list[3]; + String strBPH = list[4]; + String strBPL = list[5]; + String strSpO2 = list[6]; connection.send(APX1(index)); @@ -1936,31 +1939,31 @@ public class protocol_ic { .append(spo2_adjust).append(CMDSPLIT).toString(); Config.setPPG_ECG_adjustValue(ShareAdjValue); ICLogger.i("Handle BPX1 IMEI " + imei + ",index " + index + ", BPH " + strBPH + ", BPL " + strBPL + ", PPG " + strXL + ", Sp02 " + strSpO2 + " , Shared Adjust Value " + ShareAdjValue); - }catch (Exception e){ - ICLogger.e(e.getMessage(),e); + } catch (Exception e) { + ICLogger.e(e.getMessage(), e); } - }else{ + } else { ICLogger.i("BPX1 format error!"); } } - - public static StringMessage APS4(String id){ + public static StringMessage APS4(String id) { //设备响应: IWAPS4,080835# //080835:指令流水号 - return genStringMessage("APS4",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APS4)) + return genStringMessage("APS4", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APS4)) .append(CMDSPLIT).append(id) .append(CMDEND).toString()); } /** * 主要为久坐设置提醒时长。 + * * @param cmd * @param connection * @param runtime */ - public void handleBPS4(String cmd,Connection connection,Runtime runtime){ + public void handleBPS4(String cmd, Connection connection, Runtime runtime) { //IWBPS4,353456789012345,080835,1|1234567|0900|1100|180, 2|1234567|0900|1100|180, 1|1234567|0900|1100|180# //说明: // IW:标识符 @@ -1970,46 +1973,46 @@ public class protocol_ic { // 1|1234567|0900|1100|180:类型(1久坐,2喝水)|重复周期|开始时间|结束时间|时间间隔(单位秒) // 重复周期、开始结束时间格式 参考BP85闹钟设置, //#:结尾标识符 - String[] list=cmd.split(CMDSPLIT); - if (list.length>=4){ + String[] list = cmd.split(CMDSPLIT); + if (list.length >= 4) { - String index=list[2]; - String imei=list[1]; + String index = list[2]; + String imei = list[1]; connection.send(APS4(index)); String setting1; - switch(list.length){ + switch (list.length) { case 10: - setting1=list[9]; - ICLogger.i("set 7th alarm "+setting1); + setting1 = list[9]; + ICLogger.i("set 7th alarm " + setting1); case 9: - setting1=list[8]; - ICLogger.i("set 6th alarm "+setting1); + setting1 = list[8]; + ICLogger.i("set 6th alarm " + setting1); case 8: - setting1=list[7]; - ICLogger.i("set 5th alarm "+setting1); + setting1 = list[7]; + ICLogger.i("set 5th alarm " + setting1); case 7: - setting1=list[6]; - ICLogger.i("set 4th alarm "+setting1); + setting1 = list[6]; + ICLogger.i("set 4th alarm " + setting1); case 6: - setting1=list[5]; - ICLogger.i("set 3rd alarm "+setting1); + setting1 = list[5]; + ICLogger.i("set 3rd alarm " + setting1); case 5: - setting1=list[4]; - ICLogger.i("set 2nt alarm "+setting1); + setting1 = list[4]; + ICLogger.i("set 2nt alarm " + setting1); case 4: - setting1=list[3]; - ICLogger.i("set 1st alarm "+setting1); + setting1 = list[3]; + ICLogger.i("set 1st alarm " + setting1); break; } - ICLogger.i("Handle BPX1 IMEI "+imei+",index "+index+", get "+(list.length-3) +" settings"); - }else{ + ICLogger.i("Handle BPX1 IMEI " + imei + ",index " + index + ", get " + (list.length - 3) + " settings"); + } else { ICLogger.i("BPX1 format error!"); } } - public static StringMessage APHP(Runtime ds){ + public static StringMessage APHP(Runtime ds) { //IWAPHP,60,130,85,95,90, , , , , , , , # //IW:标识符 //APHT : 命令字符 @@ -2019,7 +2022,7 @@ public class protocol_ic { //95:血氧 //90:血糖 // 本消息适用所有终端,其中需要每项指标不一定全部有值,如果无值,则留空 - return genStringMessage(cmdMap.get(CMD_TYPE.APHP),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHP)) + return genStringMessage(cmdMap.get(CMD_TYPE.APHP), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHP)) .append(CMDSPLIT).append(ds.getHRS().getPPG()) .append(CMDSPLIT).append(ds.getHRS().getBPH()) .append(CMDSPLIT).append(ds.getHRS().getBPL()) @@ -2035,7 +2038,8 @@ public class protocol_ic { .append(CMDSPLIT) .append(CMDEND).toString()); } - public static StringMessage APHP(int ppg,int bph, int bpl, int spo2){ + + public static StringMessage APHP(int ppg, int bph, int bpl, int spo2) { //IWAPHP,60,130,85,95,90, , , , , , , , # //IW:标识符 //APHT : 命令字符 @@ -2045,7 +2049,7 @@ public class protocol_ic { //95:血氧 //90:血糖 // 本消息适用所有终端,其中需要每项指标不一定全部有值,如果无值,则留空 - return genStringMessage(cmdMap.get(CMD_TYPE.APHP),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHP)) + return genStringMessage(cmdMap.get(CMD_TYPE.APHP), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHP)) .append(CMDSPLIT).append(ppg) .append(CMDSPLIT).append(bph) .append(CMDSPLIT).append(bpl) @@ -2063,25 +2067,25 @@ public class protocol_ic { } - public void handleBPHP(){ + public void handleBPHP() { ICLogger.i("服务器收到APHP 心率血压血氧 !"); } - public static StringMessage APDE(String id){ + public static StringMessage APDE(String id) { /*** * 示例: - * 设备响应: IWAPDE,080835# + * 设备响应: IWAPDE,080835# * 080835:指令流水号 * 说明: 本消息适用所有终端 */ - return genStringMessage("APDE",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APDE)) + return genStringMessage("APDE", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APDE)) .append(CMDSPLIT).append(id) .append(CMDEND).toString()); } - public void handleBPDE(Connection connection,String cmd,Runtime runtime){ + public void handleBPDE(Connection connection, String cmd, Runtime runtime) { /*** * 示例: * IWBPDE,867400020316612,853676,0 @@ -2096,11 +2100,11 @@ public class protocol_ic { * 080835:指令流水号 * 说明: 本消息适用所有终端 */ - String[] list=cmd.split(CMDSPLIT); - if (list.length==4){ + String[] list = cmd.split(CMDSPLIT); + if (list.length == 4) { - String index=list[2]; - String msg=list[3]; + String index = list[2]; + String msg = list[3]; connection.send(APDE(index)); try { if (Integer.parseInt(msg) == 0) { @@ -2114,22 +2118,23 @@ public class protocol_ic { // Util.ShowToast(runtime,""); runtime.getContextProxy().sendMsgBroadcast(runtime.getContextProxy().context.getResources().getString(R.string.alarm_cross_boundary), 0); } - }catch (Exception e){ - ICLogger.e(e.getMessage(),e); + } catch (Exception e) { + ICLogger.e(e.getMessage(), e); } - }else{ + } else { ICLogger.i("BPDE format error!"); } } - public static StringMessage APDG(String id){ - return genStringMessage("APDG",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APDG)) + + public static StringMessage APDG(String id) { + return genStringMessage("APDG", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APDG)) .append(CMDSPLIT).append(id) .append(CMDEND).toString()); } - public void handleBPDG(Connection connection,String cmd,Runtime runtime){ + public void handleBPDG(Connection connection, String cmd, Runtime runtime) { /** * 示例: * IWBPDG,353456789012345,1,30.0,37.3 # @@ -2143,8 +2148,8 @@ public class protocol_ic { * 37.3: 高温阀值 * #:结尾标识符 * */ - String[] list=cmd.split(CMDSPLIT); - if (list.length==6){ + String[] list = cmd.split(CMDSPLIT); + if (list.length == 6) { try { String index = list[2]; @@ -2160,11 +2165,11 @@ public class protocol_ic { ICLogger.i("Handle BPDG index " + index + ", 体温报警阈值关 "); Config.needTemperature_abnormal_alarm = false; } - }catch (Exception e){ - ICLogger.e(e.getMessage(),e); + } catch (Exception e) { + ICLogger.e(e.getMessage(), e); } - }else{ + } else { ICLogger.i("BPDG format error!"); } } @@ -2180,7 +2185,7 @@ public class protocol_ic { * @param amrdata 文件分包内容数据 * @return */ - public static byte[] APTU(String packetTime,int filetype, int datatype ,int count,int index,int datalen,byte[] amrdata){ + public static byte[] APTU(String packetTime, int filetype, int datatype, int count, int index, int datalen, byte[] amrdata) { /** * 10.设备录音图片(设备上行)(上行协议:APTU,响应:BPTU) * 示例: @@ -2204,26 +2209,26 @@ public class protocol_ic { * 收到设备回复确认数据包接收成功状态后,继续开始依次上传下一个数据包。。。。。。 * 如果设备回复确认数据包接收失败状态,则重复发送上一个数据包 */ - String sb=new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTU)) + String sb = new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTU)) .append(CMDSPLIT) .append(CMDSPLIT).append(packetTime) .append(CMDSPLIT).append(filetype) .append(CMDSPLIT).append(datatype) .append(CMDSPLIT).append(count) .append(CMDSPLIT).append(index) - .append(CMDSPLIT).append(datalen*2) + .append(CMDSPLIT).append(datalen * 2) .append(CMDSPLIT).toString(); - byte[] sentbuf=new byte[sb.length()+datalen*2+1]; - byte[] amrdata2=Util.bytesToHexString(amrdata).getBytes(); - System.arraycopy(sb.getBytes(),0,sentbuf,0,sb.length()); - System.arraycopy(amrdata2,0,sentbuf,sb.length(),datalen*2); - sentbuf[sb.length()+datalen*2]='#'; + byte[] sentbuf = new byte[sb.length() + datalen * 2 + 1]; + byte[] amrdata2 = Util.bytesToHexString(amrdata).getBytes(); + System.arraycopy(sb.getBytes(), 0, sentbuf, 0, sb.length()); + System.arraycopy(amrdata2, 0, sentbuf, sb.length(), datalen * 2); + sentbuf[sb.length() + datalen * 2] = '#'; return sentbuf; } - public void handleBPTU(String cmd , Connection connection ){ + public void handleBPTU(String cmd, Connection connection) { /*** * 平台响应 * IWBPTU,6654111,080835,1,1,6,1,1# @@ -2237,8 +2242,8 @@ public class protocol_ic { * 1:当前包序号 * 1:成功 (0:失败) */ - String[] cmdlist=cmd.split(CMDSPLIT); - if (cmdlist.length==8){ + String[] cmdlist = cmd.split(CMDSPLIT); + if (cmdlist.length == 8) { try { String time = cmdlist[2]; String filetype = cmdlist[3]; @@ -2259,15 +2264,15 @@ public class protocol_ic { } //发送消息,再次检查要发送的语音包,确认其发送完毕 connection.DeliverCMDMessageToSystem("SentVoicePacket", "SentBPFilePacket"); - }catch (Exception e){ - ICLogger.e(e.getMessage(),e); + } catch (Exception e) { + ICLogger.e(e.getMessage(), e); } - }else{ + } else { ICLogger.i(" BPTU Format error!"); } } - public static StringMessage APSL(String date,int deepsleep,int lightsleep,int score){ + public static StringMessage APSL(String date, int deepsleep, int lightsleep, int score) { /*** * 示例: * IWAPSL,20200803,240,120,90# @@ -2286,24 +2291,23 @@ public class protocol_ic { * 换算分数后发送到服务器 * #:结束符 */ - String sb=new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APSL)) + String sb = new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APSL)) .append(CMDSPLIT).append(date) .append(CMDSPLIT).append(deepsleep) .append(CMDSPLIT).append(lightsleep) .append(CMDSPLIT).append(score) .append(CMDEND).toString(); - return genStringMessage(cmdMap.get(CMD_TYPE.APSL),sb); + return genStringMessage(cmdMap.get(CMD_TYPE.APSL), sb); } - public static StringMessage AP46(String id,String cmd) - { - return genStringMessage(cmdMap.get(CMD_TYPE.AP46),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP46)) + public static StringMessage AP46(String id, String cmd) { + return genStringMessage(cmdMap.get(CMD_TYPE.AP46), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP46)) .append(CMDSPLIT).append(id) .append(CMDSPLIT).append(cmd) .append(CMDEND).toString()); } - public void handleBP46(String cmd , Connection connection,Runtime runtime) { + public void handleBP46(String cmd, Connection connection, Runtime runtime) { /*** * IWBP46,353456789012345,080835,1,[参数]# * 说明: @@ -2319,16 +2323,16 @@ public class protocol_ic { * 1 成功 0失败 * # 结尾标识符 */ - String[] cmdlist=cmd.split(CMDSPLIT); + String[] cmdlist = cmd.split(CMDSPLIT); - if (cmdlist.length>=4 ){ - String imei=cmdlist[1]; - String id=cmdlist[2]; - String cdd=cmdlist[3]; - if (cmdlist.length==5) { + if (cmdlist.length >= 4) { + String imei = cmdlist[1]; + String id = cmdlist[2]; + String cdd = cmdlist[3]; + if (cmdlist.length == 5) { String tmp = cmdlist[4]; } - connection.send(AP46(id,cdd)); + connection.send(AP46(id, cdd)); Context context = mRuntime.getContextProxy().context.getApplicationContext(); if (cdd.equals("1")) { //delay 启动 @@ -2345,29 +2349,28 @@ public class protocol_ic { } }); - }else if(cdd.equals("2")){ + } else if (cdd.equals("2")) { Intent intent = new Intent(); intent.setAction(DIALOG_ACTION); intent.putExtra("takephoto", "Take Photo !"); context.sendBroadcast(intent); } - }else{ + } else { ICLogger.i(" BP46 Format error!"); } } - public static StringMessage APDH(String id,String cmd) - { - return genStringMessage("APDH",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APDH)) + public static StringMessage APDH(String id, String cmd) { + return genStringMessage("APDH", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APDH)) .append(CMDSPLIT).append(id) .append(CMDSPLIT).append(cmd) .append(CMDEND).toString()); } - public void handleBPDH( Connection connection,Runtime runtime,String cmd) { + public void handleBPDH(Connection connection, Runtime runtime, String cmd) { /*** * IWBPDH,353456789012345,080835,1,[参数]# * 说明: @@ -2384,30 +2387,29 @@ public class protocol_ic { * # 结尾标识符 */ - String[] cmdlist=cmd.split(CMDSPLIT); - if (cmdlist.length==5){ - String imei=cmdlist[1]; - String id=cmdlist[2]; - String cdd=cmdlist[3]; - String tmp=cmdlist[4]; + String[] cmdlist = cmd.split(CMDSPLIT); + if (cmdlist.length == 5) { + String imei = cmdlist[1]; + String id = cmdlist[2]; + String cdd = cmdlist[3]; + String tmp = cmdlist[4]; - tmp=tmp.replace(CMDEND,"").trim(); + tmp = tmp.replace(CMDEND, "").trim(); - if (tmp.isEmpty()) tmp="15"; - connection.send(APDH(id,cdd)); + if (tmp.isEmpty()) tmp = "15"; + connection.send(APDH(id, cdd)); if (cdd.equals("1")) { //delay 启动 // Context context = mRuntime.getContextProxy().context.getApplicationContext(); - CoreService.getInstance().DevliverStringMessage("StartMonitor",tmp); + CoreService.getInstance().DevliverStringMessage("StartMonitor", tmp); } - }else{ + } else { ICLogger.i(" BPDH Format error!"); } } - public static StringMessage APTQ(Runtime runtime) - { + public static StringMessage APTQ(Runtime runtime) { /** * IWAPTQ,460,0,9520,3671,0# * APTQ : 命令字符 @@ -2417,12 +2419,11 @@ public class protocol_ic { //或者仅仅使用 locale = Locale.getDefault(); 不需要考虑接口 deprecated(弃用)问题 Locale locale = Locale.getDefault(); String lang = locale.getLanguage() + "-" + locale.getCountry(); - int language=0; - if(!lang.contains("zh")) - { - language=1; + int language = 0; + if (!lang.contains("zh")) { + language = 1; } - return genStringMessage("APTQ",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTQ)) + return genStringMessage("APTQ", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTQ)) .append(CMDSPLIT).append(runtime.getLocationInstance().getMCC()) .append(CMDSPLIT).append(runtime.getLocationInstance().getMNC()) .append(CMDSPLIT).append(runtime.getLocationInstance().getLAC()) @@ -2432,7 +2433,7 @@ public class protocol_ic { } - public void handleBPTQ( Connection connection,Runtime runtime,String cmd) { + public void handleBPTQ(Connection connection, Runtime runtime, String cmd) { /*** * * IWBPTQ,20-10-11,19:32:02,6674,32,27,22,30,20-10-12,19:32:02,6674,32,27,22,30,20-10-13,19:32:02,6674,32,27,22,30,53575C71533A @@ -2490,60 +2491,58 @@ public class protocol_ic { * 47:局部雷阵雨 */ - log("BPTQ "+cmd); - String[] cmdlist=cmd.split(CMDSPLIT); - if (cmdlist.length==23){ - - StringBuilder sb=new StringBuilder(); - StringBuilder msg=new StringBuilder(); - for(int i=0;i<3;i++) { - String DayTime = cmdlist[1+i*7] + " " + cmdlist[2+i*7]; - String date= "20"+cmdlist[1+i*7].trim(); - String weather_name = Util.decodeUnicode2Utf8(cmdlist[3+i*7].trim()); - String weather_id = cmdlist[4+i*7]; - String temp_current = cmdlist[5+i*7]; - String temp_high = cmdlist[6+i*7]; - String temp_low = cmdlist[7+i*7]; - - sb.append(" "+DayTime); - sb.append(",天气:"+weather_name); - sb.append(",ID "+weather_id); - sb.append(",当前温度 "+temp_current); - sb.append(",最高温度 "+temp_high); - sb.append(",最低温度 "+temp_low); + log("BPTQ " + cmd); + String[] cmdlist = cmd.split(CMDSPLIT); + if (cmdlist.length == 23) { + + StringBuilder sb = new StringBuilder(); + StringBuilder msg = new StringBuilder(); + for (int i = 0; i < 3; i++) { + String DayTime = cmdlist[1 + i * 7] + " " + cmdlist[2 + i * 7]; + String date = "20" + cmdlist[1 + i * 7].trim(); + String weather_name = Util.decodeUnicode2Utf8(cmdlist[3 + i * 7].trim()); + String weather_id = cmdlist[4 + i * 7]; + String temp_current = cmdlist[5 + i * 7]; + String temp_high = cmdlist[6 + i * 7]; + String temp_low = cmdlist[7 + i * 7]; + + sb.append(" " + DayTime); + sb.append(",天气:" + weather_name); + sb.append(",ID " + weather_id); + sb.append(",当前温度 " + temp_current); + sb.append(",最高温度 " + temp_high); + sb.append(",最低温度 " + temp_low); sb.append("\n"); msg.append(date); - msg.append(","+weather_name); - msg.append(","+weather_id); - msg.append(","+temp_current); - msg.append(","+temp_high); - msg.append(","+temp_low); + msg.append("," + weather_name); + msg.append("," + weather_id); + msg.append("," + temp_current); + msg.append("," + temp_high); + msg.append("," + temp_low); msg.append(";"); } - String City=Util.decodeUnicode2Utf8(cmdlist[22]); + String City = Util.decodeUnicode2Utf8(cmdlist[22]); - ICLogger.i(City+" \n"+sb.toString()); + ICLogger.i(City + " \n" + sb.toString()); - msg.insert(0,City+";"); - String weatherstr=msg.toString(); - if (weatherstr.endsWith(";")) - { - weatherstr=weatherstr.substring(0,weatherstr.lastIndexOf(";")); + msg.insert(0, City + ";"); + String weatherstr = msg.toString(); + if (weatherstr.endsWith(";")) { + weatherstr = weatherstr.substring(0, weatherstr.lastIndexOf(";")); } - Intent intent=new Intent(Constants.ACTION_WEATHER_RECEIVED); - intent.putExtra(Constants.KEY_Weather,weatherstr); - ICLogger.i("send Broadcast "+ Constants.ACTION_WEATHER_RECEIVED +"\n"+weatherstr+"\n"); + Intent intent = new Intent(Constants.ACTION_WEATHER_RECEIVED); + intent.putExtra(Constants.KEY_Weather, weatherstr); + ICLogger.i("send Broadcast " + Constants.ACTION_WEATHER_RECEIVED + "\n" + weatherstr + "\n"); CoreService.getInstance().sendBroadcast(intent); - }else{ + } else { ICLogger.i(" BPTQ Format error!"); } } - - public static StringMessage AP94( ){ + public static StringMessage AP94() { /*** * 15确认已读文字(上行协议号:AP94,响应:BP94) * 示例: @@ -2559,7 +2558,7 @@ public class protocol_ic { */ //在UI逻辑中,只要有处理就都是已经阅读。所以不存在取消阅读的说法。 - return genStringMessage(cmdMap.get(protocol_ic.CMD_TYPE.AP94),new StringBuffer(CMDHEADER).append(cmdMap.get(protocol_ic.CMD_TYPE.AP94)) + return genStringMessage(cmdMap.get(protocol_ic.CMD_TYPE.AP94), new StringBuffer(CMDHEADER).append(cmdMap.get(protocol_ic.CMD_TYPE.AP94)) .append(CMDSPLIT).append(Runtime.PushtxtMsg_srv_index) .append(CMDSPLIT).append("1") .append(CMDEND).toString()); @@ -2567,9 +2566,8 @@ public class protocol_ic { } - public static StringMessage APAT(String id,String cmd) - { - return genStringMessage("APAT",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APAT)) + public static StringMessage APAT(String id, String cmd) { + return genStringMessage("APAT", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APAT)) .append(CMDSPLIT).append(id) .append(CMDSPLIT).append(cmd) .append(CMDEND).toString()); @@ -2581,7 +2579,7 @@ public class protocol_ic { * @param runtime * @param cmd */ - public void handleBPAT( Connection connection,Runtime runtime,String cmd) { + public void handleBPAT(Connection connection, Runtime runtime, String cmd) { /*** * IWBPAT,353456789012345,080835,1# * 说明:是否提示表带是否连接的开关,即剪断报警开关 @@ -2595,48 +2593,45 @@ public class protocol_ic { * 1: 剪断开关状态(实际上与下行的命令一致) */ - log("BPAT "+cmd); - String[] cmdlist=cmd.split(CMDSPLIT); - if (cmdlist.length==4){ + log("BPAT " + cmd); + String[] cmdlist = cmd.split(CMDSPLIT); + if (cmdlist.length == 4) { - String imei=cmdlist[1]; - String id=cmdlist[2]; - String cmdid=cmdlist[3]; - connection.send(APAT(id,cmdid)); - if(cmdid.trim().equals("1")){ + String imei = cmdlist[1]; + String id = cmdlist[2]; + String cmdid = cmdlist[3]; + connection.send(APAT(id, cmdid)); + if (cmdid.trim().equals("1")) { WakeLockUtil.ScreenOnWakeLockTemperary(runtime.getContextProxy().context); // runtime.getContextProxy().sendMsgBroadcast(runtime.getContextProxy().context.getResources().getString(R.string.alarm_lock_success), 2); - Util.ShowToast(runtime,runtime.getContextProxy().context.getResources().getString(R.string.alarm_lock_success)); - Config.setNeedAntiOff(runtime.getContextProxy().context,true); - Config.setNeedCutOff(runtime.getContextProxy().context,true); + Util.ShowToast(runtime, runtime.getContextProxy().context.getResources().getString(R.string.alarm_lock_success)); + Config.setNeedAntiOff(runtime.getContextProxy().context, true); + Config.setNeedCutOff(runtime.getContextProxy().context, true); runtime.setNeedAntioff(true); runtime.setNeddReportCutoff(true); } else { WakeLockUtil.ScreenOnWakeLockTemperary(runtime.getContextProxy().context); runtime.getContextProxy().sendMsgBroadcast(runtime.getContextProxy().context.getResources().getString(R.string.alarm_unbind_success), 2); - Config.setNeedAntiOff(runtime.getContextProxy().context,false); - Config.setNeedCutOff(runtime.getContextProxy().context,false); + Config.setNeedAntiOff(runtime.getContextProxy().context, false); + Config.setNeedCutOff(runtime.getContextProxy().context, false); runtime.setNeedAntioff(false); runtime.setNeddReportCutoff(false); } - }else{ + } else { ICLogger.i(" BPAT Format error!"); } } - public static StringMessage APCH(int charging) - { - return genStringMessage("APCH",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APCH)) + public static StringMessage APCH(int charging) { + return genStringMessage("APCH", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APCH)) .append(CMDSPLIT).append(charging) .append(CMDEND).toString()); } - - public static StringMessage APBT(String id,String cycle) - { - return genStringMessage("APBT",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APBT)) + public static StringMessage APBT(String id, String cycle) { + return genStringMessage("APBT", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APBT)) .append(CMDSPLIT).append(id) .append(CMDSPLIT).append(cycle) .append(CMDEND).toString()); @@ -2648,7 +2643,7 @@ public class protocol_ic { * @param runtime * @param cmd */ - public void handleBPBT( Connection connection,Runtime runtime,String cmd) { + public void handleBPBT(Connection connection, Runtime runtime, String cmd) { /*** * IWBPBT,353456789012345,080835,1# * 说明:设置蓝牙扫描周期,单位时间分钟 @@ -2662,24 +2657,24 @@ public class protocol_ic { * 1: 剪断开关状态(实际上与下行的命令一致) */ - log("BPBT "+cmd); - String[] cmdlist=cmd.split(CMDSPLIT); - if (cmdlist.length==4){ - String id=cmdlist[2]; - String cycle=cmdlist[3].replace("#",""); - connection.send(APBT(id,cycle)); - - if(Util.isNumeric(cycle)){ - int intcycle=Integer.parseInt(cycle); - Config.setBleScanCycle(runtime.getContextProxy().context,intcycle); - runtime.bleInfo.bleScanCycle=intcycle; - ICLogger.i("设置蓝牙扫描周期 "+intcycle+" 秒"); + log("BPBT " + cmd); + String[] cmdlist = cmd.split(CMDSPLIT); + if (cmdlist.length == 4) { + String id = cmdlist[2]; + String cycle = cmdlist[3].replace("#", ""); + connection.send(APBT(id, cycle)); + + if (Util.isNumeric(cycle)) { + int intcycle = Integer.parseInt(cycle); + Config.setBleScanCycle(runtime.getContextProxy().context, intcycle); + runtime.bleInfo.bleScanCycle = intcycle; + ICLogger.i("设置蓝牙扫描周期 " + intcycle + " 秒"); CoreService.getInstance().setBleScanAlarm(intcycle); - }else{ + } else { ICLogger.i(" BPBT Format error!"); } - }else{ + } else { ICLogger.i(" BPBT Format error!"); } } @@ -2695,9 +2690,9 @@ public class protocol_ic { * IWAPBR,IMEI,yyyyMMddHHmmss,beaconCount,major0,minor0,mac0,rssi0,major1,minor1,mac1,rssi1...# */ if (runtime.bleInfo.btScanResult.size() > 0) { - StringBuffer sb=new StringBuffer(); + StringBuffer sb = new StringBuffer(); sb.append(runtime.bleInfo.btScanResult.size()); - for(String it:runtime.bleInfo.btScanResult){ + for (String it : runtime.bleInfo.btScanResult) { sb.append(CMDSPLIT).append(it); } return genStringMessage("APBR", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APBR)) @@ -2706,18 +2701,19 @@ public class protocol_ic { .append(CMDSPLIT).append(sb.toString()) .append(CMDEND).toString()); - }else{ + } else { return null; } } - public static StringMessage APBS(String id,String cycle) - { - return genStringMessage("APBS",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APBS)) + + public static StringMessage APBS(String id, String cycle) { + return genStringMessage("APBS", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APBS)) .append(CMDSPLIT).append(id) .append(CMDSPLIT).append(cycle) .append(CMDEND).toString()); } - public void handleBPBS( Connection connection,Runtime runtime,String cmd) { + + public void handleBPBS(Connection connection, Runtime runtime, String cmd) { /*** * IWBPBS,353456789012345,080835,150&151# * 说明:设置蓝牙扫描绑定的 major id @@ -2730,23 +2726,24 @@ public class protocol_ic { * 080835:指令流水号 * 1: 成功,0失败 */ - log("BPBS "+cmd); - String[] cmdlist=cmd.split(CMDSPLIT); - if (cmdlist.length==4){ - String id=cmdlist[2]; - connection.send(APBS(id,"1")); - - ICLogger.i("设置蓝牙扫描绑定MajorID "+cmdlist[3]+" "); - String[] majorlist=cmdlist[3].split("&"); + log("BPBS " + cmd); + String[] cmdlist = cmd.split(CMDSPLIT); + if (cmdlist.length == 4) { + String id = cmdlist[2]; + connection.send(APBS(id, "1")); + + ICLogger.i("设置蓝牙扫描绑定MajorID " + cmdlist[3] + " "); + String[] majorlist = cmdlist[3].split("&"); runtime.bleInfo.btMajorList.clear(); - for(int i=0;i=3){ - switch (cmdlist.length){ + String[] cmdlist = cmd.split(CMDSPLIT); + String[] phnums = new String[]{"", "", "", "", "", "", "", "", "", ""}; + StringBuffer sb = new StringBuffer().append("recv phone Numbs "); + if (cmdlist.length >= 3) { + switch (cmdlist.length) { case 13: - phnums[9]=cmdlist[12]; + phnums[9] = cmdlist[12]; sb.append(phnums[9]).append(","); case 12: - phnums[8]=cmdlist[11]; + phnums[8] = cmdlist[11]; sb.append(phnums[8]).append(","); case 11: - phnums[7]=cmdlist[10]; + phnums[7] = cmdlist[10]; sb.append(phnums[7]).append(","); case 10: - phnums[6]=cmdlist[9]; + phnums[6] = cmdlist[9]; sb.append(phnums[6]).append(","); case 9: - phnums[5]=cmdlist[8]; + phnums[5] = cmdlist[8]; sb.append(phnums[5]).append(","); case 8: - phnums[4]=cmdlist[7]; + phnums[4] = cmdlist[7]; sb.append(phnums[4]).append(","); case 7: - phnums[3]=cmdlist[6]; + phnums[3] = cmdlist[6]; sb.append(phnums[3]).append(","); case 6: - phnums[2]=cmdlist[5]; + phnums[2] = cmdlist[5]; sb.append(phnums[2]).append(","); case 5: - phnums[1]=cmdlist[4]; + phnums[1] = cmdlist[4]; sb.append(phnums[1]).append(","); case 4: - phnums[0]=cmdlist[3]; + phnums[0] = cmdlist[3]; sb.append(phnums[0]).append(","); } - String index=cmdlist[2]; + String index = cmdlist[2]; ICLogger.i(sb.toString()); - connection.send(APWL(index,phnums)); - ArrayList contactArray=new ArrayList(); + connection.send(APWL(index, phnums)); + ArrayList contactArray = new ArrayList(); - if(Config.custom_name.equals("YT")) { + if (Config.custom_name.equals("YT")) { ICLogger.i("=====add hotline 96885 "); contactArray.add(new Contact(Contact.CATEGORY_CALL, runtime.getContextProxy().context.getResources().getString(R.string.hotline), "96885")); } - for (int i=0; i< phnums.length;i++){ - String[] tmp= phnums[i].split("\\|"); - if (tmp.length==2){ - String name= Util.decodeUnicode2Utf8(tmp[0]); - String phonem=tmp[1]; - ICLogger.i("phnums["+i+"]="+phnums[i]+",split = "+tmp.length+" , name="+name+",-"+phonem); - contactArray.add(new Contact(Contact.CATEGORY_CALL,name,phonem)); - }else{ - ICLogger.i("phnums["+i+"]="+phnums[i]+",split = "+tmp.length); + for (int i = 0; i < phnums.length; i++) { + String[] tmp = phnums[i].split("\\|"); + if (tmp.length == 2) { + String name = Util.decodeUnicode2Utf8(tmp[0]); + String phonem = tmp[1]; + ICLogger.i("phnums[" + i + "]=" + phnums[i] + ",split = " + tmp.length + " , name=" + name + ",-" + phonem); + contactArray.add(new Contact(Contact.CATEGORY_CALL, name, phonem)); + } else { + ICLogger.i("phnums[" + i + "]=" + phnums[i] + ",split = " + tmp.length); } } @@ -2857,26 +2855,23 @@ public class protocol_ic { // contactArray.add(new Contact(Contact.CATEGORY_CARE,"CARE","666")); // contactArray.add(new Contact(Contact.CATEGORY_VOLTE,"VOLTE","666")); - runtime.getDbHelper().saveContacts(contactArray,false,false,true,false,false,false); + runtime.getDbHelper().saveContacts(contactArray, false, false, true, false, false, false); - }else{ + } else { ICLogger.i(" BPWL format error!"); } } - - - public static StringMessage AP65(String id,String cy) - { - return genStringMessage("AP65",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP65)) + public static StringMessage AP65(String id, String cy) { + return genStringMessage("AP65", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP65)) .append(CMDSPLIT).append(id) .append(CMDSPLIT).append(cy) .append(CMDEND).toString()); } - public void handleBP65( Connection connection,Runtime runtime,String cmd) { + public void handleBP65(Connection connection, Runtime runtime, String cmd) { /*** * 36.音量设置(下行协议:BP65,响应:AP65) * 示例: @@ -2892,43 +2887,42 @@ public class protocol_ic { * 1: 表示指令执行成功,音量等级为1 */ - log("BP65 "+cmd); - String[] cmdlist=cmd.split(CMDSPLIT); - if (cmdlist.length==4){ - String id=cmdlist[2]; - String cycle=cmdlist[3].replace("#",""); - connection.send(AP65(id,cycle)); + log("BP65 " + cmd); + String[] cmdlist = cmd.split(CMDSPLIT); + if (cmdlist.length == 4) { + String id = cmdlist[2]; + String cycle = cmdlist[3].replace("#", ""); + connection.send(AP65(id, cycle)); - if(Util.isNumeric(cycle)){ - int mastervolume=Integer.parseInt(cycle); + if (Util.isNumeric(cycle)) { + int mastervolume = Integer.parseInt(cycle); - ICLogger.i("设置音量 "+mastervolume); + ICLogger.i("设置音量 " + mastervolume); //实际设备音量 0~15 协议音量0~7需要转换 - int volume=mastervolume*2; - if (volume<0)volume=0; - if(volume>=14) volume=15; - Config.setMasterVolume(runtime.getContextProxy().context,mastervolume*2); - ICAudioManager.setMasterVolumn(runtime.getContextProxy().context,mastervolume*2); + int volume = mastervolume * 2; + if (volume < 0) volume = 0; + if (volume >= 14) volume = 15; + Config.setMasterVolume(runtime.getContextProxy().context, mastervolume * 2); + ICAudioManager.setMasterVolumn(runtime.getContextProxy().context, mastervolume * 2); - }else{ + } else { ICLogger.i(" BP65 Format error!"); } - }else{ + } else { ICLogger.i(" BP65 Format error!"); } } - public static StringMessage AP47(String id,String cycle) - { - return genStringMessage("AP47",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP47)) + public static StringMessage AP47(String id, String cycle) { + return genStringMessage("AP47", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP47)) .append(CMDSPLIT).append(id) .append(CMDSPLIT).append(cycle) .append(CMDEND).toString()); } - public void handleBP47( Connection connection,Runtime runtime,String cmd) { + public void handleBP47(Connection connection, Runtime runtime, String cmd) { /*** * 37.震动设置(下行协议号:BP47,响应:AP47) * 示例: @@ -2944,263 +2938,264 @@ public class protocol_ic { * 1:表示设备执行成功,0 表示设备执行失败 */ - log("BP47 "+cmd); - String[] cmdlist=cmd.split(CMDSPLIT); - if (cmdlist.length==4){ - String id=cmdlist[2]; - String cycle=cmdlist[3].replace("#",""); - connection.send(AP47(id,cycle)); + log("BP47 " + cmd); + String[] cmdlist = cmd.split(CMDSPLIT); + if (cmdlist.length == 4) { + String id = cmdlist[2]; + String cycle = cmdlist[3].replace("#", ""); + connection.send(AP47(id, cycle)); - if(Util.isNumeric(cycle)){ - int vibduration=Integer.parseInt(cycle); - ICLogger.i("设置震动时长 "+vibduration+" 秒"); - Config.setDurationOfVibration(runtime.getContextProxy().context,vibduration); - VibrateUtil.setVibPattern(vibduration*1000); + if (Util.isNumeric(cycle)) { + int vibduration = Integer.parseInt(cycle); + ICLogger.i("设置震动时长 " + vibduration + " 秒"); + Config.setDurationOfVibration(runtime.getContextProxy().context, vibduration); + VibrateUtil.setVibPattern(vibduration * 1000); - }else{ + } else { ICLogger.i(" BP47 Format error!"); } - }else{ + } else { ICLogger.i(" BP47 Format error!"); } } + public boolean handleCmd(CMD_TYPE type, String cmd) { - //普通非二进制命令用此函数处理 - boolean ret=true; - ICLogger.i("handleCmd "+type.name() + " strLen="+cmd.length()); - if (Config.LOG_TOFILE)ICLogger.logToFile("APILog", " recv " + cmd); - cmd=cmd.replace(" ",""); - switch (type){ + //普通非二进制命令用此函数处理 + boolean ret = true; + ICLogger.i("handleCmd " + type.name() + " strLen=" + cmd.length()); + if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " recv " + cmd); + cmd = cmd.replace(" ", ""); + switch (type) { case BP00: //登录包 - handleBP00(mRuntime,cmd); + handleBP00(mRuntime, cmd); ICLogger.i("服务器收到登录包AP00"); - mConnection.DeliverCMDMessageToSystem("login",cmd);//通知下面线程状态变化 + mConnection.DeliverCMDMessageToSystem("login", cmd);//通知下面线程状态变化 break; case BP01: //gps定位包 handleBP01(cmd); ICLogger.i("服务器收到定位AP01"); - mConnection.DeliverCMDMessageToSystem("AP01",cmd);//通知下面线程状态变化 + mConnection.DeliverCMDMessageToSystem("AP01", cmd);//通知下面线程状态变化 break; case BP02:// wifi定位包 handleBP02(cmd); ICLogger.i("服务器收到定位AP02"); - mConnection.DeliverCMDMessageToSystem("AP02",cmd);//通知下面线程状态变化 + mConnection.DeliverCMDMessageToSystem("AP02", cmd);//通知下面线程状态变化 break; case BP03: //心跳包 handleBP03(cmd); ICLogger.i("服务器收到心跳包AP03"); - mConnection.DeliverCMDMessageToSystem("heartbeat",cmd);//通知下面线程状态变化 + mConnection.DeliverCMDMessageToSystem("heartbeat", cmd);//通知下面线程状态变化 break; case BP07: //收到发送的语音包 - handleBP07(cmd,mConnection); + handleBP07(cmd, mConnection); break; case BP10: //报警包 - mConnection.DeliverCMDMessageToSystem("AP10",cmd);//通知下面线程状态变化 + mConnection.DeliverCMDMessageToSystem("AP10", cmd);//通知下面线程状态变化 break; case BPBR: - mConnection.DeliverCMDMessageToSystem("APBR",cmd);//通知下面线程状态变化 + mConnection.DeliverCMDMessageToSystem("APBR", cmd);//通知下面线程状态变化 break; case BPTM: //校时命令 handleBPTM(cmd); ICLogger.i("服务器收到校时命令APTM"); - mConnection.DeliverCMDMessageToSystem("APTM",cmd);//通知下面线程状态变化 + mConnection.DeliverCMDMessageToSystem("APTM", cmd);//通知下面线程状态变化 break; case BP85://设置闹钟 - handleBP85(cmd,mConnection,mRuntime); + handleBP85(cmd, mConnection, mRuntime); ICLogger.i("收到服务器设置闹钟命令BP85"); - mConnection.DeliverCMDMessageToSystem("AP85",cmd);//通知下面线程状态变化 + mConnection.DeliverCMDMessageToSystem("AP85", cmd);//通知下面线程状态变化 break; case BP87: - handleBP87(cmd,mConnection,mRuntime); + handleBP87(cmd, mConnection, mRuntime); ICLogger.i("收到服务器 QRCode uri BP87"); break; case BP33: //设置工作模式 - handleBP33(mConnection,mRuntime,cmd); - mConnection.DeliverCMDMessageToSystem("setWorkMod",cmd);//通知下面线程状态变化 + handleBP33(mConnection, mRuntime, cmd); + mConnection.DeliverCMDMessageToSystem("setWorkMod", cmd);//通知下面线程状态变化 break; case BP34: //设置工作模式 - handleBP34(mConnection,mRuntime,cmd); - mConnection.DeliverCMDMessageToSystem("setWorkMod",cmd);//通知下面线程状态变化 + handleBP34(mConnection, mRuntime, cmd); + mConnection.DeliverCMDMessageToSystem("setWorkMod", cmd);//通知下面线程状态变化 break; case BP16: //立即定位指令(长链接有效) - handleBP16(mConnection,mRuntime,cmd); - mConnection.DeliverCMDMessageToSystem("StartLocate",cmd);//通知下面线程状态变化 + handleBP16(mConnection, mRuntime, cmd); + mConnection.DeliverCMDMessageToSystem("StartLocate", cmd);//通知下面线程状态变化 break; case BP46: //立即拍照 ICLogger.i("立即拍照!"); - handleBP46(cmd,mConnection,mRuntime); + handleBP46(cmd, mConnection, mRuntime); break; case BP12: //收到设置SOS号码 - handleBP12(mConnection,cmd,mRuntime); + handleBP12(mConnection, cmd, mRuntime); ICLogger.i("收到服务器设置SOS号码命令BP12"); break; case BP14: //收到设置白名单号码 - handleBP14(mConnection,cmd,mRuntime); + handleBP14(mConnection, cmd, mRuntime); ICLogger.i("收到服务器设置白名单号码命令BP14"); break; case BPWL: //收到设置白名单号码 - handleBPWL(mConnection,cmd,mRuntime); + handleBPWL(mConnection, cmd, mRuntime); ICLogger.i("收到服务器设置白名单号码命令BPWL"); break; case BP15: - handleBP15(cmd,mConnection,mRuntime); + handleBP15(cmd, mConnection, mRuntime); ICLogger.i("收到服务器设置定位命令BP15"); break; case BP17: //收到恢复出厂设置 - handleBP17(mConnection,cmd); + handleBP17(mConnection, cmd); ICLogger.i("收到服务器恢复出厂设置命令BP17"); - mConnection.DeliverCMDMessageToSystem("FactoryReset",cmd);//通知下面线程状态变化 + mConnection.DeliverCMDMessageToSystem("FactoryReset", cmd);//通知下面线程状态变化 break; case BP18: //收到重启 - handleBP18(mConnection,cmd); + handleBP18(mConnection, cmd); ICLogger.i("收到服务器重启命令BP18"); - mConnection.DeliverCMDMessageToSystem("Reboot",cmd);//通知下面线程状态变化 + mConnection.DeliverCMDMessageToSystem("Reboot", cmd);//通知下面线程状态变化 break; case BP31: //收到关机 - handleBP31(mConnection,cmd); + handleBP31(mConnection, cmd); ICLogger.i("收到服务器关机命令BP31"); - mConnection.DeliverCMDMessageToSystem("poweroff",cmd);//通知下面线程状态变化 + mConnection.DeliverCMDMessageToSystem("poweroff", cmd);//通知下面线程状态变化 break; case BP40: //服务器推送文本 - handleBP40(mConnection,mRuntime,cmd); + handleBP40(mConnection, mRuntime, cmd); ICLogger.i("收到服务器推送文本消息"); - mConnection.DeliverCMDMessageToSystem("showTxt",cmd);//通知下面线程状态变化 + mConnection.DeliverCMDMessageToSystem("showTxt", cmd);//通知下面线程状态变化 break; case BPXL: - handleBPXL(cmd,mConnection); + handleBPXL(cmd, mConnection); ICLogger.i("收到服务器心率检测命令"); - if(mRuntime.check_stat_do_ppg_test()) HeartRateManager.triggerPPGtest(); + if (mRuntime.check_stat_do_ppg_test()) HeartRateManager.triggerPPGtest(); break; case BPXY: - handleBPXY(cmd,mConnection); + handleBPXY(cmd, mConnection); ICLogger.i("收到服务器血压检测命令"); - if(mRuntime.check_stat_do_ppg_test()) HeartRateManager.triggerPPGtest(); + if (mRuntime.check_stat_do_ppg_test()) HeartRateManager.triggerPPGtest(); break; case BPJZ: - handleBPJZ(cmd,mConnection,mRuntime); + handleBPJZ(cmd, mConnection, mRuntime); ICLogger.i("收到服务器血压校准命令"); break; case BPHT: ICLogger.i("服务器收到上传的心率血压"); - mConnection.DeliverCMDMessageToSystem("APHT",cmd);//通知下面线程状态变化 + mConnection.DeliverCMDMessageToSystem("APHT", cmd);//通知下面线程状态变化 break; case BP84: - handleBP84(cmd,mConnection); + handleBP84(cmd, mConnection); ICLogger.i("收到服务器白名单命令"); break; case BP86: //心率周期 - handleBP86(cmd,mConnection,mRuntime); - mConnection.DeliverCMDMessageToSystem("AP86",cmd);//通知下面线程状态变化 + handleBP86(cmd, mConnection, mRuntime); + mConnection.DeliverCMDMessageToSystem("AP86", cmd);//通知下面线程状态变化 break; case BP68: //绑定解绑 - handleBP68(cmd,mConnection,mRuntime); + handleBP68(cmd, mConnection, mRuntime); break; case BP88: //收到查找设备消息 - handleBP88(cmd,mConnection); - mConnection.DeliverCMDMessageToSystem("findDev",cmd);//通知下面线程状态变化 + handleBP88(cmd, mConnection); + mConnection.DeliverCMDMessageToSystem("findDev", cmd);//通知下面线程状态变化 break; case BP89: //心率/血压阀值 - handleBP89(cmd,mConnection); - mConnection.DeliverCMDMessageToSystem("AP89",cmd);//通知下面线程状态变化 + handleBP89(cmd, mConnection); + mConnection.DeliverCMDMessageToSystem("AP89", cmd);//通知下面线程状态变化 break; case BPTE: //设置测试体温 - handleBPTE(cmd,mConnection,mRuntime); - mConnection.DeliverCMDMessageToSystem("APTE",cmd);//通知下面线程状态变化 + handleBPTE(cmd, mConnection, mRuntime); + mConnection.DeliverCMDMessageToSystem("APTE", cmd);//通知下面线程状态变化 break; case BPTP: handleBPTP(); - mConnection.DeliverCMDMessageToSystem("APTP",cmd);//通知下面线程状态变化 + mConnection.DeliverCMDMessageToSystem("APTP", cmd);//通知下面线程状态变化 break; case BPHP: handleBPHP(); - mConnection.DeliverCMDMessageToSystem("APHP",cmd);//通知下面线程状态变化 + mConnection.DeliverCMDMessageToSystem("APHP", cmd);//通知下面线程状态变化 break; case BPX1://设置 心率血压血氧修正值 - handleBPX1(cmd,mConnection,mRuntime); + handleBPX1(cmd, mConnection, mRuntime); ICLogger.i("收到服务器设置 心率血压血氧修正值BPX1"); - mConnection.DeliverCMDMessageToSystem("APX1",cmd);//通知下面线程状态变化 + mConnection.DeliverCMDMessageToSystem("APX1", cmd);//通知下面线程状态变化 break; case BPS4: //提醒设置(时间段) 主要为久坐设置提醒时长。 - handleBPS4(cmd,mConnection,mRuntime); + handleBPS4(cmd, mConnection, mRuntime); ICLogger.i("收到 提醒设置(时间段)"); - mConnection.DeliverCMDMessageToSystem("APS4",cmd);//通知下面线程状态变化 + mConnection.DeliverCMDMessageToSystem("APS4", cmd);//通知下面线程状态变化 break; case BPDE: - handleBPDE(mConnection,cmd,mRuntime); + handleBPDE(mConnection, cmd, mRuntime); ICLogger.i(" 收到 进出围栏通知!"); - mConnection.DeliverCMDMessageToSystem("APDE",cmd);//通知下面线程状态变化 + mConnection.DeliverCMDMessageToSystem("APDE", cmd);//通知下面线程状态变化 break; case BPTU: handleBPTU(cmd, mConnection); ICLogger.i("收到服务器 图片语音 消息 BPTU"); - // mConnection.DeliverCMDMessageToSystem("APTU", "");//通知下面线程状态变化 + // mConnection.DeliverCMDMessageToSystem("APTU", "");//通知下面线程状态变化 break; case BPDG: - handleBPDG(mConnection,cmd,mRuntime); + handleBPDG(mConnection, cmd, mRuntime); ICLogger.i(" 收到 体温阈值设置!"); - mConnection.DeliverCMDMessageToSystem("APDG",cmd);//通知下面线程状态变化 + mConnection.DeliverCMDMessageToSystem("APDG", cmd);//通知下面线程状态变化 break; case BPSL: ICLogger.i("睡眠数据上传完毕!"); - mConnection.DeliverCMDMessageToSystem("APSL",cmd);//通知下面线程状态变化 + mConnection.DeliverCMDMessageToSystem("APSL", cmd);//通知下面线程状态变化 break; case BPDH: ICLogger.i("聆听"); - handleBPDH(mConnection,mRuntime,cmd); + handleBPDH(mConnection, mRuntime, cmd); break; case BPTQ: //天气下发 - handleBPTQ(mConnection,mRuntime,cmd); + handleBPTQ(mConnection, mRuntime, cmd); break; case BPAT://剪断开关设定 - handleBPAT(mConnection,mRuntime,cmd); + handleBPAT(mConnection, mRuntime, cmd); break; case BPBT://蓝牙扫描设置 - handleBPBT(mConnection,mRuntime,cmd); + handleBPBT(mConnection, mRuntime, cmd); break; case BPBS://蓝牙扫描设置Majorlist - handleBPBS(mConnection,mRuntime,cmd); + handleBPBS(mConnection, mRuntime, cmd); break; case BP65://声音设置 - handleBP65(mConnection,mRuntime,cmd); + handleBP65(mConnection, mRuntime, cmd); break; case BP47://震动设置 - handleBP47(mConnection,mRuntime,cmd); + handleBP47(mConnection, mRuntime, cmd); break; @@ -3214,12 +3209,12 @@ public class protocol_ic { public boolean handleCmd(CMD_TYPE type, String cmd, byte[] bytes) { //只有需要传递二进制数据的才需要这个函数,目前只有BP28需要 - boolean ret=true; - ICLogger.i("handleCmd "+type.name() + " "+cmd+" bytelen="+bytes.length ); - if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " recv " +new String(bytes)); + boolean ret = true; + ICLogger.i("handleCmd " + type.name() + " " + cmd + " bytelen=" + bytes.length); + if (Config.LOG_TOFILE) ICLogger.logToFile("APILog", " recv " + new String(bytes)); switch (type) { case BP28: - handleBP28(mConnection,cmd, mRuntime,bytes); + handleBP28(mConnection, cmd, mRuntime, bytes); ICLogger.i("收到服务器语音BP28"); // mConnection.DeliverCMDMessageToSystem("BP28", "");//通知下面线程状态变化 break; diff --git a/app/src/main/java/com/ic/protocols/protocol_mqtt_client.java b/app/src/main/java/com/ic/protocols/protocol_mqtt_client.java index 14888c41..d61203b4 100644 --- a/app/src/main/java/com/ic/protocols/protocol_mqtt_client.java +++ b/app/src/main/java/com/ic/protocols/protocol_mqtt_client.java @@ -5,38 +5,38 @@ import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.os.Handler; +import android.os.HandlerThread; import android.os.IBinder; import android.os.Message; import android.util.Log; import com.enqualcomm.support.Config; -import com.enqualcomm.support.bean.EventLooperHandlerThread; import com.enqualcomm.support.utils.ICLogger; import se.wetcat.qatja.MQTTConstants; import se.wetcat.qatja.android.MQTTConnectionConstants; import se.wetcat.qatja.android.QatjaService; -import se.wetcat.qatja.messages.MQTTMessage; import se.wetcat.qatja.messages.MQTTPublish; public class protocol_mqtt_client { private String TAG = protocol_mqtt_client.class.getSimpleName(); - private Handler mHandler ; + private Handler mHandler; QatjaService mClient = null; private Context mContext; private boolean isBound = false; private boolean isBinding = false; - public static String topic_header=""; + public static String topic_header = ""; - public void setSubscriptTopicHeader(String header){ - topic_header=header; + public void setSubscriptTopicHeader(String header) { + topic_header = header; } + private class MqttCallback implements Handler.Callback { @Override public boolean handleMessage(Message msg) { - ICLogger.i("MqttCallback handleMessage "+msg.what); + ICLogger.i("MqttCallback handleMessage " + msg.what); switch (msg.what) { case MQTTConnectionConstants.STATE_CHANGE: handleStateChange(msg); @@ -49,12 +49,16 @@ public class protocol_mqtt_client { } } - MqttCallbackInterface mqttCallbackInterface=null; - public protocol_mqtt_client(Context context,MqttCallbackInterface _mqttCallbackInterface) { - mqttCallbackInterface=_mqttCallbackInterface; + MqttCallbackInterface mqttCallbackInterface = null; + + public protocol_mqtt_client(Context context, MqttCallbackInterface _mqttCallbackInterface) { + + mqttCallbackInterface = _mqttCallbackInterface; mContext = context; - mHandler = new Handler(EventLooperHandlerThread.makeLooper(MqttCallback.class.getSimpleName()),new MqttCallback()); + HandlerThread handlerThread = new HandlerThread("ic:mqtt-handler-thread"); + handlerThread.start(); + mHandler = new Handler(handlerThread.getLooper(), new MqttCallback()); } private void handleStateChange(Message msg) { @@ -62,17 +66,17 @@ public class protocol_mqtt_client { switch (msg.arg1) { case MQTTConnectionConstants.STATE_NONE: - if (mqttCallbackInterface!= null) + if (mqttCallbackInterface != null) mqttCallbackInterface.onMqttDisconnected(); break; case MQTTConnectionConstants.STATE_CONNECTING: break; case MQTTConnectionConstants.STATE_CONNECTED: - if (mqttCallbackInterface!=null) + if (mqttCallbackInterface != null) mqttCallbackInterface.onMqttConnected(); break; case MQTTConnectionConstants.STATE_CONNECTION_FAILED: - if (mqttCallbackInterface!=null) + if (mqttCallbackInterface != null) mqttCallbackInterface.onMqttDisconnected(); break; default: @@ -88,9 +92,10 @@ public class protocol_mqtt_client { Log.d(TAG, "handleReceivedMessage(${publish.topicName})" + publish.getTopicName() + " data " + new String(publish.getPayload())); // } - String cmdtype= publish.getTopicName().replace(topic_header,""); - if (Config.LOG_TOFILE)ICLogger.logToFile("APILog", "mqtt recv " + publish.getTopicName() +" "+ new String(publish.getPayload())); - if (mqttCallbackInterface!=null) + String cmdtype = publish.getTopicName().replace(topic_header, ""); + if (Config.LOG_TOFILE) + ICLogger.logToFile("APILog", "mqtt recv " + publish.getTopicName() + " " + new String(publish.getPayload())); + if (mqttCallbackInterface != null) mqttCallbackInterface.handleMqttMessage(cmdtype, publish.getPayload()); } @@ -121,7 +126,7 @@ public class protocol_mqtt_client { public void Pause() { try { - if(mClient!=null) mClient.disconnect(); + if (mClient != null) mClient.disconnect(); mContext.unbindService(mConnection); @@ -170,23 +175,26 @@ public class protocol_mqtt_client { } } - private String mqttHost=""; - private String devid=""; - private int mqtt_port=8083; - private int mqtt_cycle_seconds=600; - public void configMqtt(String host,int port,int cycle_seconds,String idname){ - mqttHost=host; - devid=idname; - mqtt_port=port; - mqtt_cycle_seconds=cycle_seconds; + + private String mqttHost = ""; + private String devid = ""; + private int mqtt_port = 8083; + private int mqtt_cycle_seconds = 600; + + public void configMqtt(String host, int port, int cycle_seconds, String idname) { + mqttHost = host; + devid = idname; + mqtt_port = port; + mqtt_cycle_seconds = cycle_seconds; } - public void attemptConnectMqtt(){ - attemptConnectMqtt(mqttHost,mqtt_port,devid,mqtt_cycle_seconds); + public void attemptConnectMqtt() { + attemptConnectMqtt(mqttHost, mqtt_port, devid, mqtt_cycle_seconds); } - public void attemptConnectMqtt(String host, int port,String identifier, int cycle_inSeconds) { - ICLogger.i("attemptConnectMqtt("+host+", "+port+" "+identifier+" "+cycle_inSeconds); + + public void attemptConnectMqtt(String host, int port, String identifier, int cycle_inSeconds) { + ICLogger.i("attemptConnectMqtt(" + host + ", " + port + " " + identifier + " " + cycle_inSeconds); if (!(MQTTConnectionConstants.STATE_CONNECTING == mClient.getState() || MQTTConnectionConstants.STATE_CONNECTED == mClient.getState())) { try { @@ -207,19 +215,19 @@ public class protocol_mqtt_client { } } - public void sendMessage(String cmdtype,String data){ + public void sendMessage(String cmdtype, String data) { // ICLogger.logToFile("APILog",cmdtype+" "+data); - mClient.publish(cmdtype,data); + mClient.publish(cmdtype, data); } - public interface MqttCallbackInterface - { - void onMqttConnected() ; + public interface MqttCallbackInterface { + void onMqttConnected(); void onMqttDisconnected(); - void handleMqttMessage(String cmdtype,byte[] msgdata); - void handleMqttMessage(String cmdtype,String msgdata); + void handleMqttMessage(String cmdtype, byte[] msgdata); + + void handleMqttMessage(String cmdtype, String msgdata); } } diff --git a/local.properties b/local.properties index e6bf80bf..5a44ca65 100644 --- a/local.properties +++ b/local.properties @@ -4,5 +4,5 @@ # Location of the SDK. This is only used by Gradle. # For customization when using a Version Control System, please read the # header note. -#Wed Dec 16 16:41:45 CST 2020 -sdk.dir=C\:\\Users\\incar\\AppData\\Local\\Android\\Sdk +#Tue Dec 29 09:16:53 CST 2020 +sdk.dir=D\:\\Android\\Sdk