release V664
authorsnickersun <scy@incartech.cn>
Mon, 19 Oct 2020 15:23:35 +0000 (23:23 +0800)
committersnickersun <scy@incartech.cn>
Mon, 19 Oct 2020 15:23:35 +0000 (23:23 +0800)
1、protocol_ic AP03添加 充电提示(用预留位表示)
2、修复protocol_jiai BP93 解码问题
3、拍照添加 persist.sys.camera_cap_mirror persist.sys.camera_capsize persist.sys.camera_orientation persist.sys.capture_quality 来控制照片方向,是否镜像等参数
4、拍照后 通过 persist.sys.do_check_condition判断是否执行 心率,体温检测。
5、优化关机事件,放宽限定条件。
6、添加 照片watermark时间格式 persist.sys.needWaterMark
7、runtime中添加 getMsAfterLastPowerPlugin  getMsAfterLastPowerPlugout 函数,暂时未启用,用于判断充电经过了多久。

14 files changed:
app/app.iml
app/release/ICSer_V664_2010192321_release.apk [moved from app/release/ICSer_V661_2010161805_release.apk with 78% similarity]
app/release/output.json
app/src/main/java/com/enqualcomm/support/Config.java
app/src/main/java/com/enqualcomm/support/LocationClient.java
app/src/main/java/com/enqualcomm/support/bean/Runtime.java
app/src/main/java/com/enqualcomm/support/service/Deliver.java
app/src/main/java/com/enqualcomm/support/service/KeepAlive.java
app/src/main/java/com/enqualcomm/support/utils/CameraUtil.java
app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java
app/src/main/java/com/enqualcomm/support/utils/TimeUtil.java
app/src/main/java/com/ic/protocols/protocol_ic.java
app/src/main/java/com/ic/protocols/protocol_jiai.java
app/version_code.properties

index 497b2ac..d1100d6 100644 (file)
     <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
similarity index 78%
rename from app/release/ICSer_V661_2010161805_release.apk
rename to app/release/ICSer_V664_2010192321_release.apk
index 65a6a8b..ad509c6 100644 (file)
Binary files a/app/release/ICSer_V661_2010161805_release.apk and b/app/release/ICSer_V664_2010192321_release.apk differ
index 53821ec..0c0f357 100644 (file)
@@ -1 +1 @@
-[{"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
index ff64e09..35fdd1c 100644 (file)
@@ -81,6 +81,7 @@ public class Config {
     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
@@ -729,6 +730,12 @@ public class Config {
     }\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
index 2757e71..31cdb68 100644 (file)
@@ -804,8 +804,6 @@ public void updateCellInfo() {
    * 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
@@ -1027,31 +1025,6 @@ public void updateCellInfo() {
   })).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
index 554addd..ea06474 100644 (file)
@@ -491,9 +491,30 @@ public class Runtime {
 \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
index e97f9d7..8142dbd 100644 (file)
@@ -20,6 +20,7 @@ import com.enqualcomm.support.Constants;
 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
@@ -385,8 +386,23 @@ public class Deliver extends AbstractConnectionService {
     // 把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
index abd8488..1ad197f 100644 (file)
@@ -406,20 +406,14 @@ public class KeepAlive extends AbstractConnectionService {
     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
index fd5dd1f..f53fd02 100644 (file)
@@ -11,9 +11,11 @@ import android.hardware.Camera;
 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
@@ -28,7 +30,7 @@ public class CameraUtil implements SurfaceTexture.OnFrameAvailableListener {
   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
@@ -44,7 +46,7 @@ public class CameraUtil implements SurfaceTexture.OnFrameAvailableListener {
               CoreService.getInstance().DevliverStringMessage("PhotoRemoteTaken",str);\r
             }\r
           } else {\r
-            ICLogger.i("空间不足,保存失败");\r
+            ICLogger.i("camera 空间不足,保存失败");\r
           } \r
         } \r
         CameraUtil.this.releaseCamera();\r
@@ -56,11 +58,12 @@ public class CameraUtil implements SurfaceTexture.OnFrameAvailableListener {
   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
@@ -117,17 +120,43 @@ public class CameraUtil implements SurfaceTexture.OnFrameAvailableListener {
         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
@@ -136,7 +165,7 @@ public class CameraUtil implements SurfaceTexture.OnFrameAvailableListener {
         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
@@ -148,11 +177,27 @@ public class CameraUtil implements SurfaceTexture.OnFrameAvailableListener {
   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
@@ -184,10 +229,12 @@ public class CameraUtil implements SurfaceTexture.OnFrameAvailableListener {
   \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
@@ -209,17 +256,29 @@ public class CameraUtil implements SurfaceTexture.OnFrameAvailableListener {
     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
index e1060e0..162197a 100644 (file)
@@ -289,8 +289,22 @@ public class ProcessReceiver extends BroadcastReceiver {
         // 把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
@@ -325,11 +339,26 @@ public class ProcessReceiver extends BroadcastReceiver {
         //创建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
index ea0d71f..d5be643 100644 (file)
@@ -22,6 +22,8 @@ public class TimeUtil {
 \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
index 677e357..ca72bdb 100644 (file)
@@ -454,7 +454,7 @@ public class protocol_ic {
         //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
index 483a813..688cc74 100644 (file)
@@ -1658,7 +1658,7 @@ public static StringMessage AP50(Runtime ds){
             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
index 5f4591c..efdcf2d 100644 (file)
@@ -1,2 +1,2 @@
-#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