import android.widget.Toast;\r
\r
import com.enqualcomm.support.bean.ICLocation;\r
+import com.enqualcomm.support.utils.DeviceInfoUtil;\r
import com.enqualcomm.support.utils.ServiceUtil;\r
import com.ic.jni.ICJniUtils;\r
import com.enqualcomm.support.Constants;\r
\r
private static boolean is_wifi_network_ok = false;\r
\r
-\r
+ private static ICSmsManager smsManager=null;\r
public String getServerAlive(){\r
- int ppg=ICJniUtils.getPPG();\r
- SimSignalUtil sim=SimSignalUtil.getInstance(this);\r
- return new StringBuilder()\r
- .append(TimeUtil.getSystemTime3())\r
- .append(SimSignalUtil.hasSimCard(this)?" SIM ":" NoSIM ")\r
- .append(sim.getNetworkType()==SimSignalUtil.IS_2G?"2G":(sim.getNetworkType()==SimSignalUtil.IS_3G)?"3G":(sim.getNetworkType()==SimSignalUtil.IS_4G?"4G":"unknown"))\r
- .append(" [").append(runtime.getSignalStrength()+100).append(",Mini:").append(SimSignalUtil.getMinSignalStrength(sim.getNetworkType())).append("]")\r
- .append("\n Connecttion ").append(this.connection.isServerConnected())\r
- .append(" KeepAlive ").append(KeepAlive.isConnected)\r
- .append("\n ServerConnected is ").append(runtime.isServerProtocolConnected())\r
- .append(" \n Bat ").append(runtime.getBattery())\r
- .append(" StepCount ").append(runtime.getTotalStepCount())\r
- .append( "\n Working Mode ").append(runtime.getLocationInstance().getWorkingMod())\r
- .append(" \n Location Cycle ").append(runtime.getLocationInstance().getLocation_cycle())\r
- .append(" \n LocationType ").append(runtime.getLocationInstance().getLocationType())\r
- .append(" at ").append(runtime.getLocationInstance().getLocationTime())\r
- .append(" \n PPGTestCycle ").append(runtime.getPpgTestCycle())\r
- .append("\n PPGStarted ").append(ICJniUtils.isPPGStarted())\r
- .append(",weared ").append(ICJniUtils.isWeared())\r
- .append(",ppg ").append(ppg)\r
- .append(",bph ").append(ICJniUtils.getHighBloodPressure())\r
- .append(",bpl ").append(ICJniUtils.getLowBloodPressure())\r
- .toString();\r
+ return DeviceInfoUtil.getDeviceInfo(runtime);\r
}\r
\r
private BroadcastReceiver AtCallbackBroadcastReceiver = new BroadcastReceiver() {\r
\r
runtime.setAlarmType(false,runtime.getBatteryLow(),true,false);\r
//trigger AP10 报警定位\r
- CoreService.this.locationClient.triggerSOSLocationProcess();\r
+// CoreService.this.locationClient.triggerSOSLocationProcess();\r
+ connection.send(protocolAPIHelper.genStringMessage("AP10",protocolAPIHelper.AP10(runtime)));\r
+\r
//开启紧急定位模式,GPS 优先1分钟一次定位,持续5分钟\r
runtime.getLocationInstance().setWorkingMod(CUSTOM_MOD);\r
runtime.getLocationInstance().setLocation_cycle(1);\r
setEmegencyLocationSTOPAlarm(5);\r
\r
//5秒后开始拨打电话\r
- Observable.timer(5000L, TimeUnit.MILLISECONDS).subscribe(new Action1<Long>() {\r
+ Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1<Long>() {\r
public void call(Long param1Long) {\r
trigger_SOS_Call();\r
}\r
}\r
\r
\r
+ smsManager= new ICSmsManager(runtime);\r
+\r
//保证获取正确的计步数据及其他参数初始化\r
loadStepCount();\r
loadSettings();\r
--- /dev/null
+package com.enqualcomm.support;\r
+\r
+import android.app.Activity;\r
+import android.app.PendingIntent;\r
+import android.content.BroadcastReceiver;\r
+import android.content.ContentResolver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.database.Cursor;\r
+import android.net.Uri;\r
+import android.os.SystemClock;\r
+import android.telephony.SmsManager;\r
+import android.telephony.SmsMessage;\r
+import android.widget.Toast;\r
+\r
+import com.enqualcomm.support.bean.Runtime;\r
+import com.enqualcomm.support.utils.DeviceInfoUtil;\r
+import com.enqualcomm.support.utils.Logger;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Iterator;\r
+\r
+\r
+public class ICSmsManager {\r
+ private static String mNumber;\r
+ private static long preTimeMillis;\r
+ private Uri SMS_INBOX = Uri.parse("content://sms/inbox");\r
+ private Context mContext = null;\r
+ Runtime runtime;\r
+// ArrayList<CheckBillInfo> smsInfoList;\r
+ ICSmsManager.SmsReceiver smsReceiver;\r
+// ArrayList<byte[]> source;\r
+\r
+ public ICSmsManager( Runtime _runtime) {\r
+// this.source = src;\r
+ this.runtime = _runtime;\r
+ this.mContext = runtime.getContextProxy().context;\r
+ this.smsReceiver = new ICSmsManager.SmsReceiver();\r
+ IntentFilter intentFilter = new IntentFilter();\r
+ intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");\r
+ intentFilter.setPriority(2147483647);\r
+ this.mContext.registerReceiver(this.smsReceiver, intentFilter);\r
+\r
+\r
+ //处理返回的发送状态\r
+ String SENT_SMS_ACTION = "SENT_SMS_ACTION";\r
+ Intent sentIntent = new Intent(SENT_SMS_ACTION);\r
+ PendingIntent sentPI = PendingIntent.getBroadcast(mContext, 0, sentIntent,\r
+ 0);\r
+// register the Broadcast Receivers\r
+ mContext.registerReceiver(new BroadcastReceiver() {\r
+ @Override\r
+ public void onReceive(Context _context, Intent _intent) {\r
+ switch (getResultCode()) {\r
+ case Activity.RESULT_OK:\r
+ Toast.makeText(mContext,\r
+ "短信发送成功", Toast.LENGTH_SHORT)\r
+ .show();\r
+ break;\r
+ case SmsManager.RESULT_ERROR_GENERIC_FAILURE:\r
+ break;\r
+ case SmsManager.RESULT_ERROR_RADIO_OFF:\r
+ break;\r
+ case SmsManager.RESULT_ERROR_NULL_PDU:\r
+ break;\r
+ }\r
+ }\r
+ }, new IntentFilter(SENT_SMS_ACTION));\r
+\r
+\r
+ //处理返回的接收状态\r
+ String DELIVERED_SMS_ACTION = "DELIVERED_SMS_ACTION";\r
+// create the deilverIntent parameter\r
+ Intent deliverIntent = new Intent(DELIVERED_SMS_ACTION);\r
+ PendingIntent deliverPI = PendingIntent.getBroadcast(mContext, 0,\r
+ deliverIntent, 0);\r
+ mContext.registerReceiver(new BroadcastReceiver() {\r
+ @Override\r
+ public void onReceive(Context _context, Intent _intent) {\r
+ Toast.makeText(mContext,\r
+ "收信人已经成功接收", Toast.LENGTH_SHORT)\r
+ .show();\r
+ }\r
+ }, new IntentFilter(DELIVERED_SMS_ACTION));\r
+\r
+\r
+ }\r
+\r
+ public void sendSMS(String phonenumber, String msg) {\r
+ android.telephony.SmsManager smsManager = android.telephony.SmsManager.getDefault();\r
+ Iterator msgit = smsManager.divideMessage(msg).iterator();\r
+\r
+ while(msgit.hasNext()) {\r
+ String message= (String)msgit.next();\r
+ Logger.i("reply message to "+phonenumber+", "+message);\r
+ smsManager.sendTextMessage(phonenumber, (String)null,message, (PendingIntent)null, (PendingIntent)null);\r
+ }\r
+ }\r
+\r
+ private boolean isAdminNumber(String phoneNumb){\r
+\r
+ return true;\r
+ }\r
+ public void handleSMS_CMD(String phonenumber, String sms){\r
+ if (isAdminNumber(phonenumber)) {\r
+ if (sms.startsWith("GetDeviceInfo")) {\r
+ sendSMS(phonenumber,DeviceInfoUtil.getDeviceInfo(runtime));\r
+ }\r
+\r
+ }\r
+ }\r
+\r
+ public class SmsReceiver extends BroadcastReceiver {\r
+\r
+ public SmsReceiver() {\r
+ }\r
+\r
+ public void onReceive(Context context, Intent intent) {\r
+ long currenttime = System.currentTimeMillis();\r
+ if (currenttime - ICSmsManager.preTimeMillis > 30000L) {\r
+ ICSmsManager.preTimeMillis = currenttime;\r
+ (new Thread(new Runnable() {\r
+ public void run() {\r
+ SystemClock.sleep(3000L);\r
+ if(intent == null || intent.getAction() == null ) return;\r
+\r
+ //长短信会被分拆送来,因此可能会有多个PDU。Protocol Description Unit是短信的工业标准。 \r
+ Object[] pduArray = (Object[])intent.getExtras().get("pdus");\r
+ Logger.i("pdu number=" + pduArray.length);\r
+ String message = "";\r
+ String from = null;\r
+ for(int i = 0 ; i < pduArray.length; i ++){\r
+ SmsMessage sms = SmsMessage.createFromPdu((byte[])pduArray[i]);//将PDU转换为SmsMessage格式\r
+ Logger.i("From : " + sms.getDisplayOriginatingAddress());\r
+ Logger.i("SMS : " + sms.getDisplayMessageBody());\r
+ from = sms.getDisplayOriginatingAddress();\r
+ message += sms.getDisplayMessageBody();\r
+ }\r
+ Logger.i("收到" + from + "短信:" + message);\r
+// Toast.makeText(context, "收到" + from + "短信:" + message, Toast.LENGTH_LONG).show();\r
+ handleSMS_CMD(from,message);\r
+ }\r
+ })).start();\r
+ }\r
+\r
+ }\r
+\r
+ }\r
+}
\ No newline at end of file
import android.net.wifi.WifiManager;\r
import android.os.Build;\r
import android.os.Handler;\r
+import android.os.Message;\r
import android.os.Parcelable;\r
import android.os.PowerManager;\r
import android.os.SystemClock;\r
private boolean wakeLockWifiSet = false;\r
\r
private String wifiDataForCm;\r
- \r
+\r
+\r
private boolean wifiEnabled;\r
- \r
+\r
+\r
+ private static Handler mSendMSGHandler=new Handler(new Handler.Callback() {\r
+ @Override\r
+ public boolean handleMessage(Message message) {\r
+\r
+ switch (message.what){\r
+ case 1:\r
+\r
+ new Thread(new Runnable() {\r
+ @Override\r
+ public void run() {\r
+ sendThread();\r
+ }\r
+ }).start();\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+ return false;\r
+ }\r
+ });\r
+\r
static {\r
\r
}\r
}\r
return ret;\r
}\r
- public static void triggerSendThread(){\r
+ public static void triggerSendThread() {\r
+\r
+ mSendMSGHandler.sendEmptyMessage(1);\r
+ }\r
+\r
+ public static void sendThread(){\r
if (mRuntime.getUseQueue()) {\r
- lock.lock();\r
+ Logger.i("queue locked "+mLock.isLocked());\r
+ if(mLock.isLocked()) return;\r
+ mLock.lock();\r
try\r
{\r
String str;\r
}\r
Logger.i("send cached cmd: \n"+str);\r
}finally {\r
- if(lock!=null && lock.isLocked())\r
- lock.unlock();\r
+ if(mLock!=null && mLock.isLocked())\r
+ mLock.unlock();\r
}\r
\r
}\r
} \r
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + 10000L, pendingIntent);\r
}\r
- \r
+\r
class ConWifiReceiver extends BroadcastReceiver {\r
- public void onReceive(final Context context, Intent param1Intent) {\r
- String str = param1Intent.getAction();\r
- StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append(" receive action=");\r
- stringBuilder.append(str);\r
- stringBuilder.append(" isAppSetWifi=");\r
- stringBuilder.append(isAppSetWifi);\r
- Logger.i(stringBuilder.toString());\r
- if (str.equals("android.net.conn.CONNECTIVITY_CHANGE")) {\r
- if (isAppSetWifi == 0)\r
- return; \r
- if (isAppSetWifi == 1) {\r
-// Deliver.access$402(0);\r
+ ConWifiReceiver() {\r
+ }\r
+\r
+ public void onReceive(final Context var1, Intent var2) {\r
+ String var3 = var2.getAction();\r
+ StringBuilder var4 = new StringBuilder();\r
+ var4.append(" receive action=");\r
+ var4.append(var3);\r
+ var4.append(" isAppSetWifi=");\r
+ var4.append(Deliver.isAppSetWifi);\r
+ Logger.i(var4.toString());\r
+ if (var3.equals("android.net.conn.CONNECTIVITY_CHANGE")) {\r
+ if (Deliver.isAppSetWifi == 0) {\r
+ return;\r
+ }\r
+\r
+ if (Deliver.isAppSetWifi == 1) {\r
+ Deliver.isAppSetWifi = 0;\r
if (Deliver.this.delayHandler != null) {\r
Deliver.this.delayHandler.removeCallbacks(Deliver.this.delayTh);\r
-// Deliver.access$602(Deliver.this, null);\r
- } \r
- } \r
- WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);\r
- if (((ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE)).getNetworkInfo(1).isConnected()) {\r
+ Deliver.this.delayHandler = null;\r
+ }\r
+ }\r
+\r
+ WifiManager var5 = (WifiManager)var1.getSystemService(Context.WIFI_SERVICE);\r
+ if (((ConnectivityManager)var1.getSystemService(Context.CONNECTIVITY_SERVICE)).getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()) {\r
Logger.i("连接成功");\r
-// Deliver.access$402(0);\r
+ Deliver.isAppSetWifi = 0;\r
Deliver.haveSendH42 = true;\r
- Deliver.this.mConnection.connect(Deliver.this.mRuntime.getSrvIP(), Deliver.this.mRuntime.getPort());\r
+ Deliver.this.mConnection.connect(Deliver.this.mRuntime.getHost(), Deliver.this.mRuntime.getPort());\r
if (Deliver.this.delayHandler != null) {\r
Deliver.this.delayHandler.removeCallbacks(Deliver.this.delayTh);\r
-// Deliver.access$602(Deliver.this, null);\r
+ Deliver.this.delayHandler = null;\r
}\r
- context.unregisterReceiver(Deliver.this.mMyWifiReceiver);\r
-// Deliver.access$502(Deliver.this, null);\r
-// Deliver.access$202(Deliver.this, false);\r
+\r
+ var1.unregisterReceiver(Deliver.this.mMyWifiReceiver);\r
+ Deliver.this.mMyWifiReceiver = null;\r
+ Deliver.this.wakeLockWifiSet = false;\r
Deliver.this.releaseOneWakeLock();\r
- Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime);\r
- return;\r
- } \r
- stringBuilder = new StringBuilder();\r
- stringBuilder.append("连接失败 222 delayHandler=");\r
- stringBuilder.append(Deliver.this.delayHandler);\r
- Logger.i(stringBuilder.toString());\r
-// Deliver.access$402(2);\r
- wifiManager.reconnect();\r
- if (Deliver.this.delayHandler == null) {\r
- Deliver.this.delayHandler =new Handler();\r
- Deliver.this.delayTh= new Runnable() {\r
- public void run() {\r
- StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append("连接失败 超时 wifiEnabled=");\r
- stringBuilder.append(wifiEnabled);\r
- Logger.i(stringBuilder.toString());\r
- if (isAppSetWifi == 1)\r
- return;\r
-// Deliver.access$402(0);\r
- context.unregisterReceiver(mMyWifiReceiver);\r
- mMyWifiReceiver=null;\r
- WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);\r
- if (((ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE)).getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()) {\r
+ Deliver.WifiListWakeLock = Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime);\r
+ } else {\r
+ StringBuilder var6 = new StringBuilder();\r
+ var6.append("连接失败 222 delayHandler=");\r
+ var6.append(Deliver.this.delayHandler);\r
+ Logger.i(var6.toString());\r
+ Deliver.isAppSetWifi = 2;\r
+ var5.reconnect();\r
+ if (Deliver.this.delayHandler == null) {\r
+ Deliver.this.delayHandler = new Handler();\r
+ Deliver.this.delayTh = new Runnable() {\r
+ public void run() {\r
+ StringBuilder var1x = new StringBuilder();\r
+ var1x.append("连接失败 超时 wifiEnabled=");\r
+ var1x.append(Deliver.this.wifiEnabled);\r
+ Logger.i(var1x.toString());\r
+ if (Deliver.isAppSetWifi != 1) {\r
+ Deliver.isAppSetWifi = 0;\r
+ var1.unregisterReceiver(Deliver.this.mMyWifiReceiver);\r
+ Deliver.this.mMyWifiReceiver = null;\r
+ WifiManager var3 = (WifiManager)var1.getSystemService(Context.WIFI_SERVICE);\r
+ if (((ConnectivityManager)var1.getSystemService(Context.CONNECTIVITY_SERVICE)).getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()) {\r
Logger.i("连接成功 1");\r
Deliver.haveSendH42 = true;\r
- mConnection.connect(mRuntime.getSrvIP(), mRuntime.getPort());\r
-// Deliver.access$202(ConWifiReceiver.this.this$0, false);\r
- releaseOneWakeLock();\r
- Deliver.WakeLockForGetWifiList(mRuntime);\r
+ Deliver.this.mConnection.connect(Deliver.this.mRuntime.getHost(), Deliver.this.mRuntime.getPort());\r
+ Deliver.this.wakeLockWifiSet = false;\r
+ Deliver.this.releaseOneWakeLock();\r
+ Deliver.WifiListWakeLock = Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime);\r
} else {\r
- int i = wifiManager.getConnectionInfo().getNetworkId();\r
- if (i != -1) {\r
- wifiManager.disableNetwork(i);\r
-// ServiceUtil.offerQueue(API.H42(ConWifiReceiver.this.this$0.mRuntime, "3"));\r
-// Deliver.access$202(ConWifiReceiver.this.this$0, false);\r
- releaseOneWakeLock();\r
- WakeLockForGetWifiList(mRuntime);\r
+ int var2 = var3.getConnectionInfo().getNetworkId();\r
+ if (var2 != -1) {\r
+ var3.disableNetwork(var2);\r
+// ServiceUtil.offerQueue(API.H42(Deliver.this.mRuntime, "3"));\r
+ Deliver.this.wakeLockWifiSet = false;\r
+ Deliver.this.releaseOneWakeLock();\r
+ Deliver.WifiListWakeLock = Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime);\r
} else {\r
Logger.i("连接失败 2-2");\r
-// ServiceUtil.offerQueue(API.H42(ConWifiReceiver.this.this$0.mRuntime, "3"));\r
-// Deliver.access$202(ConWifiReceiver.this.this$0, false);\r
- releaseOneWakeLock();\r
- Deliver.WakeLockForGetWifiList(mRuntime);\r
+// ServiceUtil.offerQueue(API.H42(Deliver.this.mRuntime, "3"));\r
+ Deliver.this.wakeLockWifiSet = false;\r
+ Deliver.this.releaseOneWakeLock();\r
+ Deliver.WifiListWakeLock = Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime);\r
+ }\r
+\r
+ if (!Deliver.this.wifiEnabled) {\r
+ var3.setWifiEnabled(false);\r
}\r
- if (!wifiEnabled)\r
- wifiManager.setWifiEnabled(false);\r
}\r
-// Deliver.access$602(ConWifiReceiver.this.this$0, null);\r
+\r
+ Deliver.this.delayHandler = null;\r
}\r
}\r
- ;\r
- Deliver.this.delayHandler.postDelayed(Deliver.this.delayTh, 30000L);\r
- } \r
- } \r
+ };\r
+ Deliver.this.delayHandler.postDelayed(Deliver.this.delayTh, 30000L);\r
+ }\r
+ }\r
+ }\r
+\r
}\r
}\r
\r
paramRuntime.setServerProtocolConnected(true);\r
paramRuntime.getContextProxy().sendBroadcast(isConnected);\r
LauncherCtrl.getInstance(this.mContext).setStatusBarIcon("server_connected", STATUS_BAR_STATE_SERVER_CONNECTED_ON);\r
+// Deliver.triggerSendThread(); //链接上就尝试清除 buffer中的数据\r
}\r
return false;\r
}\r
import android.telephony.TelephonyManager;\r
\r
import com.enqualcomm.support.bean.StepCount;\r
+import com.enqualcomm.support.bean.Runtime;\r
+import com.enqualcomm.support.service.KeepAlive;\r
+import com.ic.jni.ICJniUtils;\r
\r
import java.io.FileInputStream;\r
import java.util.ArrayList;\r
}\r
\r
\r
+ public static String getDeviceInfo(Runtime runtime){\r
+\r
+ int ppg= ICJniUtils.getPPG();\r
+ SimSignalUtil sim=SimSignalUtil.getInstance(runtime.getContextProxy().context);\r
+ return new StringBuilder()\r
+ .append(TimeUtil.getSystemTime3())\r
+ .append(SimSignalUtil.hasSimCard(runtime.getContextProxy().context)?" SIM ":" NoSIM ")\r
+ .append(sim.getNetworkType()==SimSignalUtil.IS_2G?"2G":(sim.getNetworkType()==SimSignalUtil.IS_3G)?"3G":(sim.getNetworkType()==SimSignalUtil.IS_4G?"4G":"unknown"))\r
+ .append(" [").append(runtime.getSignalStrength()+100).append(",Mini:").append(SimSignalUtil.getMinSignalStrength(sim.getNetworkType())).append("]")\r
+ .append("\n KeepAlive ").append(KeepAlive.isConnected)\r
+ .append("\n ServerConnected is ").append(runtime.isServerProtocolConnected())\r
+ .append(" \n Bat ").append(runtime.getBattery())\r
+ .append(" StepCount ").append(runtime.getTotalStepCount())\r
+ .append( "\n Working Mode ").append(runtime.getLocationInstance().getWorkingMod())\r
+ .append(" \n Location Cycle ").append(runtime.getLocationInstance().getLocation_cycle())\r
+ .append(" \n LocationType ").append(runtime.getLocationInstance().getLocationType())\r
+ .append(" at ").append(runtime.getLocationInstance().getLocationTime())\r
+ .append(" \n PPGTestCycle ").append(runtime.getPpgTestCycle())\r
+ .append("\n PPGStarted ").append(ICJniUtils.isPPGStarted())\r
+ .append(",weared ").append(ICJniUtils.isWeared())\r
+ .append(",ppg ").append(ppg)\r
+ .append(",bph ").append(ICJniUtils.getHighBloodPressure())\r
+ .append(",bpl ").append(ICJniUtils.getLowBloodPressure())\r
+ .toString();\r
+ }\r
+\r
public static void setLockSimInfo(Context paramContext) {\r
Settings.System.putInt(paramContext.getContentResolver(), "com.eqc.watch.launcher.SimIsBlocked", 1); }\r
}\r
-#Sun Feb 09 01:48:12 CST 2020\r
-VERSION_CODE=347\r
+#Mon Feb 10 23:47:07 CST 2020\r
+VERSION_CODE=348\r