<action android:name="com.ic.protocol.startsrv" />
<action android:name="com.enqualcomm.support.ACTION_ALARM" />
<action android:name="com.enqualcomm.support.HEART_ALARM" />
+
<action android:name="com.ic.protocol.startsrv" />
</intent-filter>
<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.eqc.heartrate.action.SILENT_START" />
</intent-filter>
</receiver>
\r
import com.ic.jni.ICJniUtils;\r
import com.ic.protocol.bean.Runtime;\r
+import com.ic.protocol.service.protocolMainServer;\r
import com.ic.protocol.utils.CellInfoUtil;\r
import com.ic.protocol.utils.FileOutputUtil;\r
import com.ic.protocol.utils.Logger;\r
// GSensorListener.getStepCountOver=false;\r
// EqcAlgorithmNative.native_EqcAlgorithmMethod6(0.0F, 0.0F, 0.0F, GSensorListener.this.CURRENT_STEP);\r
Context context = GSensorListener.this.mContext;\r
- FileOutputUtil.fileOutput(context, "CURRENT_STEP", stringBuilder1.toString());\r
+ FileOutputUtil.fileOutput(protocolMainServer.getInstance().getRuntime().getCacheDir(), "CURRENT_STEP", stringBuilder1.toString());\r
// GSensorListener.access$502(GSensorListener.this, null);\r
GSensorListener.this.releaseWakeLock(GSensorListener.this.mWakeLock);\r
}\r
StringBuilder stringBuilder2 = new StringBuilder();\r
stringBuilder2.append("CURRENT_STEP=");\r
stringBuilder2.append(this.CURRENT_STEP);\r
- FileOutputUtil.fileOutput(context, "CURRENT_STEP", stringBuilder2.toString());\r
+ FileOutputUtil.fileOutput(protocolMainServer.getInstance().getRuntime().getCacheDir(), "CURRENT_STEP", stringBuilder2.toString());\r
this.sensorManager.unregisterListener(this);\r
releaseWakeLock(this.mWakeLock);\r
}\r
&& runtime.getLocationInstance().getMCC().equals("0")\r
&& runtime.getLocationInstance().getGSMStationCID() ==0\r
&& runtime.getLocationInstance().getLAC()==0)) ?false:true;\r
- Logger.i("getMNC "+runtime.getLocationInstance().getMNC()+" getMCC "+runtime.getLocationInstance().getMCC()+" getGSMStationCID " + runtime.getLocationInstance().getGSMStationCID()+ " getLAC "+runtime.getLocationInstance().getLAC()+" changed "+runtime.getLocationInstance().isDataChanged());\r
+// Logger.i("getMNC "+runtime.getLocationInstance().getMNC()+" getMCC "+runtime.getLocationInstance().getMCC()+" getGSMStationCID " + runtime.getLocationInstance().getGSMStationCID()+ " getLAC "+runtime.getLocationInstance().getLAC()+" changed "+runtime.getLocationInstance().isDataChanged());\r
Logger.i("lbs_ok "+lbs_ok+" waitAndSendLocation wifi_ok " + wifi_ok+ " gps_ok "+gps_ok + " mode "+mode);\r
\r
switch(mode){\r
\r
if ((lbs_ok && timeout==true) ||(lbs_ok && gps_ok && wifi_ok )||(lbs_ok&&gps_nosignal&&wifi_ok)){\r
\r
- Logger.i("offerQueue "+protocolAPIHelper.AP01(runtime));\r
- connection.send(protocolAPIHelper.genStringMessage("AP01", protocolAPIHelper.AP01(runtime)));\r
+ String AP01_CMD=protocolAPIHelper.AP01(runtime);\r
+ if (connection.isServerConnected() && KeepAlive.isConnected)\r
+ {\r
+ Logger.i("gps first send "+AP01_CMD);\r
+ connection.send(protocolAPIHelper.genStringMessage("AP01", AP01_CMD));\r
+ }else{\r
+ Logger.i("offline skip gps "+AP01_CMD);\r
+ FileOutputUtil.fileOutput(runtime.getCacheDir(),"APILog"," offlineskip "+AP01_CMD);\r
+ }\r
+\r
// triggerSendThread();\r
if (mTimer!=null){\r
mTimer.cancel();\r
String AP01_CMD=protocolAPIHelper.AP01(runtime);\r
if (connection.isServerConnected() && KeepAlive.isConnected)\r
{\r
- Logger.i("send "+AP01_CMD);\r
- connection.send(protocolAPIHelper.genStringMessage("AP01", protocolAPIHelper.AP01(runtime)));\r
+ Logger.i("wifi first send "+AP01_CMD);\r
+ connection.send(protocolAPIHelper.genStringMessage("AP01", AP01_CMD));\r
}else{\r
- Logger.i("offline skip "+AP01_CMD);\r
- FileOutputUtil.fileOutput(runtime.getContextProxy().context,"APILog"," offlineskip "+AP01_CMD);\r
+ Logger.i("offline skip wifi "+AP01_CMD);\r
+ FileOutputUtil.fileOutput(runtime.getCacheDir(),"APILog"," offlineskip "+AP01_CMD);\r
}\r
// triggerSendThread();\r
if (mTimer!=null){\r
private static int WorkingMod=1;\r
private static int forceLocation=0;\r
public void onReceive(StringMessage paramStringMessage) {\r
- Logger.i("LocationClient onReceive " +paramStringMessage.cmd()+" linkOK "+linkOK );\r
- if ("Sport:OK".equals(paramStringMessage.cmd()))\r
- this.mPedometer2 = this.H12StepCount;\r
-\r
-\r
+// Logger.i("LocationClient onReceive " +paramStringMessage.cmd()+" linkOK "+linkOK );\r
+// if ("Sport:OK".equals(paramStringMessage.cmd()))\r
+// this.mPedometer2 = this.H12StepCount;\r
+ Logger.i("LocationClient onReceive " +paramStringMessage.cmd() );\r
\r
// if (linkOK)\r
// return;\r
this.startLocationProcess(mod);\r
WorkingMod=mod;\r
\r
-\r
-\r
}\r
\r
\r
stringBuilder.append(stringMessage.cmd());\r
stringBuilder.append(", ");\r
stringBuilder.append(stringMessage.isFromCache());\r
- FileOutputUtil.fileOutput(context, "MessageInfo", stringBuilder.toString());\r
+ FileOutputUtil.fileOutput(runtime.getCacheDir(), "MessageInfo", stringBuilder.toString());\r
Logger.i(stringBuilder.toString());\r
if( connection.isServerConnected() ==false && !KeepAlive.isConnected ) {\r
\r
\r
stop(200);\r
}\r
- FileOutputUtil.fileOutput(this.runtime.getContextProxy().context,"GPS",sb2.toString());\r
+ FileOutputUtil.fileOutput(this.runtime.getCacheDir(),"GPS",sb2.toString());\r
\r
Logger.i( sb2.toString());\r
getBestLocation(locationManager,status);\r
\r
Logger.i( sb.toString());\r
\r
- FileOutputUtil.fileOutput(this.runtime.getContextProxy().context,"GPS",sb.toString());\r
+ FileOutputUtil.fileOutput(this.runtime.getCacheDir(),"GPS",sb.toString());\r
runtime.getLocationInstance().setLocation(latitude,longitude,speed,0,status.getMaxSatellites());\r
}\r
\r
this.runtime.setCellinfo(gsmSb.toString());\r
this.runtime.setCdmaInfo(null);\r
Logger.i("GsmCellLocation "+ gsmSb.toString());\r
- FileOutputUtil.fileOutput(this.context, "onCellLocationChanged", gsmSb.toString());\r
+ FileOutputUtil.fileOutput(this.runtime.getCacheDir(), "onCellLocationChanged", gsmSb.toString());\r
\r
List neighboringCell_list = telephonyManager.getNeighboringCellInfo();\r
if (neighboringCell_list != null && !neighboringCell_list.isEmpty()) {\r
cdmaSB.append(",");\r
cdmaSB.append(this.mLastSignal);\r
Logger.i("CdmaCellLocation");\r
- Context var16 = this.context;\r
StringBuilder var8 = new StringBuilder();\r
var8.append("CDMA_info=");\r
var8.append(cdmaSB.toString());\r
this.runtime.setCellinfo(null);\r
this.runtime.setCdmaInfo(cdmaSB.toString());\r
\r
- FileOutputUtil.fileOutput(var16, "onCellLocationChanged", var8.toString());\r
+ FileOutputUtil.fileOutput(this.runtime.getCacheDir(), "onCellLocationChanged", var8.toString());\r
return cdmaSB.toString();\r
\r
}\r
AP33,\r
BP33,//工作模式\r
APXL,\r
- BPXL,//测量血压\r
+ BPXL,//测量心率\r
+ APXY,\r
+ BPXY,//测量血压\r
+ APJZ,\r
+ BPJZ,//血压校准\r
AP84,\r
BP84,//白名单开关\r
AP85,\r
cmdMap.put(CMD_TYPE.BP33, "BP33");\r
cmdMap.put(CMD_TYPE.APXL, "APXL");\r
cmdMap.put(CMD_TYPE.BPXL, "BPXL");\r
+ cmdMap.put(CMD_TYPE.APXY, "APXY");\r
+ cmdMap.put(CMD_TYPE.BPXY, "BPXY");\r
+ cmdMap.put(CMD_TYPE.APJZ, "APJZ");\r
+ cmdMap.put(CMD_TYPE.BPJZ, "BPJZ");\r
cmdMap.put(CMD_TYPE.AP84, "AP84");\r
cmdMap.put(CMD_TYPE.BP84, "BP84");\r
cmdMap.put(CMD_TYPE.AP85, "AP85");\r
.append(ds.getLBSData()).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString();\r
}\r
\r
+\r
+ public static String APXL(String id){\r
+//设备响应: IWAPXL,080835#\r
+ //080835:指令流水号\r
+ return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXL))\r
+ .append(CMDSPLIT).append(id)\r
+ .append(CMDEND).toString();\r
+ }\r
+\r
+ /**\r
+ * 测量心率\r
+ * @param cmd\r
+ * @param connection\r
+ */\r
+ public void handleBPXL(String cmd,Connection connection){\r
+ //IWBPXL,353456789012345,080835#\r
+ //说明:\r
+ //IW:标识符\r
+ //BPXL : 命令字符\r
+ //353456789012345:IMEI号,设备唯一ID\r
+ //080835 :指令流水号\r
+ //设备响应: IWAPXL,080835#\r
+ //080835:指令流水号\r
+ String[] list=cmd.split(CMDSPLIT);\r
+ if (list.length==3){\r
+ String index=list[2];\r
+ String imei=list[1];\r
+ Logger.i("Handle BPXL IMEI "+imei+",index "+index);\r
+ connection.send(protocolAPIHelper.genStringMessage("APXL",APXL(index)));\r
+ }else{\r
+ Logger.i("BPXL format error!");\r
+ }\r
+\r
+ }\r
+\r
+ public static String APXY(String id){\r
+//设备响应: IWAPXY,080835#\r
+ //080835:指令流水号\r
+ return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APXY))\r
+ .append(CMDSPLIT).append(id)\r
+ .append(CMDEND).toString();\r
+ }\r
+\r
+ /**\r
+ * 测量血压\r
+ * @param cmd\r
+ * @param connection\r
+ */\r
+ public void handleBPXY(String cmd,Connection connection){\r
+ //IWBPXY,353456789012345,080835#\r
+ //说明:\r
+ //IW:标识符\r
+ //BPXL : 命令字符\r
+ //353456789012345:IMEI号,设备唯一ID\r
+ //080835 :指令流水号\r
+ //设备响应: IWAPXY,080835#\r
+ //080835:指令流水号\r
+ String[] list=cmd.split(CMDSPLIT);\r
+ if (list.length==3){\r
+ String index=list[2];\r
+ String imei=list[1];\r
+ Logger.i("Handle BPXY IMEI "+imei+",index "+index);\r
+ connection.send(protocolAPIHelper.genStringMessage("APXY",APXY(index)));\r
+ }else{\r
+ Logger.i("BPXY format error!");\r
+ }\r
+\r
+ }\r
+\r
+\r
+\r
+ public static String APJZ(String id,String BPH,String BPL,String Age,String Sex){\r
+ //设备响应: IWAPJZ,792997,120,85,42,1#\r
+ //792997:指令流水号\r
+ // 高压120,低压85,年龄42,1 男性\r
+ return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APJZ))\r
+ .append(CMDSPLIT).append(id)\r
+ .append(CMDSPLIT).append(BPH)\r
+ .append(CMDSPLIT).append(BPL)\r
+ .append(CMDSPLIT).append(Age)\r
+ .append(CMDSPLIT).append(Sex)\r
+ .append(CMDEND).toString();\r
+ }\r
+\r
+ /**\r
+ *\r
+ * @param cmd\r
+ * @param connection\r
+ * @param runtime\r
+ */\r
+ public void handleBPJZ(String cmd,Connection connection,Runtime runtime){\r
+ //cmdbuf.size 42 IWBPJZ,867155030001063,199600,120,85,45,1# 高压120,低压85,年龄45,男性\r
+// cmdbuf.size 42 IWBPJZ,867155030001063,909957,120,85,42,0# 高压120,低压85,年龄42,女性\r
+ //IWBPJZ,353456789012345,080835,110,75#\r
+ //说明:\r
+ //IW:标识符\r
+ //BPJZ : 命令字符\r
+ //353456789012345:IMEI号,设备唯一ID\r
+ //110:高压值\r
+ //75:低压值\r
+ //080835 :指令流水号\r
+ //设备响应: IWAPJZ,792997,120,85,42,1#\r
+ //792997:指令流水号\r
+ String[] list=cmd.split(CMDSPLIT);\r
+ if (list.length==7){\r
+ String index=list[2];\r
+ String imei=list[1];\r
+ String strBPH=list[3];\r
+ String strBPL=list[4];\r
+ String strAge=list[5];\r
+ String strSex=list[6];\r
+\r
+ connection.send(protocolAPIHelper.genStringMessage("APJZ",APJZ(index,strBPH,strBPL,strAge,strSex)));\r
+ runtime.getHRS().setXY_Ref(Integer.valueOf(strBPH),Integer.valueOf(strBPL),Integer.valueOf(strAge),Integer.valueOf(strSex));\r
+ Logger.i("Handle BPJZ IMEI "+imei+",index "+index+", BPH "+strBPH+", BPL "+strBPL+", Age "+ strAge +", Sex "+ (strSex.equals("1")?"男":"女"));\r
+ }else{\r
+ Logger.i("BPXY format error!");\r
+ }\r
+ }\r
/*语音下行反馈*/\r
public static String AP28(String name, String msg, int packagecount, int currentpackageindex, int received_success) {\r
//示例数据:IWAP28,D3590D54,xxxx,6,1,1#\r
.append(CMDEND).toString();\r
}\r
\r
- /*心率数据上传*/\r
+\r
+ /**\r
+ * 心率上传,返回协议字串\r
+ * @param ds\r
+ * @return\r
+ */\r
public static String AP49(Runtime ds){\r
//示例数据:IWAP49,68##\r
return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP49))\r
- .append(CMDSPLIT).append(ds.get)\r
+ .append(CMDSPLIT).append(ds.getHRS().getPPG())\r
.append(CMDEND).toString();\r
\r
}\r
+\r
+ /**\r
+ * 返回上传心率血压的协议字串\r
+ * @param ds\r
+ * @return\r
+ */\r
+ public static String APHT(Runtime ds){\r
+ //IWAPHT,60,130,85#\r
+ //说明:\r
+ //IW:标识符\r
+ //APHT : 命令字符\r
+ //60 : 表示心率\r
+ //130: 血压高压 [收缩压]\r
+ //85 : 血压低压 [舒张压]\r
+ //平台响应: IWBPHT#\r
+ //表示平台已接收,可不作响应\r
+ return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))\r
+ .append(CMDSPLIT).append(ds.getHRS().getPPG())\r
+ .append(CMDSPLIT).append(ds.getHRS().getBPH())\r
+ .append(CMDSPLIT).append(ds.getHRS().getBPL())\r
+ .append(CMDEND).toString();\r
+ }\r
+\r
// 立即定位指令(长链接有效)\r
public void handleBP16(Connection connection,Runtime runtime,String cmd){\r
//示例数据:IWBP16,867155030001063,335386\r
.append(CMDSPLIT).append(cmdindex)\r
.append(CMDEND).toString();\r
}\r
- /*上传心率与血压*/\r
- public static String APHT(Runtime ds){\r
- //示例数据:IWAPHT,60,130,85#\r
- // 60 : 表示心率\r
- //130: 血压高压 [收缩压]\r
- //85 : 血压低压 [舒张压]\r
- return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APHT))\r
- .append(CMDSPLIT).append("60")\r
- .append(CMDSPLIT).append("130")\r
- .append(CMDSPLIT).append("85")\r
- .append(CMDEND).toString();\r
\r
- }\r
/*通过基站获取时间和坐标*/\r
public static String APTM(Runtime ds){\r
//示例数据:IWAPTM,460,0,9750,3613#\r
private String latitude;\r
\r
private LBSHelper lbsHelper;\r
- \r
+\r
+\r
+ private heartRateStatus HRS=null;\r
+\r
// private String location;\r
\r
private boolean lockSimInfo=false;\r
public int totalStepCount;\r
\r
\r
+ public heartRateStatus getHRS(){\r
+ return HRS;\r
+ }\r
+\r
+ public void setHRS(heartRateStatus hrs){\r
+ HRS=hrs;\r
+ }\r
public int getLastStepCount(){\r
return lastStepCount;\r
}\r
\r
public String week;\r
\r
- public StheartRate(String paramString1, String paramString2, String paramString3, String paramString4) {\r
- this.start = paramString1;\r
- this.end = paramString2;\r
- this.week = paramString3;\r
- this.status = paramString4;\r
+ public StheartRate(String _start, String _end, String _week, String _status) {\r
+ this.start = _start;\r
+ this.end = _end;\r
+ this.week = _week;\r
+ this.status = _status;\r
}\r
\r
- public StheartRate(String paramString1, String paramString2, String paramString3, String paramString4, String paramString5) {\r
- this.start = paramString1;\r
- this.end = paramString2;\r
- this.week = paramString3;\r
- this.status = paramString4;\r
- this.interval = paramString5;\r
+ public StheartRate(String _start, String _end, String _week, String _status, String _inteval) {\r
+ this.start = _start;\r
+ this.end = _end;\r
+ this.week = _week;\r
+ this.status = _status;\r
+ this.interval = _inteval;\r
}\r
\r
public boolean equals(Object obj) {\r
public class heartRateStatus {\r
\r
private int lastHeartrate;\r
+ private String lastTestTime;\r
+ private int lastBPH;\r
+ private int lastBPL;\r
+ private int BPH_ref;\r
+ private int BPL_ref;\r
+ private int Age;\r
+ private int Sex;\r
+\r
+\r
+ public void setXY_Ref(int refBPH,int refBPL,int refSex,int refAge){\r
+ BPH_ref=refBPH;\r
+ BPL_ref=refBPL;\r
+ Age=refAge;\r
+ Sex=refSex;\r
+ }\r
+\r
+\r
private HEARTRATE_WORKINGSTAT currentStat;\r
public enum HEARTRATE_WORKINGSTAT {\r
HEARTRATE_CLOSED,\r
\r
public HEARTRATE_WORKINGSTAT getHeartrateWorkingStat(){\r
\r
- int PPG=ICJniUtils.getPPG();//调用底层函数保证状态更新。\r
- if (ICJniUtils.isPPGStarted()==1 ){\r
- if ( ICJniUtils.isWeared()==1) {\r
- if (PPG > 0) {\r
- currentStat = HEARTRATE_WORKINGSTAT.HEARTRATE_TEST_SUCCESS;\r
- } else {\r
- currentStat = HEARTRATE_WORKINGSTAT.HEARTRATE_WARED_AND_TESTING;\r
- }\r
- }else{\r
- currentStat=HEARTRATE_WORKINGSTAT.HEARTRATE_NOTWARED;\r
- }\r
- }else{\r
- currentStat=HEARTRATE_WORKINGSTAT.HEARTRATE_CLOSED;\r
- }\r
return currentStat;\r
}\r
\r
public void setHeartrateStat(HEARTRATE_WORKINGSTAT stat){\r
+\r
currentStat = stat;\r
}\r
- public int getHeartrateData(){\r
+ public int getPPG(){\r
+\r
return lastHeartrate;\r
}\r
\r
- public void setLastHeartrate(int value){\r
+ public int getBPH() {\r
+ int BPH=lastBPH;\r
+ if (lastBPH > BPH_ref+20)\r
+ BPH=BPL_ref+20;\r
+ if (lastBPH < BPH_ref-20)\r
+ BPH=BPH_ref-20;\r
+ return BPH;\r
+ }\r
+ public int getBPL() {\r
+\r
+ int BPL=lastBPL;\r
+ if (lastBPL > BPL_ref+20)\r
+ BPL=BPL_ref+20;\r
+ if (lastBPL < BPL_ref-20)\r
+ BPL=BPL_ref-20;\r
+ return BPL;\r
+ }\r
+\r
+ public String getTestTime(){\r
+ return lastTestTime;\r
+ }\r
+ public void setLastTestTime(String testtime){\r
+ lastTestTime=testtime;\r
+ }\r
+\r
+\r
+ public void setLastHeartrate(int value,int bph,int bpl){\r
lastHeartrate=value;\r
+ lastBPH=bph;\r
+ lastBPL=bpl;\r
}\r
}\r
import android.content.Context;\r
import android.content.Intent;\r
import android.content.IntentFilter;\r
-import android.os.SystemClock;\r
+import android.net.Uri;\r
+import android.os.Bundle;\r
+import android.os.Handler;\r
+import android.os.Message;\r
+import android.os.Messenger;\r
+import android.os.PowerManager;\r
\r
-import com.eiot.watch_lib.LauncherCtrl;\r
+import com.ic.jni.ICJniUtils;\r
+import com.ic.protocol.LocationClient;\r
import com.ic.protocol.adapter.protocolAPIHelper;\r
import com.ic.protocol.bean.Runtime;\r
import com.ic.protocol.bean.StringMessage;\r
-import com.ic.protocol.service.base.AbstractConnectionService;\r
-import com.ic.protocol.utils.AlarmWakeUp;\r
+import com.ic.protocol.bean.heartRateStatus;\r
+import com.ic.protocol.service.base.AbstractInvokeHandlerService;\r
import com.ic.protocol.utils.Connection;\r
import com.ic.protocol.utils.Logger;\r
import com.ic.protocol.utils.NettyConnection;\r
-import com.ic.protocol.utils.NetworkObservable;\r
-\r
-import rx.Subscription;\r
-import rx.functions.Action1;\r
-\r
-import static com.eiot.watch_lib.LauncherCtrl.STATUS_BAR_STATE_SERVER_CONNECTED_OFF;\r
-import static com.eiot.watch_lib.LauncherCtrl.STATUS_BAR_STATE_SERVER_CONNECTED_ON;\r
-\r
-public class HeartRateManager extends AbstractConnectionService {\r
- private static final long HEARTBEAT_TIMEOUT = 660000L;\r
- private static String TAG = HeartRateManager.class.getSimpleName();\r
- public static boolean connectionError = false;\r
- \r
- public static boolean isConnected = false;\r
- \r
- private static boolean isInSleepMode = false;\r
- \r
- private static int mFlag = 30;\r
- \r
- Connection connection;\r
- \r
- private int currentReConnectInterval = 11;\r
- \r
- private boolean firstReConnected = true;\r
- \r
- private long idleTimeMillis;\r
- \r
- private int isFirstAsjust;\r
- \r
- private int lastReConnectInterval = -1;\r
- \r
- private int lastReConnectionNumber = -1;\r
- \r
- Context mContext;\r
- \r
- NetworkObservable mNetworkObservable = new NetworkObservable();\r
- \r
- Runtime mRuntime;\r
- \r
- private ShutDownReceiver mShutDownReceiver;\r
- \r
- private Subscription mSubscription;\r
- \r
- private int reConnectionNumber;\r
- \r
- private int reCycleTimes;\r
- \r
- private int timeout = 660;\r
- \r
- private int totalAdjustTimes;\r
- \r
- private int whichTimeAdjust;\r
- \r
- static {\r
- \r
- }\r
+import com.ic.protocol.utils.SimSignalUtil;\r
+import com.ic.protocol.utils.TimeUtil;\r
\r
- \r
- public void onAlarmClock(Connection paramConnection, Runtime paramRuntime) {\r
+import java.util.Timer;\r
+import java.util.TimerTask;\r
\r
- Logger.i("onAlarmClock");\r
+import static com.ic.protocol.Constants.ACTION_HEATR_RATE_START;\r
\r
- long l = SystemClock.elapsedRealtime();\r
+public class HeartRateManager extends AbstractInvokeHandlerService {\r
+ private int mNetworkType;\r
\r
- //如果 没有连接成功 或者 时间超过了11分钟 ,则进行重新连接服务\r
- if (!isConnected || l - this.idleTimeMillis > 660000L) {\r
- StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append("重连");\r
- stringBuilder.append(isConnected);\r
- Logger.i(stringBuilder.toString());\r
- if (!isConnected && this.firstReConnected) {\r
- this.reConnectionNumber++;\r
- this.firstReConnected = false;\r
- } \r
-// if (paramRuntime.getLockSimInfo()) {\r
-// paramConnection.disconnect();\r
-// return;\r
-// }\r
-\r
- } \r
- }\r
- \r
- public void onAttach(final Connection connection, final Runtime runtime) {\r
- this.mRuntime = runtime;\r
- this.mContext = (runtime.getContextProxy()).context;\r
- this.mNetworkObservable.register(this.mContext);\r
- this.connection = connection;\r
- this.mSubscription = this.mNetworkObservable.onChange().subscribe(new Action1<Integer>() {\r
- private boolean first;\r
- \r
- public void call(Integer param1Integer) {\r
- StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append("yls aBoolean=");\r
- stringBuilder.append(param1Integer);\r
- stringBuilder.append(",,first=");\r
- stringBuilder.append(this.first);\r
- Logger.i(stringBuilder.toString());\r
- if (param1Integer.intValue() > 0) {\r
- if (this.first) {\r
- this.first = false;\r
- return;\r
- } \r
- connection.connect(runtime.getSrvIP(), runtime.getPort());\r
- } \r
+ private SimSignalUtil mSignalUtil;\r
+\r
+ private Runtime runtime;\r
+ private NettyConnection connection;\r
+ private TimerTaskPPG timerTaskPPG;\r
+\r
+ private Timer timerPPG;\r
+ private static Handler mHandler=null;\r
+\r
+\r
+ public HeartRateManager(Runtime _runtime,NettyConnection _connection){\r
+ runtime=_runtime;\r
+ connection=_connection;\r
+ currentStat= heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_CLOSED;\r
+ isTimerStarted=false;\r
+ mHandler=new Handler(new Handler.Callback() {\r
+ @Override\r
+ public boolean handleMessage(Message message) {\r
+\r
+ switch (message.what) {\r
+ case 100: {\r
+ //只有检测PPG成功,且网络连接中才发送数据\r
+ if (runtime.getHRS().getHeartrateWorkingStat() == heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_TEST_SUCCESS) {\r
+ runtime.getHRS().setLastTestTime(TimeUtil.getLocalTime());\r
+ String PPGDATA = protocolAPIHelper.APHT(runtime);\r
+ if (connection.isServerConnected()) {\r
+ connection.send(protocolAPIHelper.genStringMessage("APHT", PPGDATA));\r
+ Logger.i("Send PPG " + PPGDATA);\r
+ } else {\r
+ Logger.i("Skip PPG " + PPGDATA);\r
+ }\r
+ } else {\r
+ Logger.i("PPG Failed for Timeout!");\r
+ }\r
+ stopPPG();\r
}\r
- });\r
+ break;\r
+ case 200: {\r
+ startPPG();\r
+ }\r
+ break;\r
+ }\r
+ return false;\r
+ }\r
+ });\r
+\r
+ }\r
+\r
+ private BroadcastReceiver PPGStartReceiver = new BroadcastReceiver() {\r
+ public void onReceive(Context param1Context, Intent param1Intent) {\r
+ if (ACTION_HEATR_RATE_START.equals(param1Intent.getAction())) {\r
+ HeartRateManager.this.startPPG();\r
+ }\r
+ }\r
+ };\r
+\r
+ public void regReceiver(){\r
+ //注册“网络变化”的广播接收器\r
IntentFilter intentFilter = new IntentFilter();\r
- intentFilter.addAction("android.intent.action.ACTION_SHUTDOWN_MOREINFO");\r
- this.mShutDownReceiver = new ShutDownReceiver();\r
- this.mContext.registerReceiver(this.mShutDownReceiver, intentFilter);\r
+ intentFilter.addAction(ACTION_HEATR_RATE_START);\r
+ runtime.getContextProxy().context.registerReceiver(PPGStartReceiver, intentFilter);\r
}\r
- \r
- public boolean onConnectionClose(Connection paramConnection, Runtime paramRuntime) {\r
- if (isConnected) protocolMainServer.getInstance().startConnectionRetryTimer();\r
- connectionError = true;\r
- isConnected = false;\r
- paramRuntime.getContextProxy().sendBroadcast(isConnected);\r
- StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append("onConnectionClose=");\r
- stringBuilder.append(",set KeepAlive isConnected = false");\r
- Logger.i(stringBuilder.toString());\r
- LauncherCtrl.getInstance(this.mContext).setStatusBarIcon("server_connected", STATUS_BAR_STATE_SERVER_CONNECTED_OFF);\r
- return false;\r
+\r
+ public void unRegReceiver(){\r
+ runtime.getContextProxy().context.unregisterReceiver(PPGStartReceiver);\r
}\r
- \r
- public boolean onConnectionOpen(Connection paramConnection, Runtime paramRuntime) {\r
-\r
- StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append("onConnectionOpen connectionError=");\r
- stringBuilder.append(connectionError);\r
- stringBuilder.append(",sInSleepMode =");\r
- stringBuilder.append(isInSleepMode);\r
- stringBuilder.append(",set KeepAlive isConnected = true");\r
- Logger.i(stringBuilder.toString());\r
-// if (!connectionError) {\r
- connectionError = false;\r
-// connection.send(protocolAPIHelper.genStringMessage("AP00",protocolAPIHelper.AP00(paramRuntime)));\r
- connection.send(protocolAPIHelper.genStringMessage("heart",protocolAPIHelper.AP03(paramRuntime)));\r
-// if (Deliver.haveSendH42) {\r
-// ServiceUtil.offerQueue(new StringMessage(protocolAPIHelper.AP03(paramRuntime)));\r
-// Deliver.haveSendH42 = false;\r
-// }\r
-// }\r
-\r
- isConnected = true;\r
- this.firstReConnected = true;\r
- this.idleTimeMillis = SystemClock.elapsedRealtime();\r
- paramRuntime.getContextProxy().sendBroadcast(isConnected);\r
-\r
- LauncherCtrl.getInstance(this.mContext).setStatusBarIcon("server_connected", STATUS_BAR_STATE_SERVER_CONNECTED_ON);\r
- return false;\r
+\r
+ public class TimerTaskPPG extends TimerTask{\r
+ @Override\r
+ public void run() {\r
+ doPPGtest();\r
+ }\r
+ };\r
+\r
+ int PPG;\r
+ int BPH;\r
+ int BPL;\r
+ boolean isWared ;\r
+ boolean isPPGTesting ;\r
+ static boolean isTimerStarted;\r
+ static heartRateStatus.HEARTRATE_WORKINGSTAT currentStat;\r
+ static int delayCount;\r
+ static int testCount;\r
+ private final int MAX_TESTTIMES=30000;//最大延迟测试时间为30秒\r
+\r
+\r
+ public void doPPGtest(){\r
+ PPG= ICJniUtils.getPPG();//调用底层函数保证状态更新。\r
+ BPH=ICJniUtils.getHighBloodPressure();\r
+ BPL=ICJniUtils.getLowBloodPressure();\r
+ isWared = (ICJniUtils.isWeared()==1);\r
+ isPPGTesting = (ICJniUtils.isPPGStarted()==1 );\r
+ Logger.i("PPG TESTING="+isPPGTesting+", isWared="+isWared+", PPG="+PPG+", BPH="+BPH+", BPL="+BPL);\r
+ if (isPPGTesting){\r
+ if (isWared ) {\r
+ if (PPG > 0) {\r
+ currentStat = heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_TEST_SUCCESS;\r
+\r
+ } else {\r
+ currentStat = heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_WARED_AND_TESTING;\r
+ }\r
+ }else{\r
+ currentStat= heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_NOTWARED;\r
+ }\r
+ }else{\r
+ currentStat= heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_CLOSED;\r
+ }\r
+\r
+\r
+ if (currentStat==heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_TEST_SUCCESS){\r
+ runtime.getHRS().setLastHeartrate(PPG,BPH,BPL);\r
+ delayCount--;\r
+ if (delayCount<0) //达到延迟时间后,停止检测并发送数据\r
+ sendAndStopPPG();\r
+\r
+ }else{\r
+ runtime.getHRS().setLastHeartrate(0,0,0);\r
+ }\r
+ runtime.getHRS().setHeartrateStat(currentStat);\r
+\r
+ testCount--;\r
+ if (testCount<0)\r
+ {\r
+ Logger.i("PPG 超过 "+MAX_TESTTIMES+"秒 未能得出结果,取消检测报告!");\r
+ stopPPG();\r
+ }\r
+\r
}\r
\r
- public void onDetach(Connection paramConnection, Runtime paramRuntime) {\r
- if (this.mSubscription != null && !this.mSubscription.isUnsubscribed())\r
- this.mSubscription.unsubscribe(); \r
- this.mNetworkObservable.unregister(this.mContext);\r
- this.mContext.unregisterReceiver(this.mShutDownReceiver);\r
+\r
+ private void sendAndStopPPG(){\r
+ //结束和发送数据\r
+ mHandler.sendEmptyMessage(100);\r
+ }\r
+ PowerManager.WakeLock mWakeLock=null;\r
+ public PowerManager.WakeLock getPPGWakeLock() {\r
+ mWakeLock = ((PowerManager)(runtime.getContextProxy()).context.getSystemService(Context.POWER_SERVICE)).newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "PPGTest");\r
+ mWakeLock.acquire(30000L);\r
+ return mWakeLock;\r
}\r
- \r
- public void onHeartAlarm(NettyConnection paramNettyConnection, Runtime paramRuntime) {\r
- Logger.i("onHeartAlarm");\r
-// UpdateHeartBeatTimeout();\r
-// if (this.reCycleTimes == 0 && this.currentReConnectInterval != 11){\r
-// paramNettyConnection.send(protocolAPIHelper.genStringMessage("AP00",protocolAPIHelper.AP00(paramRuntime)));\r
- paramNettyConnection.send(protocolAPIHelper.genStringMessage("heart",protocolAPIHelper.AP03(paramRuntime)));\r
- // }\r
\r
+ public void releaseWakeLock(){\r
+ if (mWakeLock!=null){\r
+ mWakeLock.release();\r
+ }\r
+ mWakeLock=null;\r
+ }\r
+ public void startPPG(){\r
+ if (ICJniUtils.isPPGavailable()==1 && isTimerStarted==false) {\r
+ currentStat=heartRateStatus.HEARTRATE_WORKINGSTAT.HEARTRATE_OPEN;\r
+ delayCount=3;//检测成功后三秒发送数据\r
+ testCount=MAX_TESTTIMES;//测试MAX_TESTTIMES后没有结果也要强制退出\r
+ isTimerStarted=true;\r
+ ICJniUtils.enablePPG();\r
+ getPPGWakeLock();\r
+ timerTaskPPG = new TimerTaskPPG();\r
+ timerPPG = new Timer();\r
+ timerPPG.scheduleAtFixedRate(timerTaskPPG,0, 1000); //1 秒更新一次数据\r
+\r
+ }\r
}\r
\r
- public boolean onReceive(StringMessage paramStringMessage, Connection paramConnection, Runtime paramRuntime) {\r
- this.idleTimeMillis = SystemClock.elapsedRealtime();\r
- Logger.i(TAG+paramStringMessage.cmd());\r
+ public void stopPPG(){\r
+ if( isTimerStarted )\r
+ {\r
+ timerPPG.cancel();\r
+ isTimerStarted=false;\r
+ }\r
+ ICJniUtils.disablePPG();\r
+ releaseWakeLock();\r
+ }\r
+\r
+ private void callback(Messenger paramMessenger, int paramInt) {\r
+ if (paramMessenger != null)\r
+ try {\r
+ paramMessenger.send(Message.obtain(null, paramInt));\r
+ return;\r
+ } catch (Exception e) {\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+\r
+\r
+\r
+ public void onAlarmClock(Connection paramConnection, Runtime paramRuntime) {}\r
\r
+ public void onAttach(Connection paramConnection, Runtime paramRuntime) {\r
\r
+// this.mSignalUtil = SimSignalUtil.getInstance((paramRuntime.getContextProxy()).context);\r
+ regReceiver();\r
+ }\r
+\r
+ public void onDetach(Connection paramConnection, Runtime paramRuntime) {\r
+ unRegReceiver();\r
+ }\r
+\r
+ public boolean onUserRequest(Intent paramIntent, Connection paramConnection, final Runtime runtime) {\r
+ String str = paramIntent.getAction();\r
+ if (ACTION_HEATR_RATE_START.equals(str)) {\r
+// this.mSignalUtil = SimSignalUtil.getInstance((runtime.getContextProxy()).context);\r
+// str = paramIntent.getStringExtra("filepath");\r
+// String str1 = paramIntent.getStringExtra("number");\r
+ StringBuilder stringBuilder = new StringBuilder();\r
+ stringBuilder.append("PPG Started on Action "+ACTION_HEATR_RATE_START);\r
+// stringBuilder.append(str);\r
+// stringBuilder.append("number == ");\r
+// stringBuilder.append(str1);\r
+ Logger.i(stringBuilder.toString());\r
+ //do something\r
+ startPPG();\r
+ }\r
return false;\r
}\r
\r
- \r
- class ShutDownReceiver extends BroadcastReceiver {\r
- public void onReceive(Context param1Context, Intent param1Intent) {\r
- boolean bool = param1Intent.getBooleanExtra("reboot", false);\r
- if (HeartRateManager.this.mRuntime.getBatteryLow() && !HeartRateManager.this.mRuntime.getBatterychanging() && !bool && !HeartRateManager.this.mRuntime.isShutdown()){\r
-// KeepAlive.this.connection.send(new StringMessage(protocolAPIHelper.AP00(KeepAlive.this.mRuntime)));\r
- }\r
+public static void triggerPPGtest(){\r
+ if (mHandler !=null) mHandler.sendEmptyMessage(200);\r
+}\r
+\r
+ public boolean onUserRequest(Message message, Connection connection, final Runtime runtime) {\r
+ Bundle bundle3;\r
+ String str3;\r
+ String str2;\r
+ String str1;\r
+ Bundle bundle2;\r
+ final Messenger callback2;\r
+\r
+ int i = 1;\r
+ switch (message.what) {\r
\r
+ case 1002:\r
+ this.mNetworkType = this.mSignalUtil.getNetworkType();\r
+ bundle3 = message.getData();\r
+ str1 = bundle3.getString("filepath");\r
+ str2 = bundle3.getString("number");\r
+ if (str1 != null) {\r
+ if (str2 == null)\r
+ return true;\r
+ StringBuilder stringBuilder = new StringBuilder();\r
+ stringBuilder.append("filepath == ");\r
+ stringBuilder.append(str1);\r
+ stringBuilder.append("number == ");\r
+ stringBuilder.append(str2);\r
+ Logger.i(stringBuilder.toString());\r
+//do something\r
+ } else {\r
+ return true;\r
+ }\r
+ case 1001:\r
+ this.mSignalUtil = SimSignalUtil.getInstance((runtime.getContextProxy()).context);\r
+ this.mNetworkType = this.mSignalUtil.getNetworkType();\r
+ bundle2 = message.getData();\r
+ str2 = bundle2.getString("filepath");\r
+ str3 = bundle2.getString("number");\r
+\r
+ if (str2 != null && str3 != null) {\r
+// send\r
+ } else {\r
+ return true;\r
+ }\r
+ case 1000:\r
+ break;\r
+\r
+ default:\r
+ return false;\r
}\r
+// Bundle bundle1 = paramMessage.getData();\r
+// i = bundle1.getInt("category");\r
+\r
+ return true;\r
}\r
}\r
+\r
}\r
\r
\r
- public void setSleepMode(boolean paramBoolean) { isInSleepMode = paramBoolean; }\r
+ public void setSleepMode(boolean paramBoolean) {\r
+ isInSleepMode = paramBoolean;\r
+ }\r
\r
class ShutDownReceiver extends BroadcastReceiver {\r
public void onReceive(Context param1Context, Intent param1Intent) {\r
import android.os.Handler;\r
import android.os.Message;\r
\r
+import com.ic.protocol.bean.ICLocation;\r
import com.ic.protocol.bean.Locations;\r
import com.ic.protocol.bean.Runtime;\r
import com.ic.protocol.service.base.AbstractInvokeHandlerService;\r
import java.util.List;\r
\r
public class UpLoadDataPoints extends AbstractInvokeHandlerService {\r
- private final String REGISTER_CODE = "FIZOF5Rcp0nuWPqf";\r
+ private final String TAG = UpLoadDataPoints.class.getSimpleName();\r
\r
private int alarmClock;\r
\r
\r
private Runnable mRegisterDeviceTask = new Runnable() {\r
public void run() {\r
-// JSONObject jSONObject = new JSONObject();\r
-// try {\r
-// jSONObject.put("sn", UpLoadDataPoints.this.mRuntime.getCid());\r
-// jSONObject.put("title", "EQC_G5_Device");\r
-// } catch (JSONException jSONException) {\r
-// jSONException.printStackTrace();\r
-// }\r
-// OneNetApiCallback oneNetApiCallback = new OneNetApiCallback() {\r
-// public void onFailed(Exception param2Exception) { Logger.i(param2Exception.getMessage()); }\r
-//\r
-// public void onSuccess(String param2String) {\r
-// try {\r
-// StringBuilder stringBuilder1 = new JSONObject(param2String);\r
-// int i = stringBuilder1.optInt("errno");\r
-// if (i != 0) {\r
-// stringBuilder1 = new StringBuilder();\r
-// stringBuilder1.append("error : ");\r
-// stringBuilder1.append(i);\r
-// Logger.i(stringBuilder1.toString());\r
-// return;\r
-// }\r
-// JSONObject jSONObject = stringBuilder1.optJSONObject("data");\r
-// if (jSONObject == null) {\r
-// Logger.i("data is null");\r
-// return;\r
-// }\r
-// String str1 = jSONObject.optString("device_id");\r
-// String str2 = jSONObject.optString("key", null);\r
-// StringBuilder stringBuilder2 = new StringBuilder();\r
-// stringBuilder2.append("device_id=");\r
-// stringBuilder2.append(str1);\r
-// stringBuilder2.append("DeviceApiKey=");\r
-// stringBuilder2.append(str2);\r
-// Logger.i(stringBuilder2.toString());\r
-// UpLoadDataPoints.this.mRuntime.setDevice_id(str1);\r
-// UpLoadDataPoints.this.mRuntime.setDevice_key(str2);\r
-// SharPreferenceUtil.setPrefString((this.this$1.this$0.mRuntime.getContextProxy()).context, "key_device_id", str1);\r
-// SharPreferenceUtil.setPrefString((this.this$1.this$0.mRuntime.getContextProxy()).context, "key_device_key", str2);\r
-// if (str2 == null) {\r
-// Logger.i("DeviceApiKey is null");\r
-// return;\r
-// }\r
-// OneNetApi.setAppKey(str2);\r
-// return;\r
-// } catch (JSONException param2String) {\r
-// param2String.printStackTrace();\r
-// return;\r
-// }\r
-// }\r
-// };\r
-// OneNetApi.registerDevice("FIZOF5Rcp0nuWPqf", jSONObject.toString(), oneNetApiCallback);\r
+\r
}\r
};\r
\r
\r
public void onDetach(Connection paramConnection, Runtime paramRuntime) {}\r
\r
- public boolean onUserRequest(Intent paramIntent, Connection paramConnection, Runtime paramRuntime) { return false; }\r
+ public boolean onUserRequest(Intent paramIntent, Connection paramConnection, Runtime paramRuntime) {\r
+ return false;\r
+ }\r
\r
- public boolean onUserRequest(Message paramMessage, Connection paramConnection, Runtime paramRuntime) { return false; }\r
+ public boolean onUserRequest(Message paramMessage, Connection paramConnection, Runtime paramRuntime) {\r
+ return false;\r
+ }\r
\r
public void uploadCurrentLocation() {\r
String str1 = this.mRuntime.getDevice_id();\r
String str2 = this.mRuntime.getDevice_key();\r
if (str1 != null && str2 != null) {\r
-// OneNetApi.setAppKey(str2);\r
-// this.mHandler.post(new UploadCurrentLocationTask(new Locations(this.mRuntime.getLongitude(), this.mRuntime.getLatitude()), str1));\r
+ this.mHandler.post(new UploadCurrentLocationTask(this.mRuntime.getLocationInstance().getLocation(), str1));\r
return;\r
} \r
// this.mHandler.post(this.mRegisterDeviceTask);\r
}\r
\r
private class UploadCurrentLocationTask implements Runnable {\r
- private Locations mCurrentLocation;\r
+ private ICLocation.GPS_LocationPoint mCurrentLocation;\r
\r
private String mDeviceID;\r
\r
- UploadCurrentLocationTask(Locations param1Locations, String param1String) {\r
+ UploadCurrentLocationTask(ICLocation.GPS_LocationPoint param1Locations, String param1String) {\r
this.mCurrentLocation = param1Locations;\r
this.mDeviceID = param1String;\r
}\r
\r
public void run() {\r
-// JSONObject jSONObject1 = new JSONObject();\r
-// JSONObject jSONObject2 = new JSONObject();\r
-// try {\r
-// jSONObject2.put("lon", this.mCurrentLocation.getLon());\r
-// jSONObject2.put("lat", this.mCurrentLocation.getLat());\r
-// jSONObject1.put("locations", jSONObject2);\r
-// } catch (JSONException jSONObject2) {\r
-// jSONObject2.printStackTrace();\r
-// UpLoadDataPoints.access$002(UpLoadDataPoints.this, false);\r
-// UpLoadDataPoints.access$102(UpLoadDataPoints.this, 0);\r
-// }\r
-// OneNetApiCallback oneNetApiCallback = new OneNetApiCallback() {\r
-// public void onFailed(Exception param2Exception) {\r
-// UpLoadDataPoints.access$002(UpLoadDataPoints.UploadCurrentLocationTask.this.this$0, false);\r
-// UpLoadDataPoints.access$102(UpLoadDataPoints.UploadCurrentLocationTask.this.this$0, 0);\r
-// }\r
-//\r
-// public void onSuccess(String param2String) {\r
-// try {\r
-// int i = (new JSONObject(param2String)).optInt("errno");\r
-// if (i != 0) {\r
-// StringBuilder stringBuilder = new StringBuilder();\r
-// stringBuilder.append("error : ");\r
-// stringBuilder.append(i);\r
-// Logger.i(stringBuilder.toString());\r
-// UpLoadDataPoints.access$002(UpLoadDataPoints.UploadCurrentLocationTask.this.this$0, false);\r
-// return;\r
-// }\r
-// UpLoadDataPoints.access$002(UpLoadDataPoints.UploadCurrentLocationTask.this.this$0, true);\r
-// return;\r
-// } catch (JSONException param2String) {\r
-// param2String.printStackTrace();\r
-// UpLoadDataPoints.access$002(UpLoadDataPoints.UploadCurrentLocationTask.this.this$0, false);\r
-// return;\r
-// }\r
-// }\r
-// };\r
-// OneNetApi.addDataPoints(this.mDeviceID, "3", jSONObject1.toString(), oneNetApiCallback);\r
+\r
}\r
}\r
- \r
-// class null implements OneNetApiCallback {\r
-// null() {}\r
-//\r
-// public void onFailed(Exception param1Exception) {\r
-// UpLoadDataPoints.access$002(this.this$1.this$0, false);\r
-// UpLoadDataPoints.access$102(this.this$1.this$0, 0);\r
-// }\r
-//\r
-// public void onSuccess(String param1String) {\r
-// try {\r
-// int i = (new JSONObject(param1String)).optInt("errno");\r
-// if (i != 0) {\r
-// StringBuilder stringBuilder = new StringBuilder();\r
-// stringBuilder.append("error : ");\r
-// stringBuilder.append(i);\r
-// Logger.i(stringBuilder.toString());\r
-// UpLoadDataPoints.access$002(this.this$1.this$0, false);\r
-// return;\r
-// }\r
-// UpLoadDataPoints.access$002(this.this$1.this$0, true);\r
-// return;\r
-// } catch (JSONException param1String) {\r
-// param1String.printStackTrace();\r
-// UpLoadDataPoints.access$002(this.this$1.this$0, false);\r
-// return;\r
-// }\r
-// }\r
-// }\r
+\r
\r
private static class UploadLocationsTask implements Runnable {\r
private String mDeviceID;\r
\r
- private List<Locations> mLocations;\r
+ private List<ICLocation.GPS_LocationPoint> mLocations;\r
\r
- UploadLocationsTask(List<Locations> param1List, String param1String) {\r
+ UploadLocationsTask(List<ICLocation.GPS_LocationPoint> param1List, String param1String) {\r
this.mLocations = param1List;\r
this.mDeviceID = param1String;\r
}\r
\r
public void run() {\r
-// JSONObject jSONObject1 = new JSONObject();\r
-// JSONArray jSONArray1 = new JSONArray();\r
-// JSONObject jSONObject2 = new JSONObject();\r
-// JSONArray jSONArray2 = new JSONArray();\r
-// try {\r
-// for (Locations locations : this.mLocations) {\r
-// JSONObject jSONObject3 = new JSONObject();\r
-// jSONObject3.put("lon", locations.getLon());\r
-// jSONObject3.put("lat", locations.getLat());\r
-// JSONObject jSONObject4 = new JSONObject();\r
-// jSONObject4.put("at", locations.getTime());\r
-// jSONObject4.put("value", jSONObject3);\r
-// jSONArray2.put(jSONObject4);\r
-// }\r
-// jSONObject2.put("id", "locations");\r
-// jSONObject2.put("datapoints", jSONArray2);\r
-// jSONArray1.put(jSONObject2);\r
-// jSONObject1.put("datastreams", jSONArray1);\r
-// } catch (JSONException e) {\r
-// e.printStackTrace();\r
-// }\r
-// OneNetApiCallback oneNetApiCallback = new OneNetApiCallback() {\r
-// public void onFailed(Exception param2Exception) { Logger.i(param2Exception.getMessage()); }\r
-//\r
-// public void onSuccess(String param2String) {\r
-// StringBuilder stringBuilder = new StringBuilder();\r
-// stringBuilder.append("upload location response : ");\r
-// stringBuilder.append(param2String);\r
-// Logger.i(stringBuilder.toString());\r
-// try {\r
-// int i = (new JSONObject(param2String)).optInt("errno");\r
-// if (i != 0) {\r
-// StringBuilder stringBuilder1 = new StringBuilder();\r
-// stringBuilder1.append("error : ");\r
-// stringBuilder1.append(i);\r
-// Logger.i(stringBuilder1.toString());\r
-// return;\r
-// }\r
-// } catch (JSONException param2String) {\r
-// param2String.printStackTrace();\r
-// }\r
-// }\r
-// };\r
-// OneNetApi.addDataPoints(this.mDeviceID, jSONObject1.toString(), oneNetApiCallback);\r
+\r
+\r
}\r
}\r
\r
import com.ic.protocol.adapter.protocolAPIHelper;\r
import com.ic.protocol.bean.Runtime;\r
import com.ic.protocol.bean.StringMessage;\r
+import com.ic.protocol.bean.heartRateStatus;\r
import com.ic.protocol.service.base.AbstractConnectionService;\r
import com.ic.protocol.service.base.AbstractInvokeHandlerService;\r
import com.ic.protocol.utils.AlarmHelper;\r
import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;\r
import static com.ic.protocol.Constants.ACTION_ALARM_ADD_DATAPOINTS;\r
import static com.ic.protocol.Constants.ACTION_EQC_ALARM;\r
+import static com.ic.protocol.Constants.ACTION_HEATR_RATE_START;\r
import static com.ic.protocol.Constants.ACTION_LOCATION_ALARM;\r
import static com.ic.protocol.Constants.HEART_ALARM;\r
import static com.ic.protocol.Constants.SLEEP_ALARM;\r
stringBuilder1.append(Integer.valueOf(str, 16));\r
stringBuilder1.append(",CELLID=");\r
stringBuilder1.append(Integer.valueOf(str1, 16));\r
- FileOutputUtil.fileOutput(context, "cellInfoTest", stringBuilder1.toString());\r
+ FileOutputUtil.fileOutput(runtime.getCacheDir(), "cellInfoTest", stringBuilder1.toString());\r
}\r
}\r
}\r
}\r
};\r
\r
- private String actionName = "com.cmcm.interface";\r
-\r
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {\r
public void onReceive(Context param1Context, Intent param1Intent) {\r
StringBuilder stringBuilder2 = new StringBuilder();\r
stringBuilder2.append("broadcastReceiver alarmCycle action==");\r
stringBuilder2.append(param1Intent.getAction());\r
- FileOutputUtil.fileOutput(param1Context, "alarmCycle", stringBuilder2.toString());\r
+ FileOutputUtil.fileOutput(runtime.getCacheDir(), "alarmCycle", stringBuilder2.toString());\r
StringBuilder stringBuilder1 = new StringBuilder();\r
stringBuilder1.append("时间变化");\r
stringBuilder1.append(param1Intent.getAction());\r
protocolMainServer.this.setSleepAlarm();\r
protocolMainServer.this.setWakeAlarm();\r
protocolMainServer.this.setHeartAlarm();\r
+ protocolMainServer.this.setHeartRateDetectAlarm(3);\r
protocolMainServer.this.setWeatherAlarm();\r
protocolMainServer.this.setLocationAlarm(runtime.getLocationInstance().getWorkingMod());\r
if (protocolMainServer.this.cmcm_call_eiot_into_powersave_mode() == 0)\r
\r
final Messenger mMessenger = new Messenger(new RequestHandler(this));\r
\r
-// private SendPairMessage mSendPairMessage;\r
\r
private SimSignalUtil mSignalUtil;\r
\r
stringBuilder.append(is_wifi_network_ok);\r
Logger.i(stringBuilder.toString());\r
if (is_in_sleep_mode) {\r
-// CoreService.access$402(false);\r
-// CoreService.access$502(0);\r
+\r
/*屏幕亮起时,如果在sleep模式,则唤醒各个进程*/\r
protocolMainServer.is_in_sleep_mode=false;\r
protocolMainServer.is_allowed_in_sleep_mode=0;\r
protocolMainServer.this.wakeUpFromSleep();\r
}\r
if (is_wifi_network_ok) {\r
-// CoreService.access$302(false);\r
+\r
/*屏幕亮起时,如果wifi开启,则开启wifi*/\r
protocolMainServer.is_in_sleep_mode=false;\r
Util.turnOnWifiForConnect((protocolMainServer.this.runtime.getContextProxy()).context, protocolMainServer.this.runtime);\r
}\r
} else if ("android.intent.action.SCREEN_OFF".equals(param1Intent.getAction()) && Util.isWifiIsOpen((protocolMainServer.this.runtime.getContextProxy()).context, protocolMainServer.this.runtime)) {\r
-// CoreService.access$302(true);\r
+\r
protocolMainServer.is_in_sleep_mode=true;\r
Util.turnOffWifiForSleep((protocolMainServer.this.runtime.getContextProxy()).context, protocolMainServer.this.runtime);\r
}\r
\r
UpLoadDataPoints upLoadDataPoints;\r
\r
- static {\r
-\r
- }\r
\r
private AbstractConnectionService getConnectionServiceChain() {\r
-// DNS dNS = new DNS();\r
-// SynchronousTime synchronousTime = new SynchronousTime();\r
-// new ProcessEncryptionService();\r
Initialize initialize = new Initialize();\r
CheckSIM checkSIM = new CheckSIM();\r
this.mKeepAlive = new KeepAlive();\r
this.mDeliver = new Deliver();\r
-// dNS.setNext(synchronousTime);\r
-// initialize.setNext(synchronousTime);\r
initialize.setNext(checkSIM);\r
checkSIM.setNext(this.mKeepAlive);\r
this.mKeepAlive.setNext(this.mDeliver);\r
-\r
return initialize;\r
}\r
\r
}\r
\r
private AbstractInvokeHandlerService getInvokeHandlerServiceChain() {\r
+ Logger.i("getInvokeHandlerServiceChain");\r
SendChatMessage sendChatMessage = new SendChatMessage();\r
-// this.mSendPairMessage = new SendPairMessage();\r
-// OtherBusiness otherBusiness = new OtherBusiness();\r
-// SendOssMessage sendOssMessage = new SendOssMessage();\r
+ HeartRateManager heartRateManager= new HeartRateManager(this.runtime,this.connection);\r
SilentManager silentManager = new SilentManager();\r
- Logger.i("BuildConfig.upLoadData=false");\r
-// this.justTalkLogin = new JustTalkLogin();\r
- sendChatMessage.setNext(silentManager);\r
+ sendChatMessage.setNext(heartRateManager);\r
+ heartRateManager.setNext(silentManager);\r
return sendChatMessage;\r
}\r
\r
\r
public int cmcm_call_eiot_into_powersave_mode() { return 0; }\r
\r
- public void deliverDataToCmApp(int paramInt, String paramString) {\r
-// if (paramInt != 500)\r
-// try {\r
-// Intent intent = new Intent(this.actionName);\r
-// intent.putExtra("comjson", paramString);\r
-// intent.putExtra("cmdId", paramInt);\r
-// (this.runtime.getContextProxy()).context.startService(intent);\r
-// return;\r
-// } catch (Exception e) {\r
-// e.printStackTrace();\r
-// return;\r
-// }\r
-// try {\r
-// StringBuilder stringBuilder = new StringBuilder();\r
-// stringBuilder.append("deliver 1 cmd=");\r
-// stringBuilder.append(paramInt);\r
-// stringBuilder.append("---data=");\r
-// stringBuilder.append(paramString);\r
-// Logger.i(stringBuilder.toString());\r
-// Intent intent = new Intent(this.actionName);\r
-// intent.putExtra("comjson", paramString);\r
-// intent.putExtra("cmdId", 999);\r
-// (this.runtime.getContextProxy()).context.startService(intent);\r
-// return;\r
-// } catch (Exception e) {\r
-// e.printStackTrace();\r
-// return;\r
-// }\r
- }\r
\r
public PowerManager.WakeLock getWakeLock(int paramInt) {\r
PowerManager.WakeLock wakeLock = ((PowerManager)(this.runtime.getContextProxy()).context.getSystemService(POWER_SERVICE)).newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakelockTag");\r
return wakeLock;\r
}\r
\r
- public IBinder onBind(Intent paramIntent) { return this.mMessenger.getBinder(); }\r
+ public IBinder onBind(Intent paramIntent) {\r
+ return this.mMessenger.getBinder();\r
+ }\r
+\r
+\r
\r
public Runtime getRuntime(){\r
return runtime;\r
this.runtime.setContextProxy(new ContextProxy(this));\r
this.runtime.setLbsHelper(new LBSHelper(this,this.runtime.getContextProxy().getWifiManager(), this.runtime));\r
this.runtime.setImeiAndCid(PhoneUtils.getIMEI(this),"");\r
+ this.runtime.setHRS(new heartRateStatus());\r
this.connectionServiceChain = getConnectionServiceChain();\r
this.invokeHandlerServiceChain = getInvokeHandlerServiceChain();\r
if (cmcm_call_eiot_into_powersave_mode() == 1) {\r
this.connectionServiceChain.processAttach(this.connection, this.runtime);\r
this.invokeHandlerServiceChain.processAttach(this.connection, this.runtime);\r
setAlarm(alarmCycle);\r
- FileOutputUtil.fileOutput(this, "alarmCycle", "设置闹钟服务 alarmCycle");\r
+ FileOutputUtil.fileOutput(runtime.getCacheDir(), "alarmCycle", "设置闹钟服务 alarmCycle");\r
this.locationClient = new LocationClient(this.connection, this.runtime);\r
this.connection.open();\r
this.connection.connect(this.runtime.getSrvIP(), this.runtime.getPort());\r
//网络协议心跳时间\r
setHeartAlarm();\r
\r
+ //设置心率检测频率\r
+ setHeartRateDetectAlarm(3); //3分钟一次\r
+\r
//获取天气时间\r
setWeatherAlarm();\r
\r
Util.turnOffWifiForSleep((this.runtime.getContextProxy()).context, this.runtime);\r
}\r
setAlarm(alarmCycle);\r
- FileOutputUtil.fileOutput(this, "alarmCycle", "ALARM alarmCycle");\r
+ FileOutputUtil.fileOutput(runtime.getCacheDir(), "alarmCycle", "ALARM alarmCycle");\r
\r
//发送心跳间隔广播给其他应用\r
this.runtime.getContextProxy().sendBroadcast(ACTION_EQC_ALARM, this.runtime);\r
if (Constants.SLEEP_ALARM.equals(paramIntent.getAction())) {\r
Logger.i("SLEEP_ALARM");\r
is_allowed_in_sleep_mode = 1;\r
- FileOutputUtil.fileOutput(this, "alarmCycle", "SLEEP_ALARM alarmCycle");\r
+ FileOutputUtil.fileOutput(runtime.getCacheDir(), "alarmCycle", "SLEEP_ALARM alarmCycle");\r
setSleepAlarm();\r
boolean bool = ((PowerManager)getSystemService(POWER_SERVICE)).isScreenOn();\r
stringBuilder1 = new StringBuilder();\r
if (Constants.WAKE_ALARM.equals(paramIntent.getAction())) {\r
if (is_in_sleep_mode) {\r
is_in_sleep_mode = false;\r
- FileOutputUtil.fileOutput(this, "alarmCycle", "WAKE_ALARM alarmCycle");\r
+ FileOutputUtil.fileOutput(runtime.getCacheDir(), "alarmCycle", "WAKE_ALARM alarmCycle");\r
if (this.mKeepAlive != null)\r
this.mKeepAlive.setSleepMode(false);\r
wakeUpFromSleep();\r
if (this.mKeepAlive != null) {\r
this.mKeepAlive.onHeartAlarm(this.connection, this.runtime);\r
setHeartAlarm();\r
- FileOutputUtil.fileOutput(this, "alarmCycle", "HEART_ALARM alarmCycle " );\r
+ FileOutputUtil.fileOutput(runtime.getCacheDir(), "alarmCycle", "HEART_ALARM alarmCycle " );\r
return Service.START_STICKY;\r
}\r
} else {\r
stringBuilder1 = new StringBuilder();\r
stringBuilder1.append("STWORKMODE_ALARM alarmCycle=");\r
stringBuilder1.append(alarmCycle);\r
- FileOutputUtil.fileOutput(this, "alarmCycle", stringBuilder1.toString());\r
+ FileOutputUtil.fileOutput(runtime.getCacheDir(), "alarmCycle", stringBuilder1.toString());\r
return Service.START_STICKY;\r
}\r
if (ACTION_LOCATION_ALARM.equals(paramIntent.getAction())){\r
stringBuilder1 = new StringBuilder();\r
stringBuilder1.append("LOCATION_ALARM work mod=");\r
stringBuilder1.append(runtime.getLocationInstance().getWorkingMod());\r
- FileOutputUtil.fileOutput(this, "alarmCycle", stringBuilder1.toString());\r
+ FileOutputUtil.fileOutput(runtime.getCacheDir(), "alarmCycle", stringBuilder1.toString());\r
this.locationClient.triggerLocationProcess();\r
return Service.START_STICKY;\r
\r
}\r
-\r
-// if (Constants.ACTION_PASS_DATA_TO_CM_SERVICES.equals(paramIntent.getAction())) {\r
-// deliverDataToCmApp(paramIntent.getIntExtra("cmdId", 0), paramIntent.getStringExtra("cmdJsonData"));\r
-// return Service.START_STICKY;\r
-// }\r
-// if ("com.enqualcomm.support.MONITOR_EXIT".equals(paramIntent.getAction())) {\r
-// deliverDataToCmApp(203, null);\r
-// return Service.START_STICKY;\r
-// }\r
-// if ("cmcm.call.eiot.into.powersave".equals(paramIntent.getAction())) {\r
-// if (cmcm_call_eiot_into_powersave_mode() == 1) {\r
-// Logger.i("3 into powersave return");\r
-// return Service.START_STICKY;\r
-// }\r
-// if (cmcm_call_eiot_into_powersave_mode() == 2) {\r
-// Logger.i("1 out powersave");\r
-// wakeUpFromSleep();\r
-// return Service.START_STICKY;\r
-// }\r
-// } else {\r
-// if (cmcm_call_eiot_into_powersave_mode() == 1) {\r
-// Logger.i("4 into powersave return");\r
-// return Service.START_STICKY;\r
-// }\r
-// if (cmcm_call_eiot_into_powersave_mode() == 2) {\r
-// Logger.i("2 out powersave");\r
-// wakeUpFromSleep();\r
-// }\r
-// this.invokeHandlerServiceChain.processUserRequest(paramIntent, this.connection, this.runtime);\r
-// }\r
+ if(ACTION_HEATR_RATE_START.equals(paramIntent.getAction())){\r
+ this.invokeHandlerServiceChain.processUserRequest(paramIntent, this.connection, this.runtime);\r
+ }\r
}\r
}\r
}\r
AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,paramInt,ACTION_ALARM);\r
}\r
\r
+ public void setHeartRateDetectAlarm(int heartRateDetectAlarmCycle){\r
+ AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,heartRateDetectAlarmCycle,ACTION_HEATR_RATE_START);\r
+ }\r
public void setLocationAlarm(int mod) {\r
// int mod=runtime.getLocationInstance().getWorkingMod();\r
StringBuilder sb=new StringBuilder();\r
locationClient.triggerLocationProcess();\r
\r
Logger.i(sb.toString());\r
- FileOutputUtil.fileOutput(runtime.getContextProxy().context,"LocationAlarm",sb.toString());\r
+ FileOutputUtil.fileOutput(runtime.getCacheDir(),"LocationAlarm",sb.toString());\r
}\r
\r
public void setHeartAlarm(){\r
\r
// locationClient.triggerLocationProcess();\r
Logger.i(sb.toString());\r
- FileOutputUtil.fileOutput(runtime.getContextProxy().context,"HeartAlarm",sb.toString());\r
+ FileOutputUtil.fileOutput(runtime.getCacheDir(),"HeartAlarm",sb.toString());\r
\r
// AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,1, HEART_ALARM);\r
}\r
private static class RequestHandler extends Handler {\r
private final WeakReference<protocolMainServer> mReference;\r
\r
- RequestHandler(protocolMainServer param1CoreService) { this.mReference = new WeakReference(param1CoreService); }\r
+ RequestHandler(protocolMainServer param1CoreService) {\r
+ this.mReference = new WeakReference(param1CoreService);\r
+ }\r
\r
public void handleMessage(Message param1Message) {\r
protocolMainServer coreService = (protocolMainServer)this.mReference.get();\r
ComponentName componentName = new ComponentName("com.ic.protocol", "com.ic.protocol.service.protocolMainServer");\r
Intent intent = (new Intent(protocolMainServer.ACTION_ALARM)).setComponent(componentName);\r
(dev.getContextProxy()).context.startService(intent);\r
- Context context = (dev.getContextProxy()).context;\r
+\r
StringBuilder stringBuilder = new StringBuilder();\r
stringBuilder.append("currentTimeMillis=");\r
stringBuilder.append(l);\r
stringBuilder.append("---lastAlarmTime=");\r
stringBuilder.append(lastAlarmTime);\r
Logger.i("AlarmWakeUp "+ stringBuilder.toString());\r
- FileOutputUtil.fileOutput(context, "alarmWakeUp", stringBuilder.toString());\r
+ FileOutputUtil.fileOutput(dev.getCacheDir(), "alarmWakeUp", stringBuilder.toString());\r
} \r
}\r
\r
}\r
int i = param1Intent.getIntExtra("level", 0) * 100 / param1Intent.getIntExtra("scale", 100);\r
\r
- FileOutputUtil.fileOutput(param1Context,"Battery","BatteryLevel "+i);\r
+ FileOutputUtil.fileOutput(mRuntime.getCacheDir(),"Battery","BatteryLevel "+i);\r
if (i >= 100) {\r
Runtime runtime = BatteryUtil.this.mRuntime;\r
StringBuffer stringBuffer = BatteryUtil.this.mBuffer;\r
// EqcAlgorithmNative.native_EqcAlgorithmMethod4(0, 0, CellInfoUtil.BSSS, CellInfoUtil.MCC, CellInfoUtil.MNC, CellInfoUtil.LAC, CellInfoUtil.CELL_ID);\r
mRuntime.cellinfo = mCellInfo;\r
}\r
- FileOutputUtil.fileOutput((mRuntime.getContextProxy()).context, "onCellLocationChanged", mCellInfo);\r
+ FileOutputUtil.fileOutput(mRuntime.getCacheDir(),"onCellLocationChanged", mCellInfo);\r
CellInfoUtil.releaseWakeLock(mWakeLock);\r
Logger.i(" setCurrentAttachCellInfo " + mCellInfo);\r
\r
stringBuilder.append(CellInfoUtil.BSSS);\r
runtime.cellinfo = stringBuilder.toString();\r
// EqcAlgorithmNative.native_EqcAlgorithmMethod4(1, 0, CellInfoUtil.BSSS, CellInfoUtil.MCC, CellInfoUtil.MNC, CellInfoUtil.LAC, CellInfoUtil.CELL_ID);\r
- FileOutputUtil.fileOutput((mRuntime.getContextProxy()).context, "onCellLocationChanged", mRuntime.cellinfo);\r
+ FileOutputUtil.fileOutput(mRuntime.getCacheDir(), "onCellLocationChanged", mRuntime.cellinfo);\r
CellInfoUtil.releaseWakeLock(mWakeLock);\r
Logger.i(" setCurrentAttachCellInfo " + mCellInfo);\r
\r
import java.io.FileInputStream;\r
import java.io.FileNotFoundException;\r
import java.io.FileOutputStream;\r
+import java.io.InputStream;\r
import java.io.PrintStream;\r
\r
public class FileOutputUtil {\r
- public static void copyFolder(String dirsrc, String dirdst) {\r
+\r
+\r
+ /**\r
+ * 复制单个文件\r
+ * @param oldPath String 原文件路径 如:c:/fqf.txt\r
+ * @param newPath String 复制后路径 如:f:/fqf.txt\r
+ * @return boolean\r
+ */\r
+ public static void copyFile(String oldPath, String newPath) {\r
try {\r
- (new File(dirdst)).mkdirs();\r
- String[] arrayOfString = (new File(dirsrc)).list();\r
- for (byte b = 0; b < arrayOfString.length; b++) {\r
- File file;\r
- if (dirsrc.endsWith(File.separator)) {\r
- StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append(dirsrc);\r
- stringBuilder.append(arrayOfString[b]);\r
- file = new File(stringBuilder.toString());\r
- } else {\r
- StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append(dirsrc);\r
- stringBuilder.append(File.separator);\r
- stringBuilder.append(arrayOfString[b]);\r
- file = new File(stringBuilder.toString());\r
- } \r
- if (file.isFile()) {\r
- FileInputStream fileInputStream = new FileInputStream(file);\r
- StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append(dirdst);\r
- stringBuilder.append("/");\r
- stringBuilder.append(file.getName().toString());\r
- FileOutputStream fileOutputStream = new FileOutputStream(stringBuilder.toString());\r
- byte[] arrayOfByte = new byte[5120];\r
- while (true) {\r
- int i = fileInputStream.read(arrayOfByte);\r
- if (i != -1) {\r
- fileOutputStream.write(arrayOfByte, 0, i);\r
- continue;\r
- } \r
- break;\r
- } \r
- fileOutputStream.flush();\r
- fileOutputStream.close();\r
- fileInputStream.close();\r
- } \r
- if (file.isDirectory()) {\r
- StringBuilder stringBuilder1 = new StringBuilder();\r
- stringBuilder1.append(dirsrc);\r
- stringBuilder1.append("/");\r
- stringBuilder1.append(arrayOfString[b]);\r
- String str = stringBuilder1.toString();\r
- StringBuilder stringBuilder2 = new StringBuilder();\r
- stringBuilder2.append(dirdst);\r
- stringBuilder2.append("/");\r
- stringBuilder2.append(arrayOfString[b]);\r
- copyFolder(str, stringBuilder2.toString());\r
- } \r
- } \r
- } catch (Exception e) {\r
+ int bytesum = 0;\r
+ int byteread = 0;\r
+ File oldfile = new File(oldPath);\r
+ if (oldfile.exists()) { //文件存在时\r
+ InputStream inStream = new FileInputStream(oldPath); //读入原文件\r
+ FileOutputStream fs = new FileOutputStream(newPath);\r
+ byte[] buffer = new byte[1444];\r
+ int length;\r
+ while ( (byteread = inStream.read(buffer)) != -1) {\r
+ bytesum += byteread; //字节数 文件大小\r
+ System.out.println(bytesum);\r
+ fs.write(buffer, 0, byteread);\r
+ }\r
+ inStream.close();\r
+ }\r
+ }\r
+ catch (Exception e) {\r
+ System.out.println("复制单个文件操作出错");\r
+ e.printStackTrace();\r
+\r
+ }\r
+\r
+ }\r
+\r
+ /**\r
+ * 复制整个文件夹内容\r
+ * @param oldPath String 原文件路径 如:c:/fqf\r
+ * @param newPath String 复制后路径 如:f:/fqf/ff\r
+ * @return boolean\r
+ */\r
+ public static void copyFolder(String oldPath, String newPath) {\r
+\r
+ try {\r
+ File dstdir=new File(newPath);\r
+ if (!dstdir.exists()) {\r
+ dstdir.mkdirs();//如果文件夹不存在 则建立新文件夹\r
+ }\r
+ File a=new File(oldPath);\r
+ String[] file=a.list();\r
+ File temp=null;\r
+ for (int i = 0; i < file.length; i++) {\r
+ if(oldPath.endsWith(File.separator)){\r
+ temp=new File(oldPath+file[i]);\r
+ }\r
+ else{\r
+ temp=new File(oldPath+File.separator+file[i]);\r
+ }\r
+\r
+ if(temp.isFile()){\r
+ FileInputStream input = new FileInputStream(temp);\r
+ FileOutputStream output = new FileOutputStream(newPath + "/" +\r
+ (temp.getName()).toString());\r
+ byte[] b = new byte[1024 * 5];\r
+ int len;\r
+ while ( (len = input.read(b)) != -1) {\r
+ output.write(b, 0, len);\r
+ }\r
+ output.flush();\r
+ output.close();\r
+ input.close();\r
+ }\r
+ if(temp.isDirectory()){//如果是子文件夹\r
+ copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]);\r
+ }\r
+ }\r
+ }\r
+ catch (Exception e) {\r
System.out.println("复制整个文件夹内容操作出错");\r
e.printStackTrace();\r
- } \r
+\r
+ }\r
+\r
}\r
\r
- public static void deleteDir(Context paramContext) { deleteDirWihtFile(new File(String.valueOf(paramContext.getExternalCacheDir()))); }\r
+ public static void deleteDir(Context paramContext) {\r
+ deleteDirWihtFile(new File(String.valueOf(paramContext.getExternalCacheDir())));\r
+ }\r
\r
private static void deleteDirWihtFile(File paramFile) {\r
if (paramFile != null)\r
} \r
}\r
\r
- public static void fileOutput(Context paramContext, String filename, String msg) {\r
+ public static void fileOutput(File dir, String filename, String msg) {\r
String str = TimeUtil.getSystemTime();\r
- File dir = paramContext.getExternalCacheDir();\r
+\r
StringBuilder stringBuilder = new StringBuilder();\r
stringBuilder.append(filename);\r
stringBuilder.append(".txt");\r
if (DEBUG) {\r
Log.e(TAG, msg);\r
if (protocolMainServer.getInstance()!=null)\r
- FileOutputUtil.fileOutput(protocolMainServer.getInstance().getApplicationContext(),"log",TAG + " "+ msg);\r
+ FileOutputUtil.fileOutput(protocolMainServer.getInstance().getRuntime().getCacheDir(),"log",TAG + " "+ msg);\r
}\r
\r
\r
if (DEBUG) {\r
Log.e(TAG, "[" + funcName + "]" + msg);\r
if (protocolMainServer.getInstance()!=null)\r
- FileOutputUtil.fileOutput(protocolMainServer.getInstance().getApplicationContext(),"log",TAG + " "+ "[" + funcName + "]" + msg);\r
+ FileOutputUtil.fileOutput(protocolMainServer.getInstance().getRuntime().getCacheDir(),"log",TAG + " "+ "[" + funcName + "]" + msg);\r
}\r
}\r
}\r
import com.ic.protocol.LocationClient;\r
import com.ic.protocol.adapter.protocolAPIHelper;\r
import com.ic.protocol.bean.StringMessage;\r
+import com.ic.protocol.service.HeartRateManager;\r
import com.ic.protocol.service.protocolMainServer;\r
\r
import java.io.UnsupportedEncodingException;\r
@Override\r
public boolean handleCmd(protocolAPIHelper.CMD_TYPE type, String cmd) {\r
\r
+ //普通非二进制命令用此函数处理\r
Runtime runtime=protocolMainServer.getInstance().getRuntime();\r
boolean ret=true;\r
Logger.i("handleCmd "+type.name() + " strLen="+cmd.length());\r
- FileOutputUtil.fileOutput(protocolMainServer.getInstance().getApplicationContext(),"APILog", " recv " + cmd);\r
+ FileOutputUtil.fileOutput(protocolMainServer.getInstance().getRuntime().getCacheDir(),"APILog", " recv " + cmd);\r
switch (type){\r
case BP00:\r
API.handleBP00(cmd);\r
DeliverCMDMessageToSystem("BP03",cmd);//通知下面线程状态变化\r
\r
break;\r
-// case BP28:\r
-// API.handleBP28(NettyConnection.this ,cmd);\r
-// Logger.i("服务器收到语音BP28");\r
-// DeliverCMDMessageToSystem("BP28",cmd);//通知下面线程状态变化\r
-//\r
-// break;\r
case BPTM:\r
// API.handleBPTM(cmd);\r
Logger.i("服务器收到校时命令APTM");\r
Logger.i("收到服务器关机命令BP31");\r
DeliverCMDMessageToSystem("poweroff",cmd);//通知下面线程状态变化\r
break;\r
+\r
+ case BPXL:\r
+ API.handleBPXL(cmd,NettyConnection.this);\r
+ Logger.i("收到服务器心率检测命令");\r
+ HeartRateManager.triggerPPGtest();\r
+ break;\r
+ case BPXY:\r
+ API.handleBPXY(cmd,NettyConnection.this);\r
+ Logger.i("收到服务器血压检测命令");\r
+ HeartRateManager.triggerPPGtest();\r
+ break;\r
+ case BPJZ:\r
+ API.handleBPJZ(cmd,NettyConnection.this,runtime);\r
+ Logger.i("收到服务器血压校准命令");\r
+\r
}\r
\r
return ret;\r
@Override\r
public boolean handleCmd(protocolAPIHelper.CMD_TYPE type, String cmd, byte[] bytes) {\r
\r
+ //只有需要传递二级制数据的才需要这个函数,目前只有BP28需要\r
boolean ret=true;\r
Logger.i("handleCmd "+type.name() + " "+cmd+" bytelen="+bytes.length );\r
- FileOutputUtil.fileOutput(protocolMainServer.getInstance().getApplicationContext(),"APILog", " recv " +new String(bytes));\r
+ FileOutputUtil.fileOutput(protocolMainServer.getInstance().getRuntime().getCacheDir(),"APILog", " recv " +new String(bytes));\r
switch (type) {\r
case BP28:\r
API.handleBP28(NettyConnection.this,cmd, bytes);\r
if (!isServerConnected()){\r
\r
log("skiped"+cmd);\r
- FileOutputUtil.fileOutput(protocolMainServer.getInstance().getApplicationContext(),"APILog"," skiped " + cmd);\r
+ FileOutputUtil.fileOutput(protocolMainServer.getInstance().getRuntime().getCacheDir(),"APILog"," skiped " + cmd);\r
return false;\r
}else{\r
log("send "+cmd);\r
}\r
);\r
\r
- FileOutputUtil.fileOutput(protocolMainServer.getInstance().getApplicationContext(),"APILog"," sent " + cmd);\r
+ FileOutputUtil.fileOutput(protocolMainServer.getInstance().getRuntime().getCacheDir(),"APILog"," sent " + cmd);\r
\r
}\r
\r
import com.ic.protocol.R;\r
import com.ic.protocol.bean.Contact;\r
import com.ic.protocol.service.AudioService;\r
+import com.ic.protocol.service.HeartRateManager;\r
\r
import java.util.concurrent.TimeUnit;\r
\r
\r
import static android.os.PowerManager.ACQUIRE_CAUSES_WAKEUP;\r
import static android.os.PowerManager.SCREEN_DIM_WAKE_LOCK;\r
+import static com.ic.protocol.Constants.ACTION_HEATR_RATE_START;\r
\r
public class ProcessReceiver extends BroadcastReceiver {\r
private static final int MICRO_CHAT = 2;\r
this.mNotificationManager = (NotificationManager)paramContext.getSystemService(Context.NOTIFICATION_SERVICE);\r
this.mNotificationManager.notify(1, notification);\r
}\r
- \r
+\r
+ @Override\r
public void onReceive(Context paramContext, Intent paramIntent) {\r
Contact contact;\r
String str = paramIntent.getAction();\r
SharPreferenceUtil.setPrefBoolean(paramContext, "key_is_resume", paramIntent.getBooleanExtra("is_resume", false));\r
return;\r
}\r
- if ("com.enqualcomm.support.DIALOG".equals(str)) {\r
- contact = (Contact)paramIntent.getParcelableExtra("contact");\r
- SharPreferenceUtil.getPrefBoolean(paramContext, "key_is_resume", false);\r
- boolean bool = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false);\r
-// if (contact != null && !bool) {\r
-// if (!DeviceInfoUtil.isTopActivity(paramContext)) {\r
-// initMyDialog(paramContext, contact, 1);\r
-// playNotificationVoice(paramContext);\r
-// }\r
-// screenOn(paramContext);\r
-// return;\r
-// }\r
+ if (ACTION_HEATR_RATE_START.equals(str)) {\r
+// contact = (Contact)paramIntent.getParcelableExtra("contact");\r
+// SharPreferenceUtil.getPrefBoolean(paramContext, "key_is_resume", false);\r
+\r
+\r
} else if ("com.enqualcomm.imessage.SOS_ACTION".equals(str)) {\r
if (paramIntent.getIntExtra("sos_end", 0) == 0) {\r
// EqcAlgorithmNative.native_EqcAlgorithmMethod3(8);\r
(new CameraUtil(paramContext)).getPictur(str1);\r
return;\r
}\r
- if ("com.enqualcomm.support.CloseUnreadMsg".equals(paramIntent.getAction()) || "android.intent.action.BATTERY_LOW".equals(paramIntent.getAction())) {\r
-// if (mCustomDialog != null && mCustomDialog.isShowing())\r
-// mCustomDialog.dismiss();\r
-// if (this.mCustomNotification != null && this.mCustomNotification.isShowing())\r
-// this.mCustomNotification.dismiss();\r
- return;\r
- }\r
- if ("com.enqualcomm.support.ACTION_MISSED_CALL_GET".equals(str)) {\r
- Contact contact1 = (Contact)paramIntent.getParcelableExtra("contact");\r
- contact1.extra = paramIntent.getStringExtra("date");\r
- boolean bool = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false);\r
-// if (contact1 != null && !bool) {\r
-// initMyDialog(paramContext, contact1, 2);\r
-// playNotificationVoice(paramContext);\r
-// screenOn(paramContext);\r
-// return;\r
-// }\r
- }\r
+\r
+\r
}\r
}\r
\r