publish version ICL02Blood_V74_202106031018_release
authorTrillGates <williamtrillgates@gmail.com>
Thu, 3 Jun 2021 02:22:20 +0000 (10:22 +0800)
committerTrillGates <williamtrillgates@gmail.com>
Thu, 3 Jun 2021 02:22:20 +0000 (10:22 +0800)
15 files changed:
app/release/ICL02Blood_V66_202102011414_release.apk [deleted file]
app/release/ICL02Blood_V74_202106031018_release.apk [new file with mode: 0644]
app/release/output.json
app/src/main/aidl/com/ic/work/IHeartRateSensorCallback.aidl
app/src/main/assets/only_hr_check.gif
app/src/main/java/com/ic/blood/BloodActivity.java
app/src/main/java/com/ic/blood/fragment/BloodFragment.java
app/src/main/java/com/ic/blood/fragment/HeartRateFragment.java [new file with mode: 0644]
app/src/main/java/com/ic/blood/presenter/BloodPresenter.java
app/src/main/res/layout/activity_main.xml
app/src/main/res/layout/fragment_blood.xml
app/src/main/res/layout/fragment_oxygen_heart_rate.xml [new file with mode: 0644]
app/src/main/res/mipmap-mdpi/default_heart_rate_icon.png [new file with mode: 0644]
app/src/main/res/values/styles.xml
app/version_code.properties

diff --git a/app/release/ICL02Blood_V66_202102011414_release.apk b/app/release/ICL02Blood_V66_202102011414_release.apk
deleted file mode 100644 (file)
index 03dad4c..0000000
Binary files a/app/release/ICL02Blood_V66_202102011414_release.apk and /dev/null differ
diff --git a/app/release/ICL02Blood_V74_202106031018_release.apk b/app/release/ICL02Blood_V74_202106031018_release.apk
new file mode 100644 (file)
index 0000000..dbcf2e3
Binary files /dev/null and b/app/release/ICL02Blood_V74_202106031018_release.apk differ
index c17504c..8445a0b 100644 (file)
@@ -1 +1 @@
-[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":66,"versionName":"202102011414","enabled":true,"outputFile":"ICL02Blood_V66_202102011414_release.apk","fullName":"release","baseName":"release"},"path":"ICL02Blood_V66_202102011414_release.apk","properties":{}}]
\ No newline at end of file
+[{"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
index 296985d..53f13bb 100644 (file)
@@ -9,4 +9,5 @@ interface IHeartRateSensorCallback {
      oneway void onHeartRateUpdate(in HeartRate heartRate);
      oneway void onGettingData();
      oneway void onWaiting();
+     oneway void onNoWear();
 }
\ No newline at end of file
index 67011c6..250f036 100644 (file)
Binary files a/app/src/main/assets/only_hr_check.gif and b/app/src/main/assets/only_hr_check.gif differ
index 6004406..fe46676 100644 (file)
@@ -9,10 +9,16 @@ 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 com.ic.blood.fragment.BloodFragment;
+import com.ic.blood.fragment.HeartRateFragment;
+import com.ic.blood.util.IcLog;
+import com.ic.blood.util.SystemUtils;
 
 public class BloodActivity extends AppCompatActivity {
 
@@ -25,8 +31,21 @@ public class BloodActivity extends AppCompatActivity {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_blood);
         fragmentManager = getSupportFragmentManager();
-        commitFragment(BloodFragment.newInstance());
-
+        try {
+            String noSupportBlood = SystemUtils
+                    .getSystemPropertiesString("persist.sys.no_blood_pressure",
+                            "false");
+            Log.d(TAG, "protocolCode == > " + noSupportBlood);
+            if ("false".equals(noSupportBlood)) {
+                commitFragment(HeartRateFragment.newInstance());
+            } else {
+                commitFragment(BloodFragment.newInstance());
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            commitFragment(BloodFragment.newInstance());
+        }
+        IcLog.d("TAG", "onCreate...");
         IntentFilter intentFilter = new IntentFilter();
         intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
         registerReceiver(screenOnOffReceiver, intentFilter);
index 9a037a4..f50a476 100644 (file)
@@ -22,6 +22,7 @@ import com.ic.blood.R;
 import com.ic.blood.databinding.FragmentBloodBinding;
 import com.ic.blood.model.BloodCheckModel;
 import com.ic.blood.util.IcLog;
+import com.ic.blood.util.SystemUtils;
 
 import java.io.IOException;
 import java.lang.ref.WeakReference;
@@ -47,6 +48,8 @@ public class BloodFragment extends Fragment {
     private GifDrawable gifFromAssets;
 
     private DelayExecuteHandler delayHandler;
+    private GifImageView gifImageView;
+    private ImageView heartRateView;
 
     public static BloodFragment newInstance() {
         return new BloodFragment();
@@ -87,15 +90,17 @@ public class BloodFragment extends Fragment {
         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();
         IcLog.i(TAG, "finish");
         ((BloodActivity) mContext).finish();
@@ -116,6 +121,8 @@ public class BloodFragment extends Fragment {
             bloodBinding.setHeartValue(value[2]);
             bloodBinding.setOxygenValue(value[3]);
             gifFromAssets.stop();
+            gifImageView.setVisibility(View.GONE);
+            heartRateView.setVisibility(View.VISIBLE);
             delayHandler.sendMessageDelayed(new Message(), 1000 * 10);
         });
 
@@ -158,7 +165,8 @@ public class BloodFragment extends Fragment {
     }
 
     private void setGifDrawable() {
-        GifImageView gifImageView = bloodBinding.icHeartGif;
+        gifImageView = bloodBinding.icHeartGif;
+        heartRateView = bloodBinding.heartRateView;
         gifImageView.setScaleType(ImageView.ScaleType.CENTER);
         try {
             gifFromAssets = new GifDrawable(mContext.getAssets(), "only_hr_check.gif");
diff --git a/app/src/main/java/com/ic/blood/fragment/HeartRateFragment.java b/app/src/main/java/com/ic/blood/fragment/HeartRateFragment.java
new file mode 100644 (file)
index 0000000..7099a76
--- /dev/null
@@ -0,0 +1,208 @@
+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.FragmentBloodBinding;
+import com.ic.blood.databinding.FragmentOxygenHeartRateBinding;
+import com.ic.blood.model.BloodCheckModel;
+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 HeartRateFragment extends Fragment {
+
+    private static final String TAG = "BloodFragment";
+
+    private Context mContext;
+    private BloodApp mApp;
+
+    private FragmentOxygenHeartRateBinding bloodBinding;
+
+    private PowerManager.WakeLock mWakeLock = null;
+    private BloodCheckModel bloodModel;
+
+    private GifDrawable gifFromAssets;
+
+    private DelayExecuteHandler delayHandler;
+    private GifImageView gifImageView;
+    private ImageView heartRateView;
+
+    public static HeartRateFragment newInstance() {
+        return new HeartRateFragment();
+    }
+
+    @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 = FragmentOxygenHeartRateBinding.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();
+        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.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<HeartRateFragment> mFragment;
+
+        public DelayExecuteHandler(HeartRateFragment fragment) {
+            mFragment = new WeakReference<HeartRateFragment>(fragment);
+        }
+
+        @Override
+        public void dispatchMessage(@NonNull Message msg) {
+            super.dispatchMessage(msg);
+            mFragment.get().releaseWakeLock();
+        }
+    }
+}
index 745df8a..6d3760c 100644 (file)
@@ -8,6 +8,7 @@ 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;
@@ -271,6 +272,11 @@ public class BloodPresenter {
             //让UI显示保持安静,准备测试的玩意
         }
 
+        @Override
+        public void onNoWear() {
+
+        }
+
     };
 
 
index 4fc2444..737dd14 100644 (file)
@@ -3,8 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    tools:context=".MainActivity">
+    android:layout_height="match_parent">
 
     <TextView
         android:layout_width="wrap_content"
index 9ca3827..e3c0263 100644 (file)
@@ -4,7 +4,8 @@
     xmlns:tools="http://schemas.android.com/tools">
 
     <data>
-        <import type="android.view.View"/>
+
+        <import type="android.view.View" />
 
         <variable
             name="topTips"
@@ -25,6 +26,7 @@
         <variable
             name="oxygenValue"
             type="String" />
+
         <variable
             name="highValue"
             type="String" />
@@ -32,7 +34,7 @@
         <variable
             name="lowValue"
             type="String" />
-        
+
         <variable
             name="finishTips"
             type="String" />
             android:id="@+id/ic_heart_gif"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
-            android:layout_gravity="center" />
-
-        <TextView
-            style="@style/bloodTextStyle"
-            android:text="@{finishTips}"
             android:layout_gravity="center"
-            android:visibility="@{isShowTips ? View.GONE : View.VISIBLE}"/>
+            android:visibility="gone" />
+
+        <ImageView
+            android:id="@+id/heart_rate_view"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:src="@mipmap/default_heart_rate_icon" />
+
 
         <TextView
             android:id="@+id/ic_tips_top"
@@ -61,7 +65,7 @@
             android:layout_gravity="center_horizontal"
             android:layout_marginTop="30dp"
             android:text="@{topTips}"
-            android:visibility="@{isShowTips ? View.VISIBLE : View.GONE}"/>
+            android:visibility="@{isShowTips ? View.VISIBLE : View.GONE}" />
 
         <TextView
             android:id="@+id/ic_tips_bottom"
             android:layout_gravity="bottom|center_horizontal"
             android:layout_marginBottom="50dp"
             android:text="@{bottomTips}"
-            android:visibility="@{isShowTips ? View.VISIBLE : View.GONE}"/>
+            android:visibility="@{isShowTips ? View.VISIBLE : View.GONE}" />
 
         <RelativeLayout
-        android:id="@+id/ic_heart_layout"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_horizontal"
-        android:layout_marginTop="40dp"
-        android:visibility="@{isShowTips ? View.GONE : View.VISIBLE}">
+            android:id="@+id/ic_heart_layout"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:layout_marginTop="40dp"
+            android:visibility="@{isShowTips ? View.GONE : View.VISIBLE}">
 
             <TextView
                 android:id="@+id/ic_heart_name"
                 android:layout_marginEnd="10dp"
                 android:text="@string/ic_heart_rate" />
 
-        <TextView
-            style="@style/bloodTextStyle"
-            android:id="@+id/ic_heart_value"
-            android:layout_marginStart="10dp"
-            android:layout_toEndOf="@id/ic_heart_name"
-            android:text="@{heartValue}"/>
-    </RelativeLayout>
+            <TextView
+                android:id="@+id/ic_heart_value"
+                style="@style/bloodTextStyle"
+                android:layout_marginStart="10dp"
+                android:layout_toEndOf="@id/ic_heart_name"
+                android:text="@{heartValue}" />
+        </RelativeLayout>
+
         <RelativeLayout
             android:id="@+id/ic_oxygen_layout"
             android:layout_width="wrap_content"
                 android:text="@string/ic_blood_oxygen" />
 
             <TextView
-                style="@style/bloodTextStyle"
                 android:id="@+id/ic_blood_oxygen"
+                style="@style/bloodTextStyle"
                 android:layout_marginStart="10dp"
                 android:layout_toEndOf="@id/ic_blood_oxygen_name"
-                android:text="@{oxygenValue}"/>
+                android:text="@{oxygenValue}" />
         </RelativeLayout>
 
         <RelativeLayout
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_gravity="bottom"
-            android:layout_marginStart="40dp"
+            android:layout_marginStart="20dp"
             android:layout_marginBottom="50dp"
             android:visibility="@{isShowTips ? View.GONE : View.VISIBLE}">
 
                 style="@style/bloodTextStyle"
                 android:layout_below="@id/ic_high_name"
                 android:layout_centerHorizontal="true"
-                android:text="@{highValue}"/>
+                android:text="@{highValue}" />
         </RelativeLayout>
 
+
+        <TextView
+            style="@style/bloodTextStyle"
+            android:layout_gravity="center|bottom"
+            android:layout_marginBottom="20dp"
+            android:gravity="center"
+            android:text="@{finishTips}"
+            android:visibility="@{isShowTips ? View.GONE : View.VISIBLE}" />
+
         <RelativeLayout
             android:id="@+id/ic_low_layout"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_gravity="bottom|end"
-            android:layout_marginEnd="40dp"
+            android:layout_marginEnd="20dp"
             android:layout_marginBottom="50dp"
             android:visibility="@{isShowTips ? View.GONE : View.VISIBLE}">
 
                 style="@style/bloodTextStyle"
                 android:layout_below="@id/ic_low_name"
                 android:layout_centerHorizontal="true"
-                android:text="@{lowValue}"/>
+                android:text="@{lowValue}" />
         </RelativeLayout>
 
     </FrameLayout>
diff --git a/app/src/main/res/layout/fragment_oxygen_heart_rate.xml b/app/src/main/res/layout/fragment_oxygen_heart_rate.xml
new file mode 100644 (file)
index 0000000..c486ca9
--- /dev/null
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools">
+
+    <data>
+
+        <import type="android.view.View" />
+
+        <variable
+            name="topTips"
+            type="String" />
+
+        <variable
+            name="bottomTips"
+            type="String" />
+
+        <variable
+            name="isShowTips"
+            type="boolean" />
+
+        <variable
+            name="heartValue"
+            type="String" />
+
+        <variable
+            name="oxygenValue"
+            type="String" />
+
+        <variable
+            name="highValue"
+            type="String" />
+
+        <variable
+            name="lowValue"
+            type="String" />
+
+        <variable
+            name="finishTips"
+            type="String" />
+    </data>
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="#000000">
+
+        <pl.droidsonroids.gif.GifImageView
+            android:id="@+id/ic_heart_gif"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_gravity="center"
+            android:visibility="gone" />
+
+        <ImageView
+            android:id="@+id/heart_rate_view"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:src="@mipmap/default_heart_rate_icon" />
+
+
+        <TextView
+            android:id="@+id/ic_tips_top"
+            style="@style/bloodTextStyle"
+            android:layout_gravity="center_horizontal"
+            android:layout_marginTop="30dp"
+            android:text="@{topTips}"
+            android:visibility="@{isShowTips ? View.VISIBLE : View.GONE}" />
+
+        <TextView
+            android:id="@+id/ic_tips_bottom"
+            style="@style/bloodTextStyle"
+            android:layout_gravity="bottom|center_horizontal"
+            android:layout_marginBottom="30dp"
+            android:text="@{bottomTips}"
+            android:visibility="@{isShowTips ? View.VISIBLE : View.GONE}" />
+
+        <RelativeLayout
+            android:id="@+id/ic_heart_layout"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="left"
+            android:layout_marginLeft="20dp"
+            android:layout_marginTop="30dp"
+            android:visibility="@{isShowTips ? View.GONE : View.VISIBLE}">
+
+            <TextView
+                android:id="@+id/ic_heart_name"
+                style="@style/bloodTextStyle"
+                android:layout_centerHorizontal="true"
+                android:text="@string/ic_heart_rate" />
+
+            <TextView
+                android:id="@+id/ic_heart_value"
+                style="@style/bloodTextStyle"
+                android:layout_below="@id/ic_heart_name"
+                android:layout_centerHorizontal="true"
+                android:text="@{heartValue}" />
+        </RelativeLayout>
+
+        <RelativeLayout
+            android:id="@+id/ic_oxygen_layout"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="right"
+            android:layout_marginTop="30dp"
+            android:layout_marginRight="20dp"
+            android:visibility="@{isShowTips ? View.GONE : View.VISIBLE}">
+
+            <TextView
+                android:id="@+id/ic_blood_oxygen_name"
+                style="@style/bloodTextStyle"
+                android:layout_centerHorizontal="true"
+                android:text="@string/ic_blood_oxygen" />
+
+            <TextView
+                android:id="@+id/ic_blood_oxygen"
+                style="@style/bloodTextStyle"
+                android:layout_below="@id/ic_blood_oxygen_name"
+                android:layout_centerHorizontal="true"
+                android:text="@{oxygenValue}" />
+        </RelativeLayout>
+
+        <RelativeLayout
+            android:id="@+id/ic_high_layout"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="bottom"
+            android:layout_marginStart="20dp"
+            android:layout_marginBottom="50dp"
+            android:visibility="gone">
+
+            <TextView
+                android:id="@+id/ic_high_name"
+                style="@style/bloodTextStyle"
+                android:text="@string/ic_high_pressure" />
+
+            <TextView
+                android:id="@+id/ic_high_value"
+                style="@style/bloodTextStyle"
+                android:layout_below="@id/ic_high_name"
+                android:layout_centerHorizontal="true"
+                android:text="@{highValue}" />
+        </RelativeLayout>
+
+
+        <TextView
+            style="@style/bloodTextStyle"
+            android:layout_gravity="center|bottom"
+            android:layout_marginBottom="30dp"
+            android:gravity="center"
+            android:text="@{finishTips}"
+            android:visibility="@{isShowTips ? View.GONE : View.VISIBLE}" />
+
+        <RelativeLayout
+            android:id="@+id/ic_low_layout"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="bottom|end"
+            android:layout_marginEnd="20dp"
+            android:layout_marginBottom="50dp"
+            android:visibility="gone">
+
+            <TextView
+                android:id="@+id/ic_low_name"
+                style="@style/bloodTextStyle"
+                android:text="@string/ic_low_pressure" />
+
+            <TextView
+                android:id="@+id/ic_low_value"
+                style="@style/bloodTextStyle"
+                android:layout_below="@id/ic_low_name"
+                android:layout_centerHorizontal="true"
+                android:text="@{lowValue}" />
+        </RelativeLayout>
+
+    </FrameLayout>
+
+</layout>
diff --git a/app/src/main/res/mipmap-mdpi/default_heart_rate_icon.png b/app/src/main/res/mipmap-mdpi/default_heart_rate_icon.png
new file mode 100644 (file)
index 0000000..684c52b
Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/default_heart_rate_icon.png differ
index d87cbee..27ec637 100644 (file)
@@ -14,6 +14,7 @@
         <item name="android:layout_width">wrap_content</item>
         <item name="android:layout_height">wrap_content</item>
         <item name="android:textColor">#FFFFFF</item>
+        <item name="android:textStyle">bold</item>
         <item name="android:textSize">32sp</item>
     </style>
 </resources>
index e611164..a91baa2 100644 (file)
@@ -1,2 +1,2 @@
-#Mon Feb 01 14:14:33 CST 2021
-VERSION_CODE=66
+#Thu Jun 03 10:18:21 CST 2021
+VERSION_CODE=74