增加后台正在执行的提示
authork.liang <liangkang648253071@126.com>
Sat, 17 Jul 2021 08:26:42 +0000 (16:26 +0800)
committerk.liang <liangkang648253071@126.com>
Sat, 17 Jul 2021 08:26:42 +0000 (16:26 +0800)
20 files changed:
.idea/jarRepositories.xml
app/build.gradle
app/src/main/AndroidManifest.xml
app/src/main/java/com/ic/temperature/App.kt
app/src/main/java/com/ic/temperature/MainActivity.kt
app/src/main/java/com/ic/temperature/repository/TemperatureRepository.kt
app/src/main/java/com/ic/temperature/viewmodel/TemperatureViewModel.kt
app/src/main/java/com/ic/temperature/widget/CustomDialogStrategy.java [new file with mode: 0644]
app/src/main/java/com/ic/temperature/widget/CustomMaterialDialog.java [new file with mode: 0644]
app/src/main/res/layout/activity_main.xml
app/src/main/res/layout/stub_view_body_and_wrist_temp.xml
app/src/main/res/layout/stub_view_just_body_temp.xml
app/src/main/res/mipmap-mdpi/warn.png [new file with mode: 0644]
app/src/main/res/values-en/strings.xml
app/src/main/res/values-zh-rCN/strings.xml
app/src/main/res/values-zh-rHK/strings.xml
app/src/main/res/values-zh-rTW/strings.xml
app/src/main/res/values/strings.xml
app/src/main/res/values/themes.xml
build.gradle

index a5f05cd..2370474 100644 (file)
       <option name="name" value="Google" />
       <option name="url" value="https://dl.google.com/dl/android/maven2/" />
     </remote-repository>
+    <remote-repository>
+      <option name="id" value="maven" />
+      <option name="name" value="maven" />
+      <option name="url" value="https://jitpack.io" />
+    </remote-repository>
   </component>
 </project>
\ No newline at end of file
index 57bfae9..b17a693 100644 (file)
@@ -136,5 +136,6 @@ dependencies {
     implementation ('com.squareup.okhttp3:logging-interceptor:4.10.0-RC1') {
         exclude group: 'com.squareup.okio', module: 'okio'
     }
+    implementation 'com.github.xuexiangjys:XUI:1.1.7'
     implementation files('libs/ICLoger-release.aar')
 }
\ No newline at end of file
index 1d28e6b..4e9a60a 100644 (file)
@@ -15,7 +15,9 @@
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
         android:theme="@style/AppTheme">
-        <activity android:name=".MainActivity">
+        <activity android:name=".MainActivity"
+            android:theme="@style/SplashTheme"
+            >
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
index 017a23c..bdde41d 100644 (file)
@@ -4,6 +4,7 @@ import android.app.Application
 import android.content.Context
 import com.ic.iclooger.CrashHandler
 import com.ic.iclooger.ICLogger
+import com.xuexiang.xui.XUI
 
 
 class App : Application() {
@@ -17,6 +18,9 @@ class App : Application() {
         val crashHandler = CrashHandler.getInstance()
         crashHandler.init(applicationContext, getString(R.string.program_abnormal))
         ICLogger.init(applicationContext, "IcTemperature")
+
+        XUI.init(this)
+        XUI.debug(true)
     }
 
     companion object {
index 2fb8d4f..2e141ae 100644 (file)
@@ -45,6 +45,7 @@ class MainActivity : AppCompatActivity() {
         setContentView(binding.root)
         initObserver()
         initWakeLock()
+        viewModel.setActivity(this)
     }
 
     private var wakeLock: PowerManager.WakeLock? = null
index 8af8f8f..29e0561 100644 (file)
@@ -1,15 +1,23 @@
 package com.ic.temperature.repository
 
+import android.app.Activity
 import android.content.ComponentName
 import android.content.Context
 import android.content.Intent
 import android.content.ServiceConnection
+import android.os.Handler
 import android.os.IBinder
+import android.os.Looper
+import android.os.Message
+import android.widget.Toast
+import com.ic.temperature.R
 import com.ic.temperature.utils.Constants
 import com.ic.temperature.utils.IcLog
+import com.ic.temperature.widget.CustomDialogStrategy
 import com.ic.work.ITempSensorCallback
 import com.ic.work.ITempSensorService
 import com.ic.work.domain.Temperature
+import com.xuexiang.xui.widget.dialog.DialogLoader
 
 class TemperatureRepository(context: Context) {
 
@@ -19,10 +27,15 @@ class TemperatureRepository(context: Context) {
 
     private var mContext: Context = context
 
+    private var mActivity: Activity? = null
+
     private var mService: ITempSensorService? = null
 
     private var mCallback: ITemRepositoryCallback? = null
 
+    fun setActivity(mContext: Activity?) {
+        mActivity = mContext
+    }
 
     fun release() {
         try {
@@ -99,10 +112,52 @@ class TemperatureRepository(context: Context) {
 
         override fun onGetingData() {
             //正在获取
+            IcLog.d(TAG, "正在获取 ...")
+            if (mUiRefreshHandler != null) {
+                mUiRefreshHandler.sendEmptyMessage(RUNING_TASK_TYPE)
+            }
         }
 
         override fun onWaiting() {
             //
+            IcLog.d(TAG, "任务正在等待...")
+            //updateTipsInfo(mTipsSpares.get(top), mTipsSpares.get(bottom));
+            //让UI显示保持安静,准备测试的玩意
+            if (mUiRefreshHandler != null) {
+                mUiRefreshHandler.sendEmptyMessage(WAITING_TASK_TYPE)
+            }
+        }
+    }
+
+    private val RUNING_TASK_TYPE = 0x01
+    private val WAITING_TASK_TYPE = 0x02
+    private val mUiRefreshHandler: Handler = object : Handler(Looper.getMainLooper()) {
+        override fun handleMessage(msg: Message) {
+            super.handleMessage(msg)
+            when (msg.what) {
+                RUNING_TASK_TYPE -> Toast.makeText(
+                    mContext,
+                    mContext.getString(R.string.background_test),
+                    Toast.LENGTH_SHORT
+                ).show()
+                WAITING_TASK_TYPE -> showDialog()
+            }
+        }
+    }
+
+    private fun showDialog() {
+        val mDialogLoader = DialogLoader.getInstance().setIDialogStrategy(CustomDialogStrategy())
+        mDialogLoader.showTipDialog(
+            mActivity,
+            R.mipmap.warn,
+            mContext.getString(R.string.dialog_warn),
+            mContext.getString(R.string.background_wait),
+            mContext.getString(R.string.dialog_confirm)
+        ) { dialogInterface, i ->
+            dialogInterface?.dismiss()
+            if (mActivity != null) {
+                mActivity!!.onBackPressed()
+            }
         }
     }
 
index d29d657..90c7a0e 100644 (file)
@@ -1,5 +1,6 @@
 package com.ic.temperature.viewmodel
 
+import android.app.Activity
 import android.content.BroadcastReceiver
 import android.content.Context
 import android.content.Intent
@@ -89,6 +90,10 @@ class TemperatureViewModel() : ViewModel() {
         checkWristWear()
     }
 
+    fun setActivity(context: Activity?) {
+        repository.setActivity(context)
+    }
+
     /**
      * 是否支持腕温检测
      */
diff --git a/app/src/main/java/com/ic/temperature/widget/CustomDialogStrategy.java b/app/src/main/java/com/ic/temperature/widget/CustomDialogStrategy.java
new file mode 100644 (file)
index 0000000..c8dc950
--- /dev/null
@@ -0,0 +1,103 @@
+package com.ic.temperature.widget;
+
+import android.annotation.SuppressLint;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.graphics.Color;
+
+import androidx.annotation.NonNull;
+
+import com.ic.temperature.R;
+import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction;
+import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog;
+import com.xuexiang.xui.widget.dialog.strategy.IDialogStrategy;
+import com.xuexiang.xui.widget.dialog.strategy.InputCallback;
+import com.xuexiang.xui.widget.dialog.strategy.InputInfo;
+
+/**
+ * @author: k.liang
+ * @date: 2021/7/17
+ */
+public class CustomDialogStrategy implements IDialogStrategy {
+
+    @SuppressLint("ResourceType")
+    @Override
+    public Dialog showTipDialog(Context context, int icon, String title, String content, String submitText, DialogInterface.OnClickListener listener) {
+        MaterialDialog.Builder builder = new MaterialDialog.Builder(context);
+        builder.backgroundColor(Color.parseColor("#F2F2F2"));
+        builder.title(title);
+        builder.titleColor(Color.BLACK);
+        builder.content(content);
+        builder.contentColor(Color.BLACK);
+        builder.positiveText(submitText);
+        builder.positiveColor(Color.BLACK);
+        builder.onPositive(new MaterialDialog.SingleButtonCallback() {
+            @Override
+            public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
+                if (listener != null) {
+                    listener.onClick(dialog, which.ordinal());
+                } else {
+                    dialog.dismiss();
+                }
+            }
+        });
+        builder.cancelable(false);
+        builder.autoDismiss(false);
+        CustomMaterialDialog customMaterialDialog = new CustomMaterialDialog(builder);
+        customMaterialDialog.setTitleSize(24);
+        customMaterialDialog.setContentSize(22);
+        customMaterialDialog.setButtonSize(24);
+        customMaterialDialog.show();
+        return customMaterialDialog;
+    }
+
+    @Override
+    public Dialog showTipDialog(Context context, String title, String content, String submitText) {
+        return new CustomMaterialDialog.Builder(context)
+                .title(title)
+                .content(content)
+                .positiveText(submitText)
+                .show();
+    }
+
+    @Override
+    public Dialog showConfirmDialog(Context context, String title, String content, String submitText, DialogInterface.OnClickListener submitListener, String cancelText, DialogInterface.OnClickListener cancelListener) {
+        return null;
+    }
+
+    @Override
+    public Dialog showConfirmDialog(Context context, String content, String submitText, DialogInterface.OnClickListener submitListener, String cancelText, DialogInterface.OnClickListener cancelListener) {
+        return null;
+    }
+
+    @Override
+    public Dialog showConfirmDialog(Context context, String content, String submitText, DialogInterface.OnClickListener submitListener, String cancelText) {
+        return null;
+    }
+
+    @Override
+    public Dialog showInputDialog(Context context, int icon, String title, String content, InputInfo inputInfo, InputCallback inputCallback, String submitText, DialogInterface.OnClickListener submitListener, String cancelText, DialogInterface.OnClickListener cancelListener) {
+        return null;
+    }
+
+    @Override
+    public Dialog showContextMenuDialog(Context context, String title, String[] items, DialogInterface.OnClickListener listener) {
+        return null;
+    }
+
+    @Override
+    public Dialog showContextMenuDialog(Context context, String title, int itemsId, DialogInterface.OnClickListener listener) {
+        return null;
+    }
+
+    @Override
+    public Dialog showSingleChoiceDialog(Context context, String title, String[] items, int selectedIndex, DialogInterface.OnClickListener listener, String submitText, String cancelText) {
+        return null;
+    }
+
+    @Override
+    public Dialog showSingleChoiceDialog(Context context, String title, int itemsId, int selectedIndex, DialogInterface.OnClickListener listener, String submitText, String cancelText) {
+        return null;
+    }
+}
diff --git a/app/src/main/java/com/ic/temperature/widget/CustomMaterialDialog.java b/app/src/main/java/com/ic/temperature/widget/CustomMaterialDialog.java
new file mode 100644 (file)
index 0000000..294c55c
--- /dev/null
@@ -0,0 +1,27 @@
+package com.ic.temperature.widget;
+
+import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction;
+import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog;
+
+/**
+ * @author: k.liang
+ * @date: 2021/7/17
+ */
+public class CustomMaterialDialog extends MaterialDialog {
+
+    protected CustomMaterialDialog(Builder builder) {
+        super(builder);
+    }
+
+    public void setTitleSize(float size){
+        getTitleView().setTextSize(size);
+    }
+
+    public void setContentSize(float size){
+        getContentView().setTextSize(size);
+    }
+
+    public void setButtonSize(float size){
+        getActionButton(DialogAction.POSITIVE).setTextSize(size);
+    }
+}
index faa0dcb..5a8a111 100644 (file)
@@ -2,7 +2,8 @@
 <layout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:ic="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools">
+    xmlns:tools="http://schemas.android.com/tools"
+    >
 
     <data>
 
@@ -40,7 +41,9 @@
     <androidx.constraintlayout.widget.ConstraintLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        tools:context=".AnimalHeatActivity">
+        tools:context=".AnimalHeatActivity"
+        android:background="@color/colorMainBg"
+        >
 
         <!--只有体温的时候显示,也就是只支持体温,不支持腕温和环境温度-->
         <ViewStub
index bae3ea2..7ed4c23 100644 (file)
@@ -16,7 +16,9 @@
 
     <androidx.constraintlayout.widget.ConstraintLayout
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        android:background="@color/colorMainBg"
+        >
 
         <TextView
             android:layout_width="wrap_content"
index 4c29782..c5bab81 100644 (file)
@@ -12,7 +12,9 @@
 
     <androidx.constraintlayout.widget.ConstraintLayout
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        android:background="@color/colorMainBg"
+        >
 
         <TextView
             android:layout_width="wrap_content"
diff --git a/app/src/main/res/mipmap-mdpi/warn.png b/app/src/main/res/mipmap-mdpi/warn.png
new file mode 100644 (file)
index 0000000..9fe74ce
Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/warn.png differ
index 43c6a2f..8919a6e 100644 (file)
@@ -11,4 +11,9 @@
     <string name="activity_temp_tips_wear_too_short">Wear to short\nMay be not right</string>
     <string name="temperature_default_text">"--.- "</string>
     <string name="program_abnormal">Application Error</string>
+
+    <string name="background_test">Program is exist in backstage,wait...</string>
+    <string name="background_wait">Have other tests in background,Please try again later!</string>
+    <string name="dialog_warn">Warn</string>
+    <string name="dialog_confirm">Yes</string>
 </resources>
index bd074a1..d70808f 100644 (file)
@@ -11,4 +11,9 @@
     <string name="activity_temp_tips_wear_too_short">佩戴时间过短\n可能影响结果</string>
     <string name="temperature_default_text">"--.- "</string>
     <string name="program_abnormal">App发生异常</string>
+
+    <string name="background_test">后台正在测试心率,直接监听测试结果...</string>
+    <string name="background_wait">后台测试服务繁忙,请稍后再试!</string>
+    <string name="dialog_warn">提醒</string>
+    <string name="dialog_confirm">确认</string>
 </resources>
\ No newline at end of file
index 3df54f8..0e9a557 100644 (file)
@@ -11,4 +11,9 @@
     <string name="temperature_default_text">"--.- "</string>
     <string name="no_wearing_device_tips_text">未配戴設備</string>
     <string name="program_abnormal">App发生异常</string>
+
+    <string name="background_test">後臺正在測試心率,直接監聽測試結果...</string>
+    <string name="background_wait">後臺測試服務繁忙,請稍後再試!</string>
+    <string name="dialog_warn">提醒</string>
+    <string name="dialog_confirm">確認</string>
 </resources>
\ No newline at end of file
index 3df54f8..0e9a557 100644 (file)
@@ -11,4 +11,9 @@
     <string name="temperature_default_text">"--.- "</string>
     <string name="no_wearing_device_tips_text">未配戴設備</string>
     <string name="program_abnormal">App发生异常</string>
+
+    <string name="background_test">後臺正在測試心率,直接監聽測試結果...</string>
+    <string name="background_wait">後臺測試服務繁忙,請稍後再試!</string>
+    <string name="dialog_warn">提醒</string>
+    <string name="dialog_confirm">確認</string>
 </resources>
\ No newline at end of file
index a8440e5..0977932 100644 (file)
@@ -11,4 +11,9 @@
     <string name="activity_temp_tips_wear_too_short">佩戴时间过短\n可能影响结果</string>
     <string name="temperature_default_text">"--.- "</string>
     <string name="program_abnormal">App发生异常</string>
+
+    <string name="background_test">后台正在测试心率,直接监听测试结果...</string>
+    <string name="background_wait">后台测试服务繁忙,请稍后再试!</string>
+    <string name="dialog_warn">提醒</string>
+    <string name="dialog_confirm">确认</string>
 </resources>
\ No newline at end of file
index 7553077..2f2e82f 100644 (file)
@@ -1,10 +1,20 @@
 <resources xmlns:tools="http://schemas.android.com/tools">
     <!-- Base application theme. -->
-    <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
+    <style name="AppTheme" parent="XUITheme.Phone">
         <!-- Customize your theme here. -->
         <item name="colorPrimary">@color/colorPrimary</item>
         <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
         <item name="colorAccent">@color/colorAccent</item>
+    </style>
+
+
+    <style name="SplashTheme" parent="XUITheme.Phone">
+        <item name="android:windowIsTranslucent">true</item>  <!-- 透明背景 -->
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:windowContentOverlay">@null</item>
+        <item name="android:windowBackground">@color/colorMainBg</item>
+        <item name="android:windowFullscreen">true</item>
         <item name="android:background">@color/colorMainBg</item>
     </style>
+
 </resources>
\ No newline at end of file
index 55e96ce..1bcff5b 100644 (file)
@@ -18,6 +18,7 @@ allprojects {
     repositories {
         google()
         jcenter()
+        maven { url "https://jitpack.io" }
     }
 }