<action android:name="com.enqualcomm.support.CloseUnreadMsg" />
<action android:name="android.intent.action.BATTERY_LOW" />
<action android:name="com.enqualcomm.support.ACTION_MISSED_CALL_GET" />
-
+ <action android:name="com.enqualcomm.support.ACTION_CHECK_SERVER_RESPONSE" />
+ <action android:name="com.enqualcomm.support.ACTION_RETRY_SERVER_CONNECT" />
+ <action android:name="com.enqualcomm.support.ACTION_CHECK_LOCATION_RESULT" />
<!-- <action android:name="com.eqc.heartrate.action.SILENT_START" /> -->
</intent-filter>
</receiver>
public static final String contact = "contact";\r
\r
public static final String wechat_contact = "content";\r
+\r
+\r
+ public static final String ACTION_CHECK_SERVER_RESPONSE = "com.enqualcomm.support.ACTION_CHECK_SERVER_RESPONSE";\r
+ public static final String ACTION_RETRY_SERVER_CONNECT = "com.enqualcomm.support.ACTION_RETRY_SERVER_CONNECT";\r
+ public static final String ACTION_CHECK_LOCATION_RESULT = "com.enqualcomm.support.ACTION_CHECK_LOCATION_RESULT";\r
+\r
+\r
}\r
\r
if (Config.LOG_TOFILE) ICLogger.logToFile("alarmCycle", stringBuilder1.toString());\r
// this.locationClient.triggerLocationProcess();\r
\r
- } else if (Constants.SLEEP_ALARM.equals(paramIntent.getAction())) {\r
+ }else if (Constants.ACTION_CHECK_SERVER_RESPONSE.equals(paramIntent.getAction())) {\r
+ //暂时还使用 ScheduledThreadPoolExecutor , 时间要求不是那么的严格\r
+ }else if (Constants.ACTION_RETRY_SERVER_CONNECT.equals(paramIntent.getAction())) {\r
+ //暂时还使用 ScheduledThreadPoolExecutor , 时间要求不是那么的严格\r
+ }else if (Constants.ACTION_CHECK_LOCATION_RESULT.equals(paramIntent.getAction())) {\r
+ locationClient.waitAndSendLocation();\r
+ }else if (Constants.SLEEP_ALARM.equals(paramIntent.getAction())) {\r
StringBuilder stringBuilder1;\r
ICLogger.i("SLEEP_ALARM");\r
is_allowed_in_sleep_mode = 1;\r
\r
public void stopConnectionRetryTimer(){\r
if (mTimer_retry_connect !=null){\r
- mTimer_retry_connect.shutdown();\r
+ mTimer_retry_connect.shutdownNow();\r
+// while(!mTimer_retry_connect.isTerminated())\r
+// {\r
+// ICLogger.i("Wait for thread pool terminated");\r
+// try {\r
+// Thread.sleep(500);\r
+// } catch (InterruptedException e) {\r
+// e.printStackTrace();\r
+// }\r
+// }\r
mTimer_retry_connect.purge();\r
mTimer_retry_connect = null;\r
}\r
import rx.functions.Action1;\r
\r
import static android.location.LocationManager.GPS_PROVIDER;\r
+import static com.enqualcomm.support.Constants.ACTION_CHECK_LOCATION_RESULT;\r
import static com.enqualcomm.support.Constants.HEART_ALARM;\r
\r
public class LocationClient {\r
\r
private LBSHelper mLbsHelper;\r
\r
- private ScheduledThreadPoolExecutor mTimer=null;\r
+// private ScheduledThreadPoolExecutor mTimer=null;\r
\r
private int mPedometer2;\r
\r
checktimes=0;\r
timeout=false;\r
startCheckTime= System.currentTimeMillis();\r
+ needCheckAgain=true;\r
//延时2秒执行发送“读取定位”消息\r
- if (mTimer==null) mTimer=new ScheduledThreadPoolExecutor(2);\r
- mTimer.scheduleAtFixedRate(new Runnable() {\r
- @Override\r
- public void run() {\r
- waitAndSendLocation();\r
- //mhandler.sendEmptyMessage(msgWhat_WaitAndSendLocation);\r
- }\r
- }, 1000L, 1000L,TimeUnit.MILLISECONDS);\r
-// AlarmManager alarmManager=(AlarmManager)runtime.getContextProxy().context.getSystemService(Context.ALARM_SERVICE);\r
-// AlarmHelper.setAlarm(alarmManager,0,1,);\r
+// if (mTimer==null) {\r
+// mTimer = new ScheduledThreadPoolExecutor(1);\r
+// }\r
+\r
+ ICLogger.i("startCheckResult " );\r
+\r
+// mTimer.scheduleAtFixedRate(new Runnable() {\r
+// @Override\r
+// public void run() {\r
+// try {\r
+// waitAndSendLocation();\r
+// }catch (Exception e){\r
+// e.printStackTrace();\r
+// }\r
+// //mhandler.sendEmptyMessage(msgWhat_WaitAndSendLocation);\r
+// }\r
+// }, 1000L, 1000L,TimeUnit.MILLISECONDS);\r
+\r
+ AlarmHelper.setRealTimeAlarmInSeconds(runtime.getContextProxy().context,1,ACTION_CHECK_LOCATION_RESULT);\r
+\r
}\r
\r
\r
\r
boolean wifi_ok=false,gps_ok=false,lbs_ok=false,gps_nosignal=false;\r
\r
+ private static boolean needCheckAgain=false;\r
public void waitAndSendLocation(){\r
\r
long timeCost=0L;\r
break;\r
}\r
\r
+ if(needCheckAgain)\r
+ AlarmHelper.setRealTimeAlarmInSeconds(runtime.getContextProxy().context,1,ACTION_CHECK_LOCATION_RESULT);\r
}\r
\r
public void stopCheckLocationResult(){\r
ICLogger.i("stopCheckLocationResult!");\r
- if (mTimer!=null){\r
- mTimer.shutdown();\r
- mTimer.purge();\r
- mTimer=null;\r
- }\r
+// if (mTimer!=null){\r
+// mTimer.shutdownNow();\r
+// Runnable tmp= mTimer.getQueue().poll();\r
+// while (tmp!=null){\r
+// mTimer.remove(tmp);\r
+// }\r
+// mTimer.setContinueExistingPeriodicTasksAfterShutdownPolicy(true);\r
+// mTimer.setExecuteExistingDelayedTasksAfterShutdownPolicy(false);\r
+// mTimer.setRemoveOnCancelPolicy(true);\r
+// ICLogger.i("Wait for thread pool getContinueExistingPeriodicTasksAfterShutdownPolicy " +mTimer.getContinueExistingPeriodicTasksAfterShutdownPolicy()+\r
+// "\ngetExecuteExistingDelayedTasksAfterShutdownPolicy "+mTimer.getExecuteExistingDelayedTasksAfterShutdownPolicy()+\r
+// "\ngetRemoveOnCancelPolicy "+mTimer.getRemoveOnCancelPolicy());\r
+// while(!mTimer.isTerminated())\r
+// {\r
+// StringBuilder sb=new StringBuilder();\r
+// if (mTimer.isTerminated()) sb.append("+");\r
+// if (mTimer.isShutdown()) sb.append("*");\r
+// if (mTimer.isTerminating()) sb.append("-");\r
+// ICLogger.i(sb.toString());\r
+//\r
+// try {\r
+// Thread.sleep(500);\r
+// } catch (InterruptedException e) {\r
+// e.printStackTrace();\r
+// }\r
+// }\r
+// mTimer.purge();\r
+// mTimer=null;\r
+// }\r
+\r
+ needCheckAgain=false;\r
isLocating = false;\r
startCheckTime=0L;\r
+\r
+// ICLogger.i(" stopCheckLocationResult Done ");\r
}\r
\r
// public void EqcAlgorithmInterfaceMethod3() {\r
@Override\r
public void onReceive(Context context, Intent intent) {\r
String action = intent.getAction();\r
- if (ACTION_GPSCMD.equals(action)) {\r
+ if (ACTION_GPSCMD.equals(action)) { //此消息来自工厂测试工具,测试GPS时会发送。\r
String status = intent.getStringExtra("status");\r
if( status.equals("needReopen")){\r
runtime.setFactoryTestingStat(true);\r
protected void onPause() {
super.onPause();
if (timer!=null) {
- timer.shutdown();
+ timer.shutdownNow();
+// while(!timer.isTerminated())
+// {
+// ICLogger.i("Wait for thread pool terminated");
+// try {
+// Thread.sleep(500);
+// } catch (InterruptedException e) {
+// e.printStackTrace();
+// }
+// }
timer.purge();
timer = null;
}
\r
\r
\r
+ /*LBS+WiFi混合定位*/\r
+ public static String AP02(Runtime ds) {\r
+ //示例数据:IWAP02,\r
+ // zh_cn,\r
+ // 0,\r
+ // 7,\r
+ // 460,0,\r
+ // 9520|3671|13,9520|3672|12,9520|3673|11,9520|3674|10,9520|3675|9,9520|3676|8,9520|3677|7,\r
+ // 4,\r
+ // 1|D8-24-BD-79-FA-1F|59&2|3C-46-D8-6D-CE-01|81&3|0C-4C-39-1A-7C-65|69&4|70-A8-E3-5D-D7-C0|65#\r
+// IW标识符\r
+// AP02:命令字\r
+// zh_cn: 语言标志\r
+// 0:回复标识,为0时不回复地址,为 1 时,服务器回复地址信息\r
+// 7: 表示共有7组基站\r
+// 460: MCC 国家码\r
+// 0: MNC运营商代码\r
+// 9520|3671|10: LAC|CID|dbm表示一组基站信息,后面数量需和基站组数地应 10:dbm为信号强度多基站信号强度建议从高到低排列后上传,信号强度转正数:150 – abs(dbm)\r
+// 4: 表示WIFI组数,\r
+// 1|D8-24-BD-79-FA-1F|59: ssid|mac地址|信号强度,信号强度转正数:150 – abs(信号强度)\r
+ return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP02)).append(TimeUtil.getShortDate())\r
+ .append(ds.getGPSData()).append(TimeUtil.getShortTime()).append(ds.getGPSHeading()).append(String.format("%03d",abs(ds.getSignalStrength())))\r
+ .append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")\r
+ .append(ds.getProtection()).append(ds.getWorkModeStr()).append(CMDSPLIT)\r
+ .append(ds.getLBSData()).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString();\r
+ }\r
+\r
+ //处理 定位 BP01\r
+ public void handleBP02(String cmd){\r
+ log("BP02定位接收成功");\r
+ }\r
+\r
+\r
\r
public static String APXL(String id){\r
//设备响应: IWAPXL,080835#\r
\r
public String cellidByAt;\r
\r
- public String cellinfo;\r
+ private String cellinfo;\r
\r
private String cid = "";\r
\r
ICJniUtils.enablePPG();\r
getPPGWakeLock();\r
\r
- timerPPG = new ScheduledThreadPoolExecutor(2);\r
+\r
+ if (timerPPG==null)\r
+ timerPPG = new ScheduledThreadPoolExecutor(2);\r
timerPPG.scheduleAtFixedRate(new Runnable() {\r
@Override\r
public void run() {\r
public void stopPPG(){\r
if( isTimerStarted )\r
{\r
- timerPPG.shutdown();\r
+ timerPPG.shutdownNow();\r
timerPPG.purge();\r
isTimerStarted=false;\r
}\r
if (SimSignalUtil.checkNet(mRuntime.getContextProxy().context) ) {\r
stopResponseCheckTimer();\r
if (scheduled == null) {\r
- scheduled = new ScheduledThreadPoolExecutor(2);\r
+ scheduled = new ScheduledThreadPoolExecutor(10);\r
}\r
//开始检测重新计数\r
hearBeatResendCount=0;\r
\r
if (SimSignalUtil.checkNet(mRuntime.getContextProxy().context) ) {\r
\r
-\r
//如果收到服务器响应BP03,则停止重试,否则 继续发送AP03 心跳包,且继续检查响应\r
if (this.is_heartBeat_send_success ) {\r
ICLogger.i("checkSrvResponse 成功,停止检测!");\r
\r
public void stopResponseCheckTimer(){\r
if (scheduled !=null){\r
- scheduled.shutdown();\r
+ scheduled.shutdownNow();\r
+// Runnable tmp= scheduled.getQueue().poll();\r
+// while (tmp!=null){\r
+// scheduled.remove(tmp);\r
+// }\r
+ scheduled.setContinueExistingPeriodicTasksAfterShutdownPolicy(true);\r
+ scheduled.setExecuteExistingDelayedTasksAfterShutdownPolicy(false);\r
+ scheduled.setRemoveOnCancelPolicy(true);\r
+ ICLogger.i("Wait for thread pool getContinueExistingPeriodicTasksAfterShutdownPolicy " +scheduled.getContinueExistingPeriodicTasksAfterShutdownPolicy()+\r
+ "\ngetExecuteExistingDelayedTasksAfterShutdownPolicy "+scheduled.getExecuteExistingDelayedTasksAfterShutdownPolicy()+\r
+ "\ngetRemoveOnCancelPolicy "+scheduled.getRemoveOnCancelPolicy());\r
+// while(!scheduled.isTerminated())\r
+// {\r
+// StringBuilder sb=new StringBuilder();\r
+// if (scheduled.isTerminated()) sb.append("+");\r
+// if (scheduled.isShutdown()) sb.append("*");\r
+// if (scheduled.isTerminating()) sb.append("-");\r
+// ICLogger.i(sb.toString());\r
+// try {\r
+// Thread.sleep(500);\r
+// } catch (InterruptedException e) {\r
+// e.printStackTrace();\r
+// }\r
+// }\r
scheduled.purge();\r
scheduled = null;\r
}\r
+\r
+ ICLogger.i(" stopResponseCheckTimer Done ");\r
}\r
\r
\r
import static android.telephony.TelephonyManager.CALL_STATE_RINGING;\r
import static com.enqualcomm.support.Constants.ACTION_CARE_ALARM;\r
import static com.enqualcomm.support.Constants.ACTION_HEATR_RATE_START;\r
+import static com.enqualcomm.support.Constants.SERVICE_CLS_NAME;\r
+import static com.enqualcomm.support.Constants.SERVICE_PKG_NAME;\r
\r
public class SilentManager extends AbstractInvokeHandlerService {\r
private static final long ONE_WEEK = 604800000L;\r
var3.setAction("com.enqualcomm.support.ACTION_ISSILENCE2IMESSAGE");\r
var3.putExtra("KEY_ISSILENCE", var2);\r
var1.sendBroadcast(var3);\r
- ComponentName var4 = new ComponentName("com.enqualcomm.support", "com.enqualcomm.support.CoreService");\r
+ ComponentName var4 = new ComponentName(SERVICE_PKG_NAME, SERVICE_CLS_NAME);\r
Intent var5 = (new Intent("com.enqualcomm.support.ACTION_VIDEO_END_CALL")).setComponent(var4);\r
this.mRuntime.getContextProxy().context.startService(var5);\r
}\r
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);\r
alarmManager.cancel(pendingIntent);\r
long l = SystemClock.elapsedRealtime();\r
- StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append("SDK_INT=");\r
- stringBuilder.append(Build.VERSION.SDK_INT);\r
- stringBuilder.append(",m=,");\r
- stringBuilder.append(23);\r
- stringBuilder.append(",kitkat=");\r
- stringBuilder.append(19);\r
- ICLogger.i(stringBuilder.toString());\r
if (Build.VERSION.SDK_INT >= 19) {\r
alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (minutes * 60 * 1000), pendingIntent);\r
return;\r
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);\r
alarmManager.cancel(pendingIntent);\r
long l = SystemClock.elapsedRealtime();\r
- StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append("SDK_INT=");\r
- stringBuilder.append(Build.VERSION.SDK_INT);\r
- stringBuilder.append(",m=,");\r
- stringBuilder.append(23);\r
- stringBuilder.append(",kitkat=");\r
- stringBuilder.append(19);\r
- ICLogger.i(stringBuilder.toString());\r
if (Build.VERSION.SDK_INT >= 19) {\r
alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + (seconds * 1000), pendingIntent);\r
return;\r
import com.enqualcomm.support.bean.Runtime;\r
import com.enqualcomm.support.CoreService;\r
\r
+import static com.enqualcomm.support.Constants.SERVICE_CLS_NAME;\r
+import static com.enqualcomm.support.Constants.SERVICE_PKG_NAME;\r
+\r
public class AlarmWakeUp {\r
private static long lastAlarmTime;\r
\r
// int i = Config.getAlarmCycle(runtime.getContextProxy().context);\r
int i = Config.getLocationCycle(runtime.getContextProxy().context);\r
if (l - lastAlarmTime > ((i + 1) * 60 * 1000)) { //达到cycle时间则唤醒CoreService并发送定位消息\r
- ComponentName componentName = new ComponentName("com.enqualcomm.support", "com.enqualcomm.support.CoreService");\r
+ ComponentName componentName = new ComponentName(SERVICE_PKG_NAME, SERVICE_CLS_NAME);\r
// Intent intent = (new Intent(CoreService.ACTION_ALARM)).setComponent(componentName);\r
Intent intent = (new Intent(Constants.ACTION_LOCATION_ALARM)).setComponent(componentName);\r
(runtime.getContextProxy()).context.startService(intent);\r
int j = Integer.parseInt(arrayOfString1[1]);\r
int k = Integer.parseInt(arrayOfString1[2]);\r
CellInfoUtil.BSSS = Integer.parseInt(arrayOfString1[5]);\r
-// EqcAlgorithmNative.native_EqcAlgorithmMethod4(3, j, CellInfoUtil.BSSS, CellInfoUtil.MCC, CellInfoUtil.MNC, i, k);\r
+\r
CellInfoUtil.releaseWakeLock(mWakeLock);\r
} else {\r
- String[] arrayOfString = mCellInfo.split("\\+")[0].split("@");\r
- CellInfoUtil.MCC = Integer.parseInt(arrayOfString[0]);\r
- CellInfoUtil.MNC = Integer.parseInt(arrayOfString[1]);\r
- CellInfoUtil.LAC = Integer.parseInt(arrayOfString[2]);\r
- CellInfoUtil.CELL_ID = Integer.parseInt(arrayOfString[3]);\r
- CellInfoUtil.BSSS = Integer.parseInt(arrayOfString[4]);\r
-// CellInfoUtil.access$002(2);\r
- CellInfoUtil.IS2SECOND = 2;\r
-// EqcAlgorithmNative.native_EqcAlgorithmMethod4(0, 0, CellInfoUtil.BSSS, CellInfoUtil.MCC, CellInfoUtil.MNC, CellInfoUtil.LAC, CellInfoUtil.CELL_ID);\r
- mRuntime.cellinfo = mCellInfo;\r
+\r
+ String[] stationlist = mCellInfo.split("\\+");\r
+ if (stationlist.length>0 ) {\r
+ String[] arrayOfString = stationlist[0].split("@");\r
+ CellInfoUtil.MCC = Integer.parseInt(arrayOfString[0]);\r
+ CellInfoUtil.MNC = Integer.parseInt(arrayOfString[1]);\r
+ CellInfoUtil.LAC = Integer.parseInt(arrayOfString[2]);\r
+ CellInfoUtil.CELL_ID = Integer.parseInt(arrayOfString[3]);\r
+ CellInfoUtil.BSSS = Integer.parseInt(arrayOfString[4]);\r
+ CellInfoUtil.IS2SECOND = 2;\r
+ }\r
}\r
if (Config.LOG_TOFILE)ICLogger.logToFile("LBS", mCellInfo);\r
CellInfoUtil.releaseWakeLock(mWakeLock);\r
stringBuilder.append(CellInfoUtil.CELL_ID);\r
stringBuilder.append("@");\r
stringBuilder.append(CellInfoUtil.BSSS);\r
- runtime.cellinfo = stringBuilder.toString();\r
+\r
+ runtime.setCurrentCellInfo(stringBuilder.toString());\r
+\r
// EqcAlgorithmNative.native_EqcAlgorithmMethod4(1, 0, CellInfoUtil.BSSS, CellInfoUtil.MCC, CellInfoUtil.MNC, CellInfoUtil.LAC, CellInfoUtil.CELL_ID);\r
- if (Config.LOG_TOFILE) ICLogger.logToFile("LBS", mRuntime.cellinfo);\r
+ if (Config.LOG_TOFILE) ICLogger.logToFile("LBS", mRuntime.getCurrentCellInfo());\r
\r
CellInfoUtil.releaseWakeLock(mWakeLock);\r
ICLogger.i(" setCurrentAttachCellInfo " + mCellInfo);\r
-#Wed Apr 08 22:25:32 CST 2020\r
-VERSION_CODE=396\r
+#Fri Apr 10 11:16:37 CST 2020\r
+VERSION_CODE=397\r