release V452
authorsnickersun <scy@incartech.cn>
Thu, 16 Jul 2020 10:09:15 +0000 (18:09 +0800)
committersnickersun <scy@incartech.cn>
Thu, 16 Jul 2020 10:09:15 +0000 (18:09 +0800)
1、换antioff 报警声
2、心率血压上报添加血氧
3、低电压报警播放声音

app/release/ICSer_V452_2007161657_release.apk [moved from app/release/ICSer_V445_2007141023_release.apk with 78% similarity]
app/src/main/assets/antioff.mp3 [new file with mode: 0644]
app/src/main/java/com/enqualcomm/support/Constants.java
app/src/main/java/com/enqualcomm/support/service/AntiMonitorService.java
app/src/main/java/com/enqualcomm/support/service/HeartRateManager.java
app/src/main/java/com/enqualcomm/support/utils/BatteryUtil.java
app/version_code.properties

similarity index 78%
rename from app/release/ICSer_V445_2007141023_release.apk
rename to app/release/ICSer_V452_2007161657_release.apk
index 8ee46f3..091d0a2 100644 (file)
Binary files a/app/release/ICSer_V445_2007141023_release.apk and b/app/release/ICSer_V452_2007161657_release.apk differ
diff --git a/app/src/main/assets/antioff.mp3 b/app/src/main/assets/antioff.mp3
new file mode 100644 (file)
index 0000000..791a118
Binary files /dev/null and b/app/src/main/assets/antioff.mp3 differ
index b9ce84e..22bb347 100644 (file)
@@ -214,6 +214,7 @@ public interface Constants {
   public static final String key_ppg="ppg";\r
   public static final String key_bph="bph";\r
   public static final String key_bpl="bpl";\r
+  public static final String key_spo2="sp02";\r
 \r
 \r
   public static final int NEW_MEDIA_PUSH = 100;\r
@@ -300,6 +301,13 @@ public interface Constants {
   public static final String KEY_TEMP_BODY = "body";  // double 体温\r
   public static final String KEY_TEMP_WRIST= "wrist";  //  double 腕温\r
 \r
+  public static String ACTION_ANTI_OFF = "com.ic.ACTION_STRIP";\r
+  public static String KEY_ANTI_EVENT="eventID"; //integer  eventID =1 脱落, eventID =0 佩戴\r
+\r
+\r
+  public static String ACTION_BATTERYLOW = "com.ic.ACTION_BATTERYLOW";\r
+  public static String KEY_BATTERY_EVENT="eventID"; //integer  eventID =1 battery low, eventID =0 解除\r
+\r
 \r
 }\r
 \r
index 1b2f33c..698eb83 100644 (file)
@@ -6,6 +6,8 @@ import android.hardware.Sensor;
 import android.hardware.SensorEvent;\r
 import android.hardware.SensorEventListener;\r
 import android.hardware.SensorManager;\r
+\r
+import android.os.Handler;\r
 import android.os.Message;\r
 import android.os.PowerManager;\r
 \r
@@ -18,11 +20,9 @@ import com.enqualcomm.support.utils.ICLogger;
 \r
 import com.ic.protocols.protocolAPIHelper;\r
 \r
-import java.util.Timer;\r
-import java.util.TimerTask;\r
-import java.util.concurrent.ScheduledThreadPoolExecutor;\r
-\r
-import static java.lang.Thread.*;\r
+import static com.enqualcomm.support.Constants.ACTION_ANTI_OFF;\r
+import static com.enqualcomm.support.Constants.KEY_ANTI_EVENT;\r
+import static java.lang.Thread.sleep;\r
 \r
 \r
 public class AntiMonitorService extends AbstractInvokeHandlerService {\r
@@ -41,14 +41,42 @@ public class AntiMonitorService extends AbstractInvokeHandlerService {
     private static long anti_event_receivedTime=0;\r
     private static int last_send_antoff_event=-1;\r
     private AudioService mAudioService=null;\r
-\r
-\r
+    private Handler  mHandler=null;\r
+     PowerManager.WakeLock mWakeLock = null;\r
+    public AntiMonitorService(){\r
+        if (mHandler==null) {\r
+            mHandler = new Handler() {\r
+                public void handleMessage(Message msg) {\r
+                    super.handleMessage(msg);\r
+                    if (msg.what == 100) {\r
+\r
+                        ICLogger.i("release WakeLock!");\r
+                        if (mWakeLock != null && mWakeLock.isHeld()) {\r
+                            mWakeLock.release();\r
+                            ICLogger.i("release WakeLock!");\r
+                        }\r
+\r
+                    }else if (msg.what == 200){\r
+                        if( mAudioService!=null)\r
+                            mAudioService.stop();\r
+                    }\r
+                }\r
+            };\r
+        }\r
+        if (mWakeLock==null) {\r
+            PowerManager mPowerManager = (PowerManager) CoreService.getInstance().getSystemService(Context.POWER_SERVICE);\r
+//            mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, AntiMonitorService.class.getSimpleName());\r
+            mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, AntiMonitorService.class.getSimpleName());\r
+        }\r
+    }\r
     private void play_notify(){\r
 \r
         if (this.mAudioService == null)\r
             this.mAudioService = new AudioService();\r
 \r
-        this.mAudioService.play(mContext.getAssets(), "warning.mp3");\r
+        this.mAudioService.play(mContext.getAssets(), "antioff.mp3");\r
+        if(mHandler!=null)\r
+            mHandler.sendEmptyMessageDelayed(200,5000);\r
 \r
     }\r
     private void send_antiof_event(){\r
@@ -60,7 +88,7 @@ public class AntiMonitorService extends AbstractInvokeHandlerService {
          if (current_anti_status==0){\r
             //佩戴\r
              if(Config.needBroadcastAntiAlarm) {\r
-                 play_notify();\r
+               //  play_notify();\r
                  send_anti_event_broadcast(0);\r
              }\r
             mRuntime.setAlarmType(Runtime.AlarmType.ALARM_WEARED);\r
@@ -77,6 +105,11 @@ public class AntiMonitorService extends AbstractInvokeHandlerService {
              if(Config.needBroadcastAntiAlarm) {\r
                  play_notify();\r
                  screen_on();\r
+                try {\r
+                    sleep(1000);\r
+                } catch (InterruptedException e) {\r
+                    e.printStackTrace();\r
+                }//delay一会儿再发消息,以屏没有来得急亮起,免界面不响应。\r
                  send_anti_event_broadcast(1);\r
              }\r
              mRuntime.setAlarmType(Runtime.AlarmType.ALARM_ANTIOFF);\r
@@ -140,8 +173,6 @@ public class AntiMonitorService extends AbstractInvokeHandlerService {
         }\r
     }\r
 \r
-    private String ACTION_ANTI_OFF = "com.ic.ACTION_STRIP";\r
-    private String KEY_ANTI_EVENT="eventID"; //integer  eventID =1 脱落, eventID =0 佩戴\r
 \r
     private void send_anti_event_broadcast(int antioff){\r
 \r
@@ -153,9 +184,8 @@ public class AntiMonitorService extends AbstractInvokeHandlerService {
     }\r
 \r
     private void screen_on(){\r
-        PowerManager mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);\r
-        PowerManager.WakeLock mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "tag");\r
-        mWakeLock.acquire(1*1000);//亮屏5秒\r
+        mWakeLock.acquire(5*1000);//亮屏5秒\r
+        mHandler.sendEmptyMessageDelayed(100,2000);\r
     }\r
     private SensorEventListener mSensorEventListener = new SensorEventListener() {\r
 \r
index 402830b..735b91e 100644 (file)
@@ -33,6 +33,7 @@ import static com.enqualcomm.support.Constants.MSG_WHAT_PPG;
 import static com.enqualcomm.support.Constants.key_bph;\r
 import static com.enqualcomm.support.Constants.key_bpl;\r
 import static com.enqualcomm.support.Constants.key_ppg;\r
+import static com.enqualcomm.support.Constants.key_spo2;\r
 \r
 public class HeartRateManager extends AbstractInvokeHandlerService {\r
   private int mNetworkType;\r
@@ -312,7 +313,8 @@ public static void triggerPPGtest(){
         String  ppg = bundle3.getString(key_ppg);\r
         String bph = bundle3.getString(key_bph);\r
         String bpl = bundle3.getString(key_bpl);\r
-        if (ppg == null || bph == null || bpl==null || ppg.isEmpty()||bph.isEmpty()||bpl.isEmpty()) {\r
+        String spo2 = bundle3.getString(key_spo2);\r
+        if (ppg == null || bph == null || bpl==null || spo2==null ||ppg.isEmpty()||bph.isEmpty()||bpl.isEmpty()||spo2.isEmpty()) {\r
           ICLogger.i("MSG_WHAT_PPG Data is null or empty ! Skip!");\r
           callback(message.replyTo, Constants.RESULT_ERROR);\r
 \r
@@ -320,7 +322,7 @@ public static void triggerPPGtest(){
         }\r
 \r
 \r
-          String PPGDATA = protocolAPIHelper.getPPG_ECG_MSG(Integer.valueOf(ppg),Integer.valueOf(bph),Integer.valueOf(bpl));\r
+          String PPGDATA = protocolAPIHelper.getPPG_ECG_MSG(Integer.valueOf(ppg),Integer.valueOf(bph),Integer.valueOf(bpl),Integer.valueOf(spo2));\r
           if (((NettyConnection)connection).isServerConnected()) {\r
             connection.send(protocolAPIHelper.genStringMessage("APHT", PPGDATA));\r
             ICLogger.i("Send PPG " + PPGDATA);\r
index ced2782..c34f93d 100644 (file)
@@ -7,8 +7,14 @@ import android.content.Intent;
 import android.content.IntentFilter;\r
 import android.os.BatteryManager;\r
 import android.os.Build;\r
+import android.os.Handler;\r
+import android.os.Message;\r
+import android.os.PowerManager;\r
 \r
 import com.enqualcomm.support.Config;\r
+import com.enqualcomm.support.CoreService;\r
+import com.enqualcomm.support.service.AntiMonitorService;\r
+import com.enqualcomm.support.service.AudioService;\r
 import com.ic.protocols.protocolAPIHelper;\r
 import com.enqualcomm.support.bean.Runtime;\r
 \r
@@ -22,6 +28,8 @@ import static android.os.BatteryManager.EXTRA_LEVEL;
 import static android.os.BatteryManager.EXTRA_SCALE;\r
 import static android.os.BatteryManager.EXTRA_STATUS;\r
 import static android.os.BatteryManager.EXTRA_VOLTAGE;\r
+import static com.enqualcomm.support.Constants.ACTION_BATTERYLOW;\r
+import static com.enqualcomm.support.Constants.KEY_BATTERY_EVENT;\r
 \r
 public class BatteryUtil {\r
   private BroadcastReceiver batteryChangedReceiver = new BroadcastReceiver() {\r
@@ -73,18 +81,35 @@ public class BatteryUtil {
             mRuntime.setBattery(String.format("%03d",batLevel));\r
             mRuntime.setHaveBatteryChange(false);\r
             mRuntime.setBatteryLow(false);\r
-          } else if (batLevel<25 && batLevel >= 5) {\r
+          } else if (batLevel<25 && batLevel >= 15) {\r
             mRuntime.setBattery(String.format("%03d",batLevel));\r
             mRuntime.setHaveBatteryChange(true);\r
+\r
+          } else if (batLevel<15 && batLevel >= 5) {\r
+            mRuntime.setBattery(String.format("%03d",batLevel));\r
+            mRuntime.setHaveBatteryChange(true);\r
+            mRuntime.setBatteryLow(true);\r
+\r
+            if (Config.LOG_TOFILE) ICLogger.logToFile("Battery","BatteryLow  less than 15%!");\r
+            send_batterylow_event_broadcast(param1Context,1);\r
+            play_waning_notify(param1Context);\r
+            mRuntime.setAlarmType(Runtime.AlarmType.ALARM_LOWBATTERY);\r
+            //trigger AP10 报警定位\r
+            connection.send(protocolAPIHelper.genStringMessage("AP10",protocolAPIHelper.getWarningMSG(mRuntime)));\r
+\r
           } else {\r
             mRuntime.setBattery(String.format("%03d",batLevel));\r
             mRuntime.setHaveBatteryChange(true);\r
             mRuntime.setBatteryLow(true);\r
 \r
-            if (Config.LOG_TOFILE) ICLogger.logToFile("Battery","BatteryLow !");\r
+            if (Config.LOG_TOFILE) ICLogger.logToFile("Battery","BatteryLow less than 5% !");\r
+\r
+            send_batterylow_event_broadcast(param1Context,1);\r
+            play_waning_notify(param1Context);\r
             mRuntime.setAlarmType(Runtime.AlarmType.ALARM_LOWBATTERY);\r
             //trigger AP10 报警定位\r
             connection.send(protocolAPIHelper.genStringMessage("AP10",protocolAPIHelper.getWarningMSG(mRuntime)));\r
+\r
           }\r
 \r
         }else if (Intent.ACTION_BATTERY_LOW.equals(intent.getAction())) {\r
@@ -97,7 +122,7 @@ public class BatteryUtil {
         }else if (Intent.ACTION_BATTERY_OKAY.equals(intent.getAction())){\r
           ICLogger.i("Battery OKAY !");\r
           if (Config.LOG_TOFILE) ICLogger.logToFile("Battery","Battery OKAY !");\r
-\r
+          send_batterylow_event_broadcast(param1Context,0);\r
         }else if (Intent.ACTION_POWER_CONNECTED.equals(intent.getAction())){\r
           ICLogger.i("ACTION_POWER_CONNECTED !");\r
           mRuntime.setPowerConnected(true);\r
@@ -117,7 +142,24 @@ public class BatteryUtil {
         }\r
       }\r
     };\r
-  \r
+  private AudioService mAudioService=null;\r
+  private Handler mHandler=null;\r
+  PowerManager.WakeLock mWakeLock = null;\r
+\r
+  private void play_waning_notify(Context context){\r
+\r
+    if (this.mAudioService == null)\r
+      this.mAudioService = new AudioService();\r
+\r
+    this.mAudioService.play(context.getAssets(), "warning.mp3");\r
+  }\r
+  private void send_batterylow_event_broadcast(Context context,int batlow){\r
+\r
+    Intent intent=new Intent();\r
+    intent.setAction(ACTION_BATTERYLOW);\r
+    intent.putExtra(KEY_BATTERY_EVENT,batlow);\r
+    context.sendBroadcast(intent);\r
+  }\r
   private StringBuffer mBuffer;\r
 \r
   Runtime mRuntime;\r
@@ -125,6 +167,28 @@ public class BatteryUtil {
   public BatteryUtil(Runtime paramRuntime,Connection _connection) {\r
     this.mRuntime = paramRuntime;\r
     connection = _connection;\r
+\r
+    if (mHandler==null) {\r
+      mHandler = new Handler() {\r
+        public void handleMessage(Message msg) {\r
+          super.handleMessage(msg);\r
+          if (msg.what == 100) {\r
+\r
+            if (mWakeLock != null && mWakeLock.isHeld()) {\r
+              mWakeLock.release();\r
+            }\r
+          }else if (msg.what == 200){\r
+            if( mAudioService!=null)\r
+              mAudioService.stop();\r
+          }\r
+        }\r
+      };\r
+    }\r
+    if (mWakeLock==null) {\r
+      PowerManager mPowerManager = (PowerManager) CoreService.getInstance().getSystemService(Context.POWER_SERVICE);\r
+      mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, AntiMonitorService.class.getSimpleName());\r
+    }\r
+\r
   }\r
   \r
   public void registerBroadReceiver() {\r
index a6432c5..5bfb822 100644 (file)
@@ -1,2 +1,2 @@
-#Tue Jul 14 10:23:08 CST 2020\r
-VERSION_CODE=445\r
+#Thu Jul 16 16:57:07 CST 2020\r
+VERSION_CODE=452\r