implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'androidx.test.ext:junit:1.1.1'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
-
// ViewModel
implementation "androidx.lifecycle:lifecycle-viewmodel:2.2.0"
// LiveData
implementation 'com.google.android.material:material:1.2.0-alpha05'
implementation 'com.jakewharton.threetenabp:threetenabp:1.2.2'
- implementation 'com.github.xuexiangjys:XUI:1.1.7'
implementation files('libs/ICLoger-release.aar')
}
import com.ic.blood.util.IcLog;
import com.ic.iclooger.CrashHandler;
import com.ic.iclooger.ICLogger;
-import com.xuexiang.xui.XUI;
public class BloodApp extends Application {
super.onCreate();
IcLog.setLogHead("IcBlood");
- XUI.init(this);
- XUI.debug(true);
-
CrashHandler crashHandler = CrashHandler.getInstance();
crashHandler.init(getApplicationContext(), getString(R.string.program_abnormal));
ICLogger.init(getApplicationContext(), "IcBlood");
import static android.content.Context.POWER_SERVICE;
-
/**
* 这个是只有心率和血氧的UI
*/
public void onDestroy() {
super.onDestroy();
IcLog.i(TAG, "onDestroy");
-
//取消广播注册,释放资源
bloodModel.onViewDestroy();
bloodModel = null;
-
if (gifFromAssets != null) {
gifFromAssets.recycle();
}
-
delayHandler = null;
}
import android.os.Looper;
import android.os.Message;
import android.util.Log;
+import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
+import androidx.appcompat.app.AlertDialog;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import com.ic.blood.R;
import com.ic.blood.util.IcLog;
import com.ic.blood.util.SystemUtils;
-import com.ic.blood.widget.CustomDialogStrategy;
import com.ic.work.IHeartRateSensorCallback;
import com.ic.work.IHeartRateSensorService;
import com.ic.work.domain.HeartRate;
-import com.xuexiang.xui.widget.dialog.DialogLoader;
import static android.media.AudioManager.FX_FOCUS_NAVIGATION_DOWN;
private boolean mHasWear = false;
private TestType testType = TestType.ALL;
+ private AlertDialog alertShutdownDialog;
public enum TestType {
ALL, JUST_OXYGEN, JUST_HEART_RATE
Toast.makeText(mContext, mContext.getString(R.string.background_test), Toast.LENGTH_SHORT).show();
break;
case WAITING_TASK_TYPE:
- showDialog();
+ AlertDialog alertDialog = showDialog();
+ alertDialog.show();
+ TextView contentText = dialog.findViewById(android.R.id.message);
+ contentText.setTextSize(26.0f);
break;
}
}
};
- private void showDialog() {
- DialogLoader mDialogLoader = DialogLoader.getInstance().setIDialogStrategy(new CustomDialogStrategy());
- dialog = 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) -> {
- if (dialogInterface != null) {
- dialogInterface.dismiss();
- }
- if (mActivity != null) {
- mActivity.onBackPressed();
- }
- });
+ private AlertDialog showDialog() {
+ if (alertShutdownDialog == null) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
+ builder.setMessage(mContext.getString(R.string.background_wait))
+ .setPositiveButton(mContext.getString(R.string.dialog_confirm), (dialog, id) -> {
+ dialog.dismiss();
+ if (mActivity != null) {
+ mActivity.onBackPressed();
+ }
+ });
+ alertShutdownDialog = builder.create();
+ }
+ return alertShutdownDialog;
}
private String getTestingString() {
+++ /dev/null
-package com.ic.blood.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.blood.R;
-import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction;
-import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog;
-import com.xuexiang.xui.widget.dialog.materialdialog.Theme;
-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.blood.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);
- }
-}
android:text="@{highValue}" />
</RelativeLayout>
-
<TextView
style="@style/bloodTextStyle"
android:layout_gravity="center|bottom"