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
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
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
\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
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
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
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
}\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
}\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
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
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
}\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
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
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
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
}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
}\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
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
-#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