<output-test url="file://$MODULE_DIR$/build/intermediates/javac/debugUnitTest/classes"/>\r
<exclude-output/>\r
<content url="file://$MODULE_DIR$">\r
- <sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debug/compileDebugRenderscript/out" isTestSource="false" generated="true"/>\r
- <sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debug/compileDebugAidl/out" isTestSource="false" generated="true"/>\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debug/out" isTestSource="false" generated="true"/>\r
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debug/compileDebugAidl/out" isTestSource="false" generated="true"/>\r
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debug/compileDebugRenderscript/out" isTestSource="false" generated="true"/>\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true"/>\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" generated="true"/>\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" generated="true"/>\r
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true"/>\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debugAndroidTest/compileDebugAndroidTestAidl/out" isTestSource="true" generated="true"/>\r
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true"/>\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debugAndroidTest/out" isTestSource="true" generated="true"/>\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debugAndroidTest/compileDebugAndroidTestRenderscript/out" isTestSource="true" generated="true"/>\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" generated="true"/>\r
-[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":661,"versionName":"2010161805","enabled":true,"outputFile":"ICSer_V661_2010161805_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V661_2010161805_release.apk","properties":{}}]
\ No newline at end of file
+[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":664,"versionName":"2010192321","enabled":true,"outputFile":"ICSer_V664_2010192321_release.apk","fullName":"release","baseName":"release"},"path":"ICSer_V664_2010192321_release.apk","properties":{}}]
\ No newline at end of file
return json;\r
}\r
\r
+\r
public final static boolean isL03Tracker=getIsL03tracker();\r
public final static boolean upload_logs_via_ftp=false;\r
final static String KeyProtocolServerIP="ProtocolServerIP";\r
}\r
return en;\r
}\r
-\r
+ public static boolean needWaterMark(){\r
+ String customname=getSystemProperties("persist.sys.needWaterMark","true");\r
+ if(customname.trim().equals("true")){\r
+ return true;\r
+ }else\r
+ return false;\r
+ }\r
}\r
\r
* else return false\r
*/\r
private boolean checkNoMoveTimeout(){\r
-\r
-\r
noMove=runtime.getLastStepCount() == runtime.getTotalStepCount();\r
runtime.updateFZDDevStatusMoving(!noMove); //设置当前运动状态\r
ICLogger.i(" checkNoMoveTimeout last_noMove "+last_noMove+" noMove "+noMove);\r
})).start(); }\r
\r
\r
- private void sendBatteryNotification() {\r
- if (runtime.getHaveBatteryChange() && !runtime.getBatterychanging() && !this.batteryNotification) {\r
-// connection.send(API.H05(runtime, "2"));\r
- ICLogger.i("sendBatteryNotification LevelChanged ");\r
- this.batteryNotification = true;\r
- }\r
- if (runtime.getBatteryLow() && !runtime.getBatterychanging() && !this.batteryLowNotification) {\r
-// connection.send(API.H05(runtime, "1"));\r
- ICLogger.i("sendBatteryNotification Low Battery ");\r
-\r
- if (runtime.getBatteryLow()) {\r
- runtime.setAlarmType(Runtime.AlarmType.ALARM_LOWBATTERY);\r
- //trigger AP10 报警低电\r
-// connection.send(protocolAPIHelper.getWarningMSG(runtime));\r
- ICLogger.i("triggerSOSLocationProcess ");\r
- LocationClient.getInstance().triggerSOSLocationProcess();\r
- }\r
-\r
- this.batteryLowNotification = true;\r
- }\r
- if (runtime.getBatterychanging()) {\r
- this.batteryNotification = false;\r
- this.batteryLowNotification = false;\r
- }\r
- }\r
// 飞行模式 1 开启 0 关闭\r
public void setAirMode(int paramInt) {\r
boolean isAirModeOn = this.mSignalUtil.IsAirModeOn();\r
\r
private boolean PowerConnected=false;\r
\r
+ private long msPowerConnectionStatusChangedTime=0;\r
public void setPowerConnected(boolean connected){\r
- PowerConnected=connected;\r
+ if (PowerConnected!=connected){\r
+ msPowerConnectionStatusChangedTime=System.currentTimeMillis();\r
+ PowerConnected=connected;\r
+ }\r
+ }\r
+\r
+ //获取上次开始充电到现在的时间 ms\r
+ public long getMsAfterLastPowerPlugin(){\r
+ if (PowerConnected){\r
+ return (System.currentTimeMillis()-msPowerConnectionStatusChangedTime);\r
+ }else\r
+ return 0;\r
}\r
+\r
+ //获取上次停止充电到现在的时间 ms\r
+ public long getMsAfterLastPowerPlugout(){\r
+ if (!PowerConnected){\r
+ return (System.currentTimeMillis()-msPowerConnectionStatusChangedTime);\r
+ }else\r
+ return 0;\r
+ }\r
+\r
public boolean isPowerConnected(){\r
return PowerConnected;\r
}\r
import com.enqualcomm.support.CoreService;\r
import com.enqualcomm.support.R;\r
import com.enqualcomm.support.bean.VoiceContent;\r
+import com.enqualcomm.support.utils.TemperatureUtil;\r
import com.enqualcomm.support.utils.TimeUtil;\r
import com.ic.protocols.protocolAPIHelper;\r
import com.enqualcomm.support.bean.Contact;\r
// 把voiceContent拆解成1024的分包\r
Util.parseToVoicePacketSent(voiceContent);\r
//trigger 分包发送\r
- if (CoreService.getInstance().getConnection()!=null)\r
+ if (CoreService.getInstance().getConnection()!=null) {\r
+\r
+\r
+ if(Util.getSystemProperties("persist.sys.do_check_condition","false").equals("true")) {\r
+ //开启测温\r
+ TemperatureUtil.DoTempTest();\r
+\r
+ try {\r
+ Thread.sleep(5000);\r
+ } catch (Exception e) {\r
+ }\r
+ //开启测量PPG\r
+ HeartRateManager.triggerPPGtest();\r
+ }\r
+\r
CoreService.getInstance().getConnection().DeliverCMDMessageToSystem("SentVoicePacket", "");\r
+ }\r
return true;\r
} else if ("poweroffCheckSim".equals(paramStringMessage.cmd())) {\r
paramRuntime.setShutdown(true);\r
public void onReceive(Context param1Context, Intent param1Intent) {\r
boolean bool = param1Intent.getBooleanExtra("reboot", false);\r
ICLogger.i("Shutdown Received! reboot="+bool);\r
- if (KeepAlive.this.mRuntime.getBatteryLow() && !KeepAlive.this.mRuntime.getBatterychanging() && !bool && !KeepAlive.this.mRuntime.isShutdown()){\r
- /*电量低,没有充电,且不是服务器让关闭的*/\r
-// if (KeepAlive.this.mRuntime.getBatteryLow()){\r
-// KeepAlive.this.mRuntime.setAlarmType(Runtime.AlarmType.ALARM_LOWBATTERY);\r
+ if (!bool && !KeepAlive.this.mRuntime.isShutdown()){\r
+ /*电量低,不是重启,且不是服务器让关闭的*/\r
KeepAlive.this.mRuntime.setAlarmType(Runtime.AlarmType.ALARM_POWER_OFF);\r
- ICLogger.i("triggerSOSLocationProcess ");\r
+ ICLogger.i("triggerSOSLocationProcess ");\r
LocationClient.getInstance().triggerSOSLocationProcess();\r
// Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(KeepAlive.this.mRuntime));\r
-\r
ICLogger.i("Shutdown Received! send AP10 !");\r
-// }\r
-\r
}\r
-\r
}\r
}\r
}\r
import android.media.ToneGenerator;\r
import android.os.Environment;\r
import android.os.StatFs;\r
+import android.text.TextUtils;\r
import android.view.SurfaceView;\r
import android.view.WindowManager;\r
\r
+import com.enqualcomm.support.Config;\r
import com.enqualcomm.support.CoreService;\r
\r
import java.io.BufferedOutputStream;\r
private Camera.PictureCallback jpegCallback = new Camera.PictureCallback() {\r
public void onPictureTaken(byte[] param1ArrayOfByte, Camera param1Camera) {\r
StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append("format=");\r
+ stringBuilder.append("camera format=");\r
stringBuilder.append(CameraUtil.this.mPs.getPictureFormat());\r
ICLogger.i(stringBuilder.toString());\r
if (CameraUtil.this.mPs.getPictureFormat() == 256) {\r
CoreService.getInstance().DevliverStringMessage("PhotoRemoteTaken",str);\r
}\r
} else {\r
- ICLogger.i("空间不足,保存失败");\r
+ ICLogger.i("camera 空间不足,保存失败");\r
} \r
} \r
CameraUtil.this.releaseCamera();\r
String mNumber;\r
\r
private int mOrientation;\r
- \r
+ private int custom_camera_orientation=0;\r
+ private int custom_camera_mirror=0;\r
private Camera.Parameters mPs;\r
\r
private Camera.ShutterCallback shutterCallback = new Camera.ShutterCallback() {\r
- public void onShutter() { ICLogger.i("shutterCallback"); }\r
+ public void onShutter() { ICLogger.i("camera shutterCallback"); }\r
};\r
\r
private SurfaceTexture surfaceTexture;\r
stringBuilder.append(this.mNumber);\r
stringBuilder.append(".jpg");\r
str = stringBuilder.toString();\r
- Bitmap bitmap2 = BitmapFactory.decodeByteArray(paramArrayOfByte, 0, paramArrayOfByte.length);\r
-// Bitmap bitmap1 = bitmap2;\r
+ Bitmap bitmap1 = BitmapFactory.decodeByteArray(paramArrayOfByte, 0, paramArrayOfByte.length);\r
+ Bitmap bitmap2 = bitmap1;\r
+\r
+\r
+// if ((this.context.getResources().getConfiguration()).orientation == 1) {\r
+ custom_camera_mirror = Util.getSystemPropertiesInt("persist.sys.camera_cap_mirror",0);\r
+ Matrix matrix = new Matrix();\r
+ matrix.reset();\r
+ switch(custom_camera_orientation)\r
+ {\r
+ case 90:\r
+ case 270:\r
+ matrix.postRotate(custom_camera_orientation);\r
+ if(custom_camera_mirror==-1)\r
+ matrix.postScale(-1, 1);\r
+ else if(custom_camera_mirror==-2)\r
+ matrix.postScale(1,-1);\r
+\r
+ bitmap2 = Bitmap.createBitmap(bitmap1, 0, 0, bitmap1.getWidth(), bitmap1.getHeight(), matrix, true);\r
+ break;\r
+ case 0:\r
+ case 180:\r
+ if(custom_camera_mirror<0) {\r
+ if (custom_camera_mirror == -1)\r
+ matrix.postScale(-1, 1);\r
+ else if (custom_camera_mirror == -2)\r
+ matrix.postScale(1, -1);\r
+ bitmap2 = Bitmap.createBitmap(bitmap1, 0, 0, bitmap1.getWidth(), bitmap1.getHeight(), matrix, true);\r
+ }\r
+ default:\r
+ break;\r
+ }\r
+\r
Bitmap bitmap3 = bitmap2;\r
- if ((this.context.getResources().getConfiguration()).orientation == 1) {\r
-// Matrix matrix = new Matrix();\r
-// matrix.reset();\r
- // matrix.postRotate(this.mOrientation);\r
- // bitmap1 = Bitmap.createBitmap(bitmap2, 0, 0, bitmap2.getWidth(), bitmap2.getHeight(), matrix, true);\r
-// bitmap3 = ImageUtil.drawTextToLeftTop(this.context,bitmap2,TimeUtil.getSystemTime(),40,0xFF4000 ,25,-100);\r
+ if(Config.needWaterMark()) {\r
+ bitmap3 = ImageUtil.drawTextToLeftTop(this.context, bitmap2, TimeUtil.getSystemTimeForCameraMark(), 50, Color.RED, 25, 25);\r
}\r
- bitmap3 = ImageUtil.drawTextToLeftTop(this.context,bitmap2,TimeUtil.getSystemTime(),50, Color.RED ,25,25);\r
File file = new File(str);\r
if (!file.exists())\r
file.createNewFile(); \r
bufferedOutputStream.flush();\r
bufferedOutputStream.close();\r
\r
- ICLogger.i("Take Photo and Save to "+str);\r
+ ICLogger.i("camera Take Photo and Save to "+str);\r
} \r
return str;\r
} catch (Exception e) {\r
private void takePicture(Context paramContext) {\r
if (this.mCamera != null) {\r
SurfaceView surfaceView = new SurfaceView(paramContext);\r
+ int width=640;\r
+ int height=480;\r
try {\r
this.mCamera.setPreviewDisplay(surfaceView.getHolder());\r
this.mPs = this.mCamera.getParameters();\r
- this.mPs.setPictureSize(640, 480);\r
- ICLogger.i("CameraUtil---setCameraDisplayOrientation");\r
+ String picsize=Util.getSystemProperties("persist.sys.camera_capsize","640x480");\r
+\r
+ if (!picsize.trim().isEmpty() ){\r
+ String sizes[]= picsize.toLowerCase().split("x");\r
+ if(sizes.length==2){\r
+ try{\r
+ int tmpw=Integer.parseInt(sizes[0]);\r
+ int tmph=Integer.parseInt(sizes[1]);\r
+ width=tmpw;\r
+ height=tmph;\r
+ }catch (Exception e){}\r
+ }\r
+ }\r
+\r
+ ICLogger.i("CameraUtil---setCamera capture size "+ width+"x"+height );\r
+ this.mPs.setPictureSize(width, height);\r
setCameraDisplayOrientation(paramContext, 0, this.mCamera);\r
this.mCamera.setParameters(this.mPs);\r
ICLogger.i("CameraUtil---startPreview");\r
\r
public int getDisplayRotation(Context paramContext) {\r
int i = ((WindowManager)paramContext.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getRotation();\r
+\r
StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append("getDisplayRotation rotation=");\r
+ stringBuilder.append("camera getDisplayRotation rotation=");\r
stringBuilder.append(i);\r
ICLogger.i(stringBuilder.toString());\r
+\r
switch (i) {\r
default:\r
return 0;\r
this.mNumber = paramString;\r
}\r
\r
- public void onFrameAvailable(SurfaceTexture paramSurfaceTexture) { ICLogger.i("onFrameAvailable"); }\r
+ public void onFrameAvailable(SurfaceTexture paramSurfaceTexture) { ICLogger.i("camera onFrameAvailable"); }\r
\r
public void setCameraDisplayOrientation(Context paramContext, int paramInt, Camera paramCamera) {\r
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();\r
Camera.getCameraInfo(paramInt, cameraInfo);\r
paramInt = getDisplayRotation(paramContext);\r
+ custom_camera_orientation=Util.getSystemPropertiesInt("persist.sys.camera_orientation",0);\r
+ ICLogger.i("camera getDisplayRotation1 "+paramInt+" cameraInfo.orientation "+cameraInfo.orientation+ " custom_camera_orientation "+custom_camera_orientation);\r
+\r
+ if (cameraInfo.facing == 1) {\r
+ paramInt = (360 - (custom_camera_orientation + paramInt) % 360) % 360;\r
+ } else {\r
+ paramInt = (custom_camera_orientation - paramInt + 360) % 360;\r
+ }\r
+ /*\r
if (cameraInfo.facing == 1) {\r
paramInt = (360 - (cameraInfo.orientation + paramInt) % 360) % 360;\r
} else {\r
paramInt = (cameraInfo.orientation - paramInt + 360) % 360;\r
- } \r
+ }*/\r
+\r
+ ICLogger.i("camera final display orientation "+paramInt);\r
+\r
paramCamera.setDisplayOrientation(paramInt);\r
this.mOrientation = paramInt;\r
}\r
// 把voiceContent拆解成1024的分包\r
Util.parseToVoicePacketSent(voiceContent);\r
//trigger 分包发送\r
- if (CoreService.getInstance().getConnection()!=null)\r
+ if (CoreService.getInstance().getConnection()!=null) {\r
+\r
+ if(Util.getSystemProperties("persist.sys.do_check_condition","false").equals("true")) {\r
+ //开启测温\r
+ TemperatureUtil.DoTempTest();\r
+\r
+ try {\r
+ Thread.sleep(5000);\r
+ } catch (Exception e) {\r
+ }\r
+ //开启测量PPG\r
+ HeartRateManager.triggerPPGtest();\r
+ }\r
+ //开启发送图片\r
CoreService.getInstance().getConnection().DeliverCMDMessageToSystem("SentVoicePacket", "");\r
+ }\r
}\r
}else if (ACTION_SHUTDOWN.equals(str)) {\r
\r
//创建voiceConent并添加到数据\r
final VoiceContent voiceContent = VoiceContent.placeHolderOut(CONTACT_CATEGORY_GROUP, msgFrom, msgUrl,2,2);\r
\r
+\r
// 把voiceContent拆解成1024的分包\r
Util.parseToVoicePacketSent(voiceContent);\r
//trigger 分包发送\r
- if (CoreService.getInstance().getConnection()!=null)\r
+ if (CoreService.getInstance().getConnection()!=null) {\r
+\r
+ if(Util.getSystemProperties("persist.sys.do_check_condition","false").equals("true")) {\r
+ //开启测温\r
+ TemperatureUtil.DoTempTest();\r
+\r
+ try {\r
+ Thread.sleep(5000);\r
+ } catch (Exception e) {\r
+ }\r
+ //开启测量PPG\r
+ HeartRateManager.triggerPPGtest();\r
+ }\r
+ //开启发送照片\r
CoreService.getInstance().getConnection().DeliverCMDMessageToSystem("SentVoicePacket", "");\r
+ }\r
\r
}\r
\r
\r
public static String getLocalTime2(long paramLong) { return (new SimpleDateFormat("MMddHHmmss")).format(new Date(paramLong)); }\r
\r
+ public static String getSystemTimeForCameraMark() { return (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date(System.currentTimeMillis())); }\r
+\r
public static String getSystemTime() { return getSystemTime(System.currentTimeMillis()); }\r
\r
//此处不能随意改动,影响闹铃设置\r
//5555: 计步步数,每次到达 9999 后重 0 开始计 (此处 9999 为示例,可以为2字节int 然后溢出归零)\r
//30: 翻滚次数\r
return genStringMessage(cmdMap.get(CMD_TYPE.AP03),new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP03)).append(CMDSPLIT).append(String.format("%03d",abs(ds.getSignalStrength())))\r
- .append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")\r
+ .append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append(ds.isPowerConnected()?"1":"0")\r
.append(ds.getProtection()).append(ds.getWorkModeStr()).append(CMDSPLIT)\r
.append(ds.getTotalStepCount()).append(CMDSPLIT).append(ds.getRolltimes()).append(CMDEND).toString());\r
}\r
String play_time=cmdlist[5];\r
String vib_time=cmdlist[6];\r
ICLogger.i("收到服务器文本 "+txtmsg+" 序号 "+msg_index_no+" , 播放 "+play_time+" 次,震动 "+vib_time+" 次!");\r
- txtmsg=Util.UrlGB2312ToUTF8(txtmsg);\r
+ txtmsg=Util.decodeUnicode2Utf8(txtmsg);\r
StringMessage msg=AP93(cmdindex);\r
//设定当前工作模式及循环频率\r
connection.send(msg);\r
-#Fri Oct 16 18:05:48 CST 2020\r
-VERSION_CODE=661\r
+#Mon Oct 19 23:21:23 CST 2020\r
+VERSION_CODE=664\r