From: kfl_614 Date: Fri, 4 Dec 2020 12:40:37 +0000 (+0800) Subject: add broadcast for zhangyu inc. launcher X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=58a2779195b0f70aa8591d5b157b86a0d4084ae5;p=icworkservice.git add broadcast for zhangyu inc. launcher --- diff --git a/app/IcL02WorkService/release/IcL02WorkService_V57_202012031615_release.apk b/app/IcL02WorkService/release/IcL02WorkService_V57_202012031615_release.apk deleted file mode 100644 index 3466dfc..0000000 Binary files a/app/IcL02WorkService/release/IcL02WorkService_V57_202012031615_release.apk and /dev/null differ diff --git a/app/IcL02WorkService/release/IcL02WorkService_V57_202012041649_release.apk b/app/IcL02WorkService/release/IcL02WorkService_V57_202012041649_release.apk new file mode 100644 index 0000000..b6cdcb5 Binary files /dev/null and b/app/IcL02WorkService/release/IcL02WorkService_V57_202012041649_release.apk differ diff --git a/app/IcL02WorkService/release/output.json b/app/IcL02WorkService/release/output.json index bb8098c..7ef47a6 100644 --- a/app/IcL02WorkService/release/output.json +++ b/app/IcL02WorkService/release/output.json @@ -1 +1 @@ -[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.1","enabled":true,"outputFile":"IcL02WorkService_V57_202012031615_release.apk","fullName":"IcL02WorkServiceRelease","baseName":"IcL02WorkService-release"},"path":"IcL02WorkService_V57_202012031615_release.apk","properties":{}}] \ No newline at end of file +[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.1","enabled":true,"outputFile":"IcL02WorkService_V57_202012041649_release.apk","fullName":"IcL02WorkServiceRelease","baseName":"IcL02WorkService-release"},"path":"IcL02WorkService_V57_202012041649_release.apk","properties":{}}] \ No newline at end of file diff --git a/app/src/main/java/com/ic/work/ThreadPoolManager.java b/app/src/main/java/com/ic/work/ThreadPoolManager.java index a356209..c885690 100644 --- a/app/src/main/java/com/ic/work/ThreadPoolManager.java +++ b/app/src/main/java/com/ic/work/ThreadPoolManager.java @@ -44,6 +44,6 @@ public class ThreadPoolManager { for (Future future : futures) { future.cancel(true); } - + futures.clear(); } } diff --git a/app/src/main/java/com/ic/work/WorkService.java b/app/src/main/java/com/ic/work/WorkService.java index cada709..bbd9289 100644 --- a/app/src/main/java/com/ic/work/WorkService.java +++ b/app/src/main/java/com/ic/work/WorkService.java @@ -57,6 +57,7 @@ import org.threeten.bp.ZoneId; import static com.ic.work.utils.ICWorkConstants.EventType.STOP_ALL_TASK; import static com.ic.work.utils.ICWorkConstants.EventType.TEST_A9_BLOOD; import static com.ic.work.utils.ICWorkConstants.EventType.TEST_AK_BLOOD; +import static com.ic.work.utils.ICWorkConstants.EventType.TEST_BLOOD; import static com.ic.work.utils.ICWorkConstants.EventType.TEST_TEMPERATURE; import static com.ic.work.utils.ICWorkConstants.ServiceType.ACTION_BLOOD; import static com.ic.work.utils.ICWorkConstants.ServiceType.ACTION_HARD_WARE; @@ -81,6 +82,37 @@ public class WorkService extends Service { public static final String KEY_TEMP_WRIST = "wrist"; // double 腕温 public static final String KEY_TEMP_OUT = "out"; // double 腕温 + + //虽然对方单词写错了,但是也不能改 + //心率检测结果广播通知给laucnher + public static final String ACTION_AEE_HEART_RATE = "com.jx.lanucher.heartrate.checkend"; + + //体温检测结果广播通知给laucnher + public static final String ACTION_AEE_TEMPERATURE = "com.jx.lanucher.temperature.checkend"; + + //launcher启动体温service + public static final String ACTION_GET_TEMPERATURE = "com.jx.lanucher.action.temperature"; + + //launcher启动心率service + public static final String ACTION_GET_HEART_RATE = "com.jx.lanucher.action.heartrate"; + + //模式 0:家长实时检测 1:周期上报 2:手表主动检测 + public static final String JX_KEY_MODE = "mode"; + //Result 0 失败 1 成功 + public static final String JX_KEY_RESULT = "result"; + //心率 + public static final String JX_KEY_HEART_RATE = "heartrate"; + //血压低值 + public static final String JX_KEY_HEART_BLOOD_PRESS_L = "bloodpressureL"; + //血压高值 + public static final String JX_KEY_HEART_BLOOD_PRESS_H = "bloodpressureH"; + //血氧 + public static final String JX_KEY_HEART_BLOOD_OXYGEN = "bloodoxygen"; + //类型 + public static final String JX_KEY_HEART_TEMPERATURE_TYPE = "type"; + //温度 + public static final String JX_KEY_HEART_TEMPERATURE = "temp"; + private static final String TXT_ACTION = "action.ic.srvPushTxt"; private static final String TYPE_KEY = "msgType"; private static final String MSG_KEY = "txtMsg"; @@ -100,6 +132,10 @@ public class WorkService extends Service { private LocalDateTime mFinishTime; private BloodSensorManager bloodSensorManager; + //这两个是掌育给过来的测试模式 + //0: 家长实时检测 1:周期上报 2:手表主动检测 + private int jxHeartRateMode = -1; + private int jxTempMode = -1; @Override @@ -153,12 +189,51 @@ public class WorkService extends Service { IcLog.i(TAG, "work service is start"); } + @Override public int onStartCommand(Intent intent, int flags, int startId) { IcLog.i(TAG, "WorkService onStartCommand"); + // 掌育会startService的方式来启动服务,如果已经启动了 + // 不走onCreate,则会走这里 + //可以获取到相关的值,然后去获取心率/体温 + //目前的结果,因为结构的限制,只支持单测量,也就是无法同时测量体温和心率 + //只能测完一个再到一个 + String action = intent.getAction(); + IcLog.d(TAG, "onStartCommand action == > " + action); + //可以通过action来判断 + if (ACTION_GET_HEART_RATE.equals(action)) { + //如果温度在测量,那么就返回失败 + handleJxTestHeartRate(intent); + } else if (ACTION_GET_TEMPERATURE.equals(action)) { + handleJxTestTemperature(intent); + } return super.onStartCommand(intent, flags, startId); } + private void handleJxTestTemperature(Intent intent) { + if (jxHeartRateMode != -1) { + //测量心率正在繁忙,返回失败 + sendTemperatureBroadcast2Jx(false, 0, 0); + } else { + IcLog.d(TAG, "handleJxTestTemperature..."); + jxTempMode = intent.getIntExtra(JX_KEY_MODE, -1); + //测量体温 + EventBus.getDefault().post(new ThreadPoolEvent(TEST_TEMPERATURE)); + } + } + + private void handleJxTestHeartRate(Intent intent) { + if (jxTempMode != -1) { + //如果掌育的温度测试正在繁忙,那么就返回失败 + sendHeartRateBroadcast2Jx(false, 0, 0, 0, 0); + } else { + IcLog.d(TAG, "handleJxTestHeartRate..."); + jxHeartRateMode = intent.getIntExtra(JX_KEY_MODE, -1); + //测量心率 + EventBus.getDefault().post(new ThreadPoolEvent(TEST_BLOOD)); + } + } + @Override public void onDestroy() { super.onDestroy(); @@ -203,6 +278,14 @@ public class WorkService extends Service { @Subscribe(threadMode = ThreadMode.MAIN) public void onMessageEvent(BloodCheckResultEvent event) { + //处理心率测量数据给掌育的 + if (jxHeartRateMode != -1) { + //发广播给掌育 + sendHeartRateBroadcast2Jx(true, event.getHigh(), + event.getLow(), event.getHeart(), event.getOxygen()); + //reset data. + jxHeartRateMode = -1; + } Log.i(TAG, "BloodCheckResultEvent " + event.getHeart()); if (bloodProcess != null) { bloodProcess.sendBloodCheckResult(event.getHigh(), @@ -210,13 +293,61 @@ public class WorkService extends Service { } if (coreService != null) { - coreService.sendBloodValueMessage(event.getHigh(), event.getLow(), event.getHeart(), event.getOxygen()); + coreService.sendBloodValueMessage(event.getHigh(), event.getLow(), + event.getHeart(), event.getOxygen()); } //发送一次广播给 心率 launcher sendHeartBroadcast(event.getHeart(), event.getOxygen()); } + /** + * 发送体温数据给掌育 + * + * @param isSuccess 是否测量成功 + * @param value 体温(优先使用这个) + * @param animal 可能是体温(测试以后再决定是否使用这个) + */ + private void sendTemperatureBroadcast2Jx(boolean isSuccess, double value, double animal) { + IcLog.d(TAG, "sendTemperatureBroadcast2Jx -- > " + + isSuccess + " value == > " + value + + "animal == > " + animal); + Intent intent = new Intent(); + intent.setAction(ACTION_AEE_TEMPERATURE); + intent.putExtra(JX_KEY_RESULT, isSuccess ? "1" : "0"); + intent.putExtra(JX_KEY_MODE, jxTempMode); + intent.putExtra(JX_KEY_HEART_TEMPERATURE, value); + //类型0:手腕模式 1:额头模式 + intent.putExtra(JX_KEY_HEART_TEMPERATURE_TYPE, "1"); + sendBroadcast(intent); + } + + /** + * 发送心率广播给掌育的Launcher + * + * @param high + * @param low + * @param heart + * @param oxygen + */ + private void sendHeartRateBroadcast2Jx(boolean isSuccess, int high, int low, int heart, int oxygen) { + IcLog.d(TAG, "sendHeartRateBroadcast2Jx -- > " + + isSuccess + " high == > " + high + + "low == > " + low + + " heart is =-= > " + heart + + "oxygen == > " + oxygen + ); + Intent intent = new Intent(); + intent.setAction(ACTION_AEE_HEART_RATE); + intent.putExtra(JX_KEY_MODE, jxHeartRateMode); + intent.putExtra(JX_KEY_HEART_BLOOD_OXYGEN, oxygen); + intent.putExtra(JX_KEY_HEART_BLOOD_PRESS_H, high); + intent.putExtra(JX_KEY_HEART_BLOOD_PRESS_L, low); + intent.putExtra(JX_KEY_HEART_RATE, heart); + intent.putExtra(JX_KEY_RESULT, isSuccess ? "1" : "0"); + sendBroadcast(intent); + } + @Subscribe(threadMode = ThreadMode.MAIN) public void onMessageEvent(PedSettingEvent event) { switch (event.getType()) { @@ -273,6 +404,11 @@ public class WorkService extends Service { @Subscribe(threadMode = ThreadMode.MAIN) public void onMessageEvent(TemperatureResultEvent event) { //处理温度 + //处理温度测量数据给掌育的 + if (jxTempMode != -1) { + sendTemperatureBroadcast2Jx(true, event.value, event.animal); + jxTempMode = -1; + } if (tempProcess != null) { tempProcess.sendCurrTempValue(event.value, event.animal, event.tempOut); } @@ -357,6 +493,9 @@ public class WorkService extends Service { int eventType = event.getEventType(); IcLog.i(TAG, "onMessageEvent EventType " + eventType); if (eventType == STOP_ALL_TASK) { + //复位掌育mode参数 + jxHeartRateMode = -1; + jxTempMode = -1; ThreadPoolManager.getInstance().remove(); mIsBusy = false; return; @@ -374,7 +513,7 @@ public class WorkService extends Service { case 2: ThreadPoolManager.getInstance().execute(new PedRecordRunnable(mApp.getRepository())); break; - case 3: + case TEST_BLOOD: ThreadPoolManager.getInstance().execute(new BloodRunnable()); break; case 5: @@ -425,6 +564,7 @@ public class WorkService extends Service { pedIntent.putExtra(KEY_TEMP_BODY, animal); pedIntent.putExtra(KEY_TEMP_OUT, tempOut); sendBroadcast(pedIntent); + IcLog.d(TAG, " sendTempBroadcast..."); } private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { diff --git a/app/src/main/java/com/ic/work/hardware/MessengerCoreService.java b/app/src/main/java/com/ic/work/hardware/MessengerCoreService.java index 4871b76..4aacaa8 100644 --- a/app/src/main/java/com/ic/work/hardware/MessengerCoreService.java +++ b/app/src/main/java/com/ic/work/hardware/MessengerCoreService.java @@ -26,7 +26,7 @@ public class MessengerCoreService { private final static String key_ppg = "ppg"; private final static String key_bph = "bph"; private final static String key_bpl = "bpl"; - public static final String key_spo2="sp02"; + public static final String key_spo2 = "sp02"; private Messenger mGetReplyMessenger; private Messenger mService = null; @@ -36,7 +36,6 @@ public class MessengerCoreService { if (mService != null) { return; } - ComponentName componentName = new ComponentName( "com.enqualcomm.support", "com.enqualcomm.support.CoreService"); @@ -60,7 +59,7 @@ public class MessengerCoreService { IcLog.i(TAG, "onServiceConnected"); mService = new Messenger(service); Message msg = Message.obtain(null, MSG_WHAT_SEND_VOICE); - msg.replyTo = mGetReplyMessenger; + msg.replyTo = mGetReplyMessenger; try { mService.send(msg); } catch (RemoteException e) { @@ -79,8 +78,8 @@ public class MessengerCoreService { } }; - public void sendBloodValueMessage(int high, int low, int heart,int oxygen) { - + public void sendBloodValueMessage(int high, int low, int heart, int oxygen) { + IcLog.d(TAG, "sendBloodValueMessage..."); Bundle data = new Bundle(); data.putString(key_ppg, String.valueOf(heart)); @@ -97,7 +96,6 @@ public class MessengerCoreService { } catch (Exception e) { IcLog.e(TAG, "sendBloodValueMessage", e); } - } @SuppressLint("HandlerLeak") diff --git a/app/src/main/java/com/ic/work/process/AkProcess.java b/app/src/main/java/com/ic/work/process/AkProcess.java index 1eb5ea1..a46be5f 100644 --- a/app/src/main/java/com/ic/work/process/AkProcess.java +++ b/app/src/main/java/com/ic/work/process/AkProcess.java @@ -6,7 +6,6 @@ import android.os.RemoteException; import com.ic.aidl.ak.IAkAidlInterface; import com.ic.aidl.ak.IAkRemoteService; -import com.ic.work.BuildConfig; import com.ic.work.event.ThreadPoolEvent; import com.ic.work.utils.IcLog; import com.ic.work.utils.IcSystemProperty; @@ -14,6 +13,7 @@ import com.ic.work.utils.IcSystemProperty; import org.greenrobot.eventbus.EventBus; import static com.ic.work.utils.ICWorkConstants.EventType.STOP_ALL_TASK; +import static com.ic.work.utils.ICWorkConstants.EventType.TEST_TEMPERATURE; public class AkProcess { @@ -66,7 +66,7 @@ public class AkProcess { @Override public void onStartQueryTemp() throws RemoteException { - EventBus.getDefault().post(new ThreadPoolEvent(6)); + EventBus.getDefault().post(new ThreadPoolEvent(TEST_TEMPERATURE)); } @Override diff --git a/app/src/main/java/com/ic/work/process/BloodProcess.java b/app/src/main/java/com/ic/work/process/BloodProcess.java index 41628d4..9beaf8a 100644 --- a/app/src/main/java/com/ic/work/process/BloodProcess.java +++ b/app/src/main/java/com/ic/work/process/BloodProcess.java @@ -12,6 +12,7 @@ import com.ic.work.utils.IcLog; import org.greenrobot.eventbus.EventBus; import static com.ic.work.utils.ICWorkConstants.EventType.STOP_ALL_TASK; +import static com.ic.work.utils.ICWorkConstants.EventType.TEST_BLOOD; public class BloodProcess { @@ -40,7 +41,7 @@ public class BloodProcess { @Override public void startCheckBlood() throws RemoteException { - EventBus.getDefault().post(new ThreadPoolEvent(3)); + EventBus.getDefault().post(new ThreadPoolEvent(TEST_BLOOD)); } @Override diff --git a/app/src/main/java/com/ic/work/process/TempProcess.java b/app/src/main/java/com/ic/work/process/TempProcess.java index 9198f61..d3baaca 100644 --- a/app/src/main/java/com/ic/work/process/TempProcess.java +++ b/app/src/main/java/com/ic/work/process/TempProcess.java @@ -6,17 +6,13 @@ import android.os.RemoteException; import com.ic.aidl.temp.ITempAidlInterface; import com.ic.aidl.temp.ITempRemoteService; -import com.ic.aidl.weather.IWeatherAidlInterface; -import com.ic.aidl.weather.IWeatherRemoteService; -import com.ic.aidl.weather.WeatherParcelable; import com.ic.work.event.ThreadPoolEvent; import com.ic.work.utils.IcLog; import org.greenrobot.eventbus.EventBus; -import java.util.List; - import static com.ic.work.utils.ICWorkConstants.EventType.STOP_ALL_TASK; +import static com.ic.work.utils.ICWorkConstants.EventType.TEST_TEMPERATURE; public class TempProcess { @@ -24,7 +20,7 @@ public class TempProcess { private RemoteCallbackList mCallbacks = new RemoteCallbackList<>(); - public IBinder getTempBinder(){ + public IBinder getTempBinder() { return tempBinder; } @@ -45,56 +41,54 @@ public class TempProcess { @Override public void onStartQueryTemp() throws RemoteException { - IcLog.i(TAG,"onStartQueryTemp"); - EventBus.getDefault().post(new ThreadPoolEvent(6)); + IcLog.i(TAG, "onStartQueryTemp"); + EventBus.getDefault().post(new ThreadPoolEvent(TEST_TEMPERATURE)); } @Override public void onStopQueryTemp() throws RemoteException { - IcLog.i(TAG,"onStopQueryTemp"); + IcLog.i(TAG, "onStopQueryTemp"); EventBus.getDefault().post(new ThreadPoolEvent(STOP_ALL_TASK)); } }; - public void sendCurrTempValue(double value,double animal,double tempOut) { + public void sendCurrTempValue(double value, double animal, double tempOut) { int N = 0; - IcLog.d(TAG, "sendCurrTempValue "+value); + IcLog.d(TAG, "sendCurrTempValue " + value); try { N = mCallbacks.beginBroadcast(); for (int i = 0; i < N; i++) { - mCallbacks.getBroadcastItem(i).updateCurrTempValue(value,animal,tempOut); + mCallbacks.getBroadcastItem(i).updateCurrTempValue(value, animal, tempOut); } } catch (NullPointerException | RemoteException e) { - IcLog.e(TAG, "",e); + IcLog.e(TAG, "", e); } finally { try { if (N > 0) { mCallbacks.finishBroadcast(); } } catch (IllegalArgumentException ll) { - IcLog.e(TAG, "",ll); + IcLog.e(TAG, "", ll); } } } - public void sendResultTempValue(double value,double animal,double tempOut) { + public void sendResultTempValue(double value, double animal, double tempOut) { int N = 0; try { N = mCallbacks.beginBroadcast(); for (int i = 0; i < N; i++) { - mCallbacks.getBroadcastItem(i).updateResultTempValue(value,animal,tempOut); + mCallbacks.getBroadcastItem(i).updateResultTempValue(value, animal, tempOut); } - } catch (NullPointerException e) { - IcLog.e(TAG, "",e); - } catch (RemoteException er) { - IcLog.e(TAG, "",er); + } catch (NullPointerException | RemoteException e) { + IcLog.e(TAG, "", e); } finally { try { if (N > 0) { mCallbacks.finishBroadcast(); } } catch (IllegalArgumentException ll) { - IcLog.e(TAG, "",ll); + IcLog.e(TAG, "", ll); } } } diff --git a/app/src/main/java/com/ic/work/utils/ICWorkConstants.java b/app/src/main/java/com/ic/work/utils/ICWorkConstants.java index 0603051..44fe5a9 100644 --- a/app/src/main/java/com/ic/work/utils/ICWorkConstants.java +++ b/app/src/main/java/com/ic/work/utils/ICWorkConstants.java @@ -23,6 +23,7 @@ public interface ICWorkConstants { interface EventType { //温度 int TEST_TEMPERATURE = 6; + int TEST_BLOOD = 3; //A9的心率 int TEST_A9_BLOOD = 7; //AK的心率