<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
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
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" />
import android.content.Context
import com.ic.iclooger.CrashHandler
import com.ic.iclooger.ICLogger
+import com.xuexiang.xui.XUI
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 {
setContentView(binding.root)
initObserver()
initWakeLock()
+ viewModel.setActivity(this)
}
private var wakeLock: PowerManager.WakeLock? = null
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) {
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 {
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()
+ }
}
}
package com.ic.temperature.viewmodel
+import android.app.Activity
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
checkWristWear()
}
+ fun setActivity(context: Activity?) {
+ repository.setActivity(context)
+ }
+
/**
* 是否支持腕温检测
*/
--- /dev/null
+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;
+ }
+}
--- /dev/null
+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);
+ }
+}
<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>
<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
<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"
<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"
<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>
<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
<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
<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
<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
<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
repositories {
google()
jcenter()
+ maven { url "https://jitpack.io" }
}
}