From: TrillGates Date: Mon, 21 Jun 2021 11:45:38 +0000 (+0800) Subject: test different type of heart rate or blood oxygen X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=3296d5ca1509694d01b5b30f09a4544b914291ee;p=IcBlood.git test different type of heart rate or blood oxygen --- diff --git a/app/release/ICL02Blood_V74_202106031018_release.apk b/app/release/ICL02Blood_V76_202106031526_release.apk similarity index 55% rename from app/release/ICL02Blood_V74_202106031018_release.apk rename to app/release/ICL02Blood_V76_202106031526_release.apk index dbcf2e3..a43e427 100644 Binary files a/app/release/ICL02Blood_V74_202106031018_release.apk and b/app/release/ICL02Blood_V76_202106031526_release.apk differ diff --git a/app/release/output.json b/app/release/output.json index 8445a0b..8472d0a 100644 --- a/app/release/output.json +++ b/app/release/output.json @@ -1 +1 @@ -[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":74,"versionName":"202106031018","enabled":true,"outputFile":"ICL02Blood_V74_202106031018_release.apk","fullName":"release","baseName":"release"},"path":"ICL02Blood_V74_202106031018_release.apk","properties":{}}] \ No newline at end of file +[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":76,"versionName":"202106031526","enabled":true,"outputFile":"ICL02Blood_V76_202106031526_release.apk","fullName":"release","baseName":"release"},"path":"ICL02Blood_V76_202106031526_release.apk","properties":{}}] \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9155c59..2941af2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,7 +17,7 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - + @@ -25,5 +25,7 @@ + + \ No newline at end of file diff --git a/app/src/main/aidl/com/ic/work/IHeartRateSensorService.aidl b/app/src/main/aidl/com/ic/work/IHeartRateSensorService.aidl index 70a7dd5..c0a30f6 100644 --- a/app/src/main/aidl/com/ic/work/IHeartRateSensorService.aidl +++ b/app/src/main/aidl/com/ic/work/IHeartRateSensorService.aidl @@ -7,4 +7,7 @@ interface IHeartRateSensorService { void registerCallback(in IHeartRateSensorCallback callback,in String callbackTag); void unRegisterCallback(in IHeartRateSensorCallback callback); oneway void getHeartRateInfo(int from,in String callbackTag); + oneway void getJustOxygenInfo(in int from,in String callbackTag); + oneway void getJustHeartRateInfo(in int from,in String callbackTag); + oneway void stopCurrentWork(in int from,in String callbackTag); } \ No newline at end of file diff --git a/app/src/main/java/com/ic/blood/BloodActivity.java b/app/src/main/java/com/ic/blood/BloodActivity.java index fe46676..e1109dd 100644 --- a/app/src/main/java/com/ic/blood/BloodActivity.java +++ b/app/src/main/java/com/ic/blood/BloodActivity.java @@ -1,22 +1,20 @@ package com.ic.blood; -import androidx.appcompat.app.AppCompatActivity; -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentManager; -import androidx.fragment.app.FragmentTransaction; - import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.net.wifi.aware.IdentityChangedListener; import android.os.Bundle; -import android.text.TextUtils; import android.util.Log; import android.view.WindowManager; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; + import com.ic.blood.fragment.BloodFragment; -import com.ic.blood.fragment.HeartRateFragment; +import com.ic.blood.fragment.HeartRateAndOxygenFragment; import com.ic.blood.util.IcLog; import com.ic.blood.util.SystemUtils; @@ -37,9 +35,9 @@ public class BloodActivity extends AppCompatActivity { "false"); Log.d(TAG, "protocolCode == > " + noSupportBlood); if ("false".equals(noSupportBlood)) { - commitFragment(HeartRateFragment.newInstance()); - } else { commitFragment(BloodFragment.newInstance()); + } else { + commitFragment(HeartRateAndOxygenFragment.newInstance()); } } catch (Exception e) { e.printStackTrace(); @@ -58,6 +56,16 @@ public class BloodActivity extends AppCompatActivity { fragmentTransaction.commit(); } + @Override + public void onBackPressed() { + FragmentManager supportFragmentManager = getSupportFragmentManager(); + if (supportFragmentManager.getBackStackEntryCount() == 1) { + finish(); + } else { + super.onBackPressed(); + } + } + @Override protected void onDestroy() { super.onDestroy(); diff --git a/app/src/main/java/com/ic/blood/Gh301Activity.java b/app/src/main/java/com/ic/blood/Gh301Activity.java new file mode 100644 index 0000000..1ce54a5 --- /dev/null +++ b/app/src/main/java/com/ic/blood/Gh301Activity.java @@ -0,0 +1,49 @@ +package com.ic.blood; + +import android.os.Bundle; + +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; + +import com.ic.blood.fragment.HeartRateAndOxygenFragment; +import com.ic.blood.fragment.OxygenFragment; +import com.ic.blood.fragment.SelectFragment; + +public class Gh301Activity extends AppCompatActivity { + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_blood); + //先显示选择测试的UI + //切换Activity即可 + showFragment(SelectFragment.newInstance()); + } + + private void showFragment(Fragment fragment) { + FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); + fragmentTransaction.replace(R.id.main_content_fl, fragment); + fragmentTransaction.addToBackStack(null); + fragmentTransaction.commit(); + } + + public void showOxygenPage() { + showFragment(OxygenFragment.newInstance()); + } + + public void showHeartRatePage() { + showFragment(HeartRateAndOxygenFragment.newInstance()); + } + + @Override + public void onBackPressed() { + FragmentManager supportFragmentManager = getSupportFragmentManager(); + if (supportFragmentManager.getBackStackEntryCount() == 1) { + finish(); + } else { + super.onBackPressed(); + } + } +} diff --git a/app/src/main/java/com/ic/blood/WelcomeActivity.java b/app/src/main/java/com/ic/blood/WelcomeActivity.java new file mode 100644 index 0000000..7d8cde8 --- /dev/null +++ b/app/src/main/java/com/ic/blood/WelcomeActivity.java @@ -0,0 +1,34 @@ +package com.ic.blood; + +import android.content.Intent; +import android.os.Bundle; + +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + +import com.ic.blood.util.SystemUtils; + +/** + * 配置项: + * persist.sys.no_blood_pressure,没有血压,只有血氧和心率 + * persist.sys.is_gh301,true表示为gh301的机器 + */ +public class WelcomeActivity extends AppCompatActivity { + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + //判断是不是gh301 + String isGh301 = SystemUtils + .getSystemPropertiesString("persist.sys.is_gh301", + "false"); + if (true) { + //如是果是gh301,那么就跳转到测量选项页面 + startActivity(new Intent(this, Gh301Activity.class)); + } else { + //跳转到以前的页面 + startActivity(new Intent(this, BloodActivity.class)); + } + finish(); + } +} diff --git a/app/src/main/java/com/ic/blood/fragment/BloodFragment.java b/app/src/main/java/com/ic/blood/fragment/BloodFragment.java index f50a476..2f8f70e 100644 --- a/app/src/main/java/com/ic/blood/fragment/BloodFragment.java +++ b/app/src/main/java/com/ic/blood/fragment/BloodFragment.java @@ -3,11 +3,6 @@ package com.ic.blood.fragment; import android.annotation.SuppressLint; import android.content.Context; import android.os.Bundle; - -import androidx.annotation.NonNull; -import androidx.fragment.app.Fragment; -import androidx.lifecycle.ViewModelProvider; - import android.os.Handler; import android.os.Message; import android.os.PowerManager; @@ -16,13 +11,17 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; + import com.ic.blood.BloodActivity; import com.ic.blood.BloodApp; import com.ic.blood.R; import com.ic.blood.databinding.FragmentBloodBinding; import com.ic.blood.model.BloodCheckModel; +import com.ic.blood.presenter.BloodPresenter; import com.ic.blood.util.IcLog; -import com.ic.blood.util.SystemUtils; import java.io.IOException; import java.lang.ref.WeakReference; @@ -102,18 +101,18 @@ public class BloodFragment extends Fragment { heartRateView.setVisibility(View.VISIBLE); gifFromAssets.stop(); releaseWakeLock(); - IcLog.i(TAG, "finish"); - ((BloodActivity) mContext).finish(); } private void initBloodModel() { //观察状态的变化 BloodCheckModel.Factory factory = new BloodCheckModel.Factory(mApp); bloodModel = new ViewModelProvider(this, factory).get(BloodCheckModel.class); + bloodModel.updateTestType(BloodPresenter.TestType.ALL); bloodModel.getObsStateTips().observe(this, value -> { bloodBinding.setFinishTips(value); bloodBinding.setBottomTips(value); }); + bloodModel.getObsBloodValue().observe(getViewLifecycleOwner(), value -> { bloodBinding.setIsShowTips(false); bloodBinding.setHighValue(value[0]); diff --git a/app/src/main/java/com/ic/blood/fragment/HeartRateFragment.java b/app/src/main/java/com/ic/blood/fragment/HeartRateAndOxygenFragment.java similarity index 90% rename from app/src/main/java/com/ic/blood/fragment/HeartRateFragment.java rename to app/src/main/java/com/ic/blood/fragment/HeartRateAndOxygenFragment.java index 7099a76..335dc96 100644 --- a/app/src/main/java/com/ic/blood/fragment/HeartRateFragment.java +++ b/app/src/main/java/com/ic/blood/fragment/HeartRateAndOxygenFragment.java @@ -18,9 +18,9 @@ import androidx.lifecycle.ViewModelProvider; import com.ic.blood.BloodActivity; import com.ic.blood.BloodApp; import com.ic.blood.R; -import com.ic.blood.databinding.FragmentBloodBinding; import com.ic.blood.databinding.FragmentOxygenHeartRateBinding; import com.ic.blood.model.BloodCheckModel; +import com.ic.blood.presenter.BloodPresenter; import com.ic.blood.util.IcLog; import java.io.IOException; @@ -35,7 +35,7 @@ import static android.content.Context.POWER_SERVICE; /** * 这个是只有心率和血氧的UI */ -public class HeartRateFragment extends Fragment { +public class HeartRateAndOxygenFragment extends Fragment { private static final String TAG = "BloodFragment"; @@ -53,8 +53,8 @@ public class HeartRateFragment extends Fragment { private GifImageView gifImageView; private ImageView heartRateView; - public static HeartRateFragment newInstance() { - return new HeartRateFragment(); + public static HeartRateAndOxygenFragment newInstance() { + return new HeartRateAndOxygenFragment(); } @Override @@ -102,14 +102,13 @@ public class HeartRateFragment extends Fragment { heartRateView.setVisibility(View.VISIBLE); gifFromAssets.stop(); releaseWakeLock(); - IcLog.i(TAG, "finish"); - ((BloodActivity) mContext).finish(); } private void initBloodModel() { //观察状态的变化 BloodCheckModel.Factory factory = new BloodCheckModel.Factory(mApp); bloodModel = new ViewModelProvider(this, factory).get(BloodCheckModel.class); + bloodModel.updateTestType(BloodPresenter.TestType.JUST_HEART_RATE); bloodModel.getObsStateTips().observe(this, value -> { bloodBinding.setFinishTips(value); bloodBinding.setBottomTips(value); @@ -193,16 +192,19 @@ public class HeartRateFragment extends Fragment { } private static class DelayExecuteHandler extends Handler { - private final WeakReference mFragment; + private final WeakReference mFragment; - public DelayExecuteHandler(HeartRateFragment fragment) { - mFragment = new WeakReference(fragment); + public DelayExecuteHandler(HeartRateAndOxygenFragment fragment) { + mFragment = new WeakReference<>(fragment); } @Override public void dispatchMessage(@NonNull Message msg) { super.dispatchMessage(msg); - mFragment.get().releaseWakeLock(); + HeartRateAndOxygenFragment heartRateFragment = mFragment.get(); + if (heartRateFragment != null) { + heartRateFragment.releaseWakeLock(); + } } } } diff --git a/app/src/main/java/com/ic/blood/fragment/OxygenFragment.java b/app/src/main/java/com/ic/blood/fragment/OxygenFragment.java new file mode 100644 index 0000000..dff8c62 --- /dev/null +++ b/app/src/main/java/com/ic/blood/fragment/OxygenFragment.java @@ -0,0 +1,211 @@ +package com.ic.blood.fragment; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.os.PowerManager; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; + +import com.ic.blood.BloodActivity; +import com.ic.blood.BloodApp; +import com.ic.blood.R; +import com.ic.blood.databinding.FragmentOxygenBinding; +import com.ic.blood.model.BloodCheckModel; +import com.ic.blood.presenter.BloodPresenter; +import com.ic.blood.util.IcLog; + +import java.io.IOException; +import java.lang.ref.WeakReference; + +import pl.droidsonroids.gif.GifDrawable; +import pl.droidsonroids.gif.GifImageView; + +import static android.content.Context.POWER_SERVICE; + + +/** + * 这个是只有血氧的UI + */ +public class OxygenFragment extends Fragment { + + private static final String TAG = "OxygenFragment"; + + private Context mContext; + private BloodApp mApp; + + private FragmentOxygenBinding bloodBinding; + + private PowerManager.WakeLock mWakeLock = null; + private BloodCheckModel bloodModel; + + private GifDrawable gifFromAssets; + + private DelayExecuteHandler delayHandler; + private GifImageView gifImageView; + private ImageView heartRateView; + + public static OxygenFragment newInstance() { + return new OxygenFragment(); + } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + this.mContext = context; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + mApp = (BloodApp) mContext.getApplicationContext(); + initWakeLock(mContext); + delayHandler = new DelayExecuteHandler(this); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + bloodBinding = FragmentOxygenBinding.inflate(inflater, container, false); + bloodBinding.setIsShowTips(true); + bloodBinding.setTopTips(getString(R.string.tips_quiet_please)); + initBloodModel(); + setGifDrawable(); + //绑定远程服务 + bloodModel.onCreateView(); + return bloodBinding.getRoot(); + } + + @Override + public void onResume() { + super.onResume(); + if (mWakeLock != null) { + mWakeLock.acquire(); + } + gifImageView.setVisibility(View.VISIBLE); + heartRateView.setVisibility(View.GONE); + gifFromAssets.start(); + } + + @Override + public void onPause() { + super.onPause(); + gifImageView.setVisibility(View.GONE); + heartRateView.setVisibility(View.VISIBLE); + gifFromAssets.stop(); + releaseWakeLock(); + } + + private void initBloodModel() { + //观察状态的变化 + BloodCheckModel.Factory factory = new BloodCheckModel.Factory(mApp); + bloodModel = new ViewModelProvider(this, factory).get(BloodCheckModel.class); + bloodModel.updateTestType(BloodPresenter.TestType.JUST_OXYGEN); + bloodModel.getObsStateTips().observe(this, value -> { + bloodBinding.setFinishTips(value); + bloodBinding.setBottomTips(value); + }); + bloodModel.getObsBloodValue().observe(getViewLifecycleOwner(), value -> { + bloodBinding.setIsShowTips(false); + bloodBinding.setHighValue(value[0]); + bloodBinding.setLowValue(value[1]); + bloodBinding.setHeartValue(value[2]); + bloodBinding.setOxygenValue(value[3]); + gifFromAssets.stop(); + gifImageView.setVisibility(View.GONE); + heartRateView.setVisibility(View.VISIBLE); + delayHandler.sendMessageDelayed(new Message(), 1000 * 10); + }); + + bloodModel.getObsBloodTempValue().observe(getViewLifecycleOwner(), value -> { + bloodBinding.setIsShowTips(false); + bloodBinding.setHighValue(value[0]); + bloodBinding.setLowValue(value[1]); + bloodBinding.setHeartValue(value[2]); + bloodBinding.setOxygenValue(value[3]); + }); + + //bloodModel.getObsTipsInfo().observe(getViewLifecycleOwner(), tips -> { + //这里做法不好呀,连文字资源都由底层的ID来控制 + //这样子耦合度非常高了,所以注释了,不使用这种方式更新提示。 + //bloodBinding.setIsShowTips(true); + //bloodBinding.setTopTips(tips[0]); + //bloodBinding.setBottomTips(tips[1]); + //}); + + bloodModel.getObsCheckEnd().observe(getViewLifecycleOwner(), end -> { + IcLog.i(TAG, "finish"); + ((BloodActivity) mContext).finish(); + }); + } + + @SuppressLint("InvalidWakeLockTag") + private void initWakeLock(Context context) { + PowerManager powerManager = (PowerManager) context.getSystemService(POWER_SERVICE); + if (powerManager != null) { + mWakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "BloodWakeLock"); + } + } + + private void releaseWakeLock() { + IcLog.i(TAG, "Release WakeLock"); + if (mWakeLock != null) { + mWakeLock.release(); + } + mWakeLock = null; + } + + private void setGifDrawable() { + gifImageView = bloodBinding.icHeartGif; + heartRateView = bloodBinding.heartRateView; + gifImageView.setScaleType(ImageView.ScaleType.CENTER); + try { + gifFromAssets = new GifDrawable(mContext.getAssets(), "only_hr_check.gif"); + gifImageView.setImageDrawable(gifFromAssets); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Override + public void onDestroy() { + super.onDestroy(); + IcLog.i(TAG, "onDestroy"); + + //取消广播注册,释放资源 + bloodModel.onViewDestroy(); + bloodModel = null; + + if (gifFromAssets != null) { + gifFromAssets.recycle(); + } + + delayHandler = null; + } + + private static class DelayExecuteHandler extends Handler { + + private final WeakReference mFragment; + + public DelayExecuteHandler(OxygenFragment fragment) { + mFragment = new WeakReference<>(fragment); + } + + @Override + public void dispatchMessage(@NonNull Message msg) { + super.dispatchMessage(msg); + OxygenFragment heartRateFragment = mFragment.get(); + if (heartRateFragment != null) { + heartRateFragment.releaseWakeLock(); + } + } + } +} diff --git a/app/src/main/java/com/ic/blood/fragment/SelectFragment.java b/app/src/main/java/com/ic/blood/fragment/SelectFragment.java new file mode 100644 index 0000000..ed5f4b3 --- /dev/null +++ b/app/src/main/java/com/ic/blood/fragment/SelectFragment.java @@ -0,0 +1,47 @@ +package com.ic.blood.fragment; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; + +import com.ic.blood.Gh301Activity; +import com.ic.blood.R; + +/** + * 这个是选择测心率还是测血氧的UI + */ +public class SelectFragment extends Fragment { + + public static Fragment newInstance() { + return new SelectFragment(); + } + + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_choose, container, false); + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + //界面创建了,就两个动作,切换到测心率, + View oxygenTv = view.findViewById(R.id.blood_oxygen_tv); + View heartRateTv = view.findViewById(R.id.heart_rate_tv); + //设置一下点击事件,跳转到对应的心率UI + oxygenTv.setOnClickListener(v -> { + //跳转到血氧测试 + ((Gh301Activity) getActivity()).showOxygenPage(); + + }); + heartRateTv.setOnClickListener(v -> { + //跳转到心率设置 + ((Gh301Activity) getActivity()).showHeartRatePage(); + }); + } +} diff --git a/app/src/main/java/com/ic/blood/model/BloodCheckModel.java b/app/src/main/java/com/ic/blood/model/BloodCheckModel.java index ce69b6f..094437f 100644 --- a/app/src/main/java/com/ic/blood/model/BloodCheckModel.java +++ b/app/src/main/java/com/ic/blood/model/BloodCheckModel.java @@ -32,6 +32,9 @@ public class BloodCheckModel extends AndroidViewModel { mObsBloodTempValue = bloodPresenter.getObsBloodTempValue(); } + public void updateTestType(BloodPresenter.TestType testType) { + bloodPresenter.setTestType(testType); + } public LiveData getObsStateTips() { return mObsStateTips; diff --git a/app/src/main/java/com/ic/blood/presenter/BloodPresenter.java b/app/src/main/java/com/ic/blood/presenter/BloodPresenter.java index 6d3760c..06347a8 100644 --- a/app/src/main/java/com/ic/blood/presenter/BloodPresenter.java +++ b/app/src/main/java/com/ic/blood/presenter/BloodPresenter.java @@ -8,7 +8,6 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; import android.os.IBinder; -import android.os.RemoteException; import android.util.SparseArray; import androidx.lifecycle.LiveData; @@ -42,7 +41,12 @@ public class BloodPresenter { private SparseArray mTipsSpares; //判断有没有配戴的,如果没有配戴的话,就不更新数据了 private boolean mHasWear = false; - private boolean mBind; + + private TestType testType = TestType.ALL; + + public enum TestType { + ALL, JUST_OXYGEN, JUST_HEART_RATE + } public BloodPresenter(Context context) { this.mContext = context; @@ -101,6 +105,15 @@ public class BloodPresenter { } } + /** + * 测量之前要先设置 + * + * @param testType + */ + public void setTestType(TestType testType) { + this.testType = testType; + } + //integer eventID =1 脱落, eventID =0 佩戴 public static String KEY_ANTI_EVENT = "eventID"; public static final int STATE_ANTI_ON = 0; @@ -138,15 +151,21 @@ public class BloodPresenter { * 绑定远程服务 */ private void bindRemoteService() { - Intent intent = new Intent(); - intent.setAction(ACTION_HEART_RATE); - mBind = mContext.bindService(intent, connection, Context.BIND_AUTO_CREATE); + try { + Intent intent = new Intent(); + intent.setAction(ACTION_HEART_RATE); + mContext.bindService(intent, connection, Context.BIND_AUTO_CREATE); + } catch (Exception e) { + e.printStackTrace(); + } } public void release() { try { if (mService != null) { IcLog.d(TAG, "unRegister blood remote callback..."); + //停止测试 + mService.stopCurrentWork(2, BloodPresenter.class.getName()); mService.unRegisterCallback(bloodInterface); } mContext.unbindService(connection); @@ -174,7 +193,15 @@ public class BloodPresenter { * ALARM_CMD(1)定时的测试指, * CLIENT_CMD(2)用户UI主动的指令; */ - mService.getHeartRateInfo(2, BloodPresenter.class.getName()); + //判断类型 + IcLog.d(TAG, "startCheckBlood == > " + testType); + if (testType == TestType.JUST_HEART_RATE) { + mService.getJustHeartRateInfo(2, BloodPresenter.class.getName()); + } else if (testType == TestType.JUST_OXYGEN) { + mService.getJustOxygenInfo(2, BloodPresenter.class.getName()); + } else { + mService.getHeartRateInfo(2, BloodPresenter.class.getName()); + } } catch (Exception e) { IcLog.e(TAG, "startCheckBlood", e); } @@ -212,6 +239,7 @@ public class BloodPresenter { try { mService = IHeartRateSensorService.Stub.asInterface(service); mService.registerCallback(bloodInterface, BloodPresenter.class.getName()); + //判断任务类型 startCheckBlood(); } catch (Exception e) { IcLog.e(TAG, "ServiceConnection", e); diff --git a/app/src/main/java/com/ic/blood/util/ServiceUtil.java b/app/src/main/java/com/ic/blood/util/ServiceUtil.java deleted file mode 100644 index f20c9cc..0000000 --- a/app/src/main/java/com/ic/blood/util/ServiceUtil.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.ic.blood.util; - -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.ServiceConnection; -import android.content.pm.ResolveInfo; -import android.content.pm.ServiceInfo; - -import java.util.List; - -public class ServiceUtil { - - public static void startServiceUtil(Context context, String serviceAction, String packageName) { - Intent intent = getExplicitIntent(context, new Intent(serviceAction)); - if (intent != null) { - intent.setPackage(packageName); - context.startService(intent); - } - } - - public static void bindServiceUtil(Context context, String action, ServiceConnection connection, String pck) { - Intent in = getExplicitIntent(context, new Intent(action)); - if (in != null) { - in.setPackage(pck); - context.bindService(in, connection, Context.BIND_AUTO_CREATE); - } - } - - public static void unBindServiceUtil(Context context, ServiceConnection connection) { - context.unbindService(connection); - } - - private static Intent getExplicitIntent(Context context, Intent impl) { - List resolveInfo = context.getPackageManager().queryIntentServices(impl, 0); - - if (resolveInfo.size() != 1) return null; - - Intent intent = new Intent(impl); - ServiceInfo info = resolveInfo.get(0).serviceInfo; - if (info == null) return null; - intent.setComponent(new ComponentName(info.packageName, info.name)); - - return intent; - } -} diff --git a/app/src/main/res/drawable/btn_green_bg_selector.xml b/app/src/main/res/drawable/btn_green_bg_selector.xml new file mode 100644 index 0000000..f26e694 --- /dev/null +++ b/app/src/main/res/drawable/btn_green_bg_selector.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_red_bg_selector.xml b/app/src/main/res/drawable/btn_red_bg_selector.xml new file mode 100644 index 0000000..b9a9feb --- /dev/null +++ b/app/src/main/res/drawable/btn_red_bg_selector.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/fzd_save_mode_normal.png b/app/src/main/res/drawable/fzd_save_mode_normal.png new file mode 100644 index 0000000..aa652f0 Binary files /dev/null and b/app/src/main/res/drawable/fzd_save_mode_normal.png differ diff --git a/app/src/main/res/drawable/fzd_save_mode_press.png b/app/src/main/res/drawable/fzd_save_mode_press.png new file mode 100644 index 0000000..836970f Binary files /dev/null and b/app/src/main/res/drawable/fzd_save_mode_press.png differ diff --git a/app/src/main/res/drawable/fzd_shutdown_normal.png b/app/src/main/res/drawable/fzd_shutdown_normal.png new file mode 100644 index 0000000..2c549cd Binary files /dev/null and b/app/src/main/res/drawable/fzd_shutdown_normal.png differ diff --git a/app/src/main/res/drawable/fzd_shutdown_press.png b/app/src/main/res/drawable/fzd_shutdown_press.png new file mode 100644 index 0000000..28e7298 Binary files /dev/null and b/app/src/main/res/drawable/fzd_shutdown_press.png differ diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml similarity index 100% rename from app/src/main/res/drawable-v24/ic_launcher_foreground.xml rename to app/src/main/res/drawable/ic_launcher_foreground.xml diff --git a/app/src/main/res/layout/activity_blood.xml b/app/src/main/res/layout/activity_blood.xml index 1f5824c..c9e2ca4 100644 --- a/app/src/main/res/layout/activity_blood.xml +++ b/app/src/main/res/layout/activity_blood.xml @@ -1,8 +1,6 @@ \ No newline at end of file + android:background="@android:color/black" /> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml deleted file mode 100644 index 737dd14..0000000 --- a/app/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_choose.xml b/app/src/main/res/layout/fragment_choose.xml new file mode 100644 index 0000000..ac74d96 --- /dev/null +++ b/app/src/main/res/layout/fragment_choose.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_oxygen.xml b/app/src/main/res/layout/fragment_oxygen.xml new file mode 100644 index 0000000..c486ca9 --- /dev/null +++ b/app/src/main/res/layout/fragment_oxygen.xml @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/version_code.properties b/app/version_code.properties index a91baa2..fd2c3f4 100644 --- a/app/version_code.properties +++ b/app/version_code.properties @@ -1,2 +1,2 @@ -#Thu Jun 03 10:18:21 CST 2021 -VERSION_CODE=74 +#Thu Jun 03 15:26:59 CST 2021 +VERSION_CODE=76