From b25b6b325094511ff800e676171eae8831ad40d9 Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期二, 13 六月 2023 22:01:33 +0800
Subject: [PATCH] 2023年06月13日22:01:19

---
 app/src/main/java/com/hdl/photovoltaic/ui/device/FastScanActivity.java        |    6 
 third-zxing/build.gradle                                                      |    4 
 app/src/main/res/drawable/loading_confirmation_bj.xml                         |    5 
 app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationDialog.java         |  177 +++++++++++++
 app/src/main/res/layout/loading_confirm_input.xml                             |  138 ++++++++++
 app/src/main/res/values/strings.xml                                           |   10 
 app/src/main/AndroidManifest.xml                                              |    4 
 app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationInputDialog.java    |  186 ++++++++++++++
 app/src/main/res/values/colors.xml                                            |    2 
 .idea/misc.xml                                                                |    7 
 app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java             |   78 ++++++
 app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java         |    5 
 app/src/main/res/drawable/loading_confirmation_edit_bj.xml                    |    7 
 app/src/main/res/layout/loading_confirm.xml                                   |  106 ++++++++
 app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java |   31 ++
 15 files changed, 757 insertions(+), 9 deletions(-)

diff --git a/.idea/misc.xml b/.idea/misc.xml
index 0fa90e5..855ba98 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -3,7 +3,14 @@
   <component name="DesignSurface">
     <option name="filePathToZoomLevelMap">
       <map>
+        <entry key="../../../../../layout/custom_preview.xml" value="0.22314814814814815" />
+        <entry key="app/src/main/res/drawable/loading_bj.xml" value="0.1205" />
+        <entry key="app/src/main/res/drawable/loading_confirmation_edit_bj.xml" value="0.1205" />
         <entry key="app/src/main/res/layout/activity_home_login.xml" value="0.10030395136778116" />
+        <entry key="app/src/main/res/layout/activity_my_power_station.xml" value="0.10030395136778116" />
+        <entry key="app/src/main/res/layout/fragment_house_list.xml" value="0.10030395136778116" />
+        <entry key="app/src/main/res/layout/loading_confirm.xml" value="0.1" />
+        <entry key="app/src/main/res/layout/loading_confirm_input.xml" value="0.10659637451171876" />
       </map>
     </option>
   </component>
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 01aad1e..0b1b3dd 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -14,6 +14,7 @@
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 
 
+
     <application
         android:name=".HDLApp"
         android:allowBackup="true"
@@ -27,7 +28,8 @@
             android:exported="false" />
         <activity
             android:name=".ui.MyPowerStationActivity"
-            android:exported="false" />
+            android:exported="false"
+            />
         <activity
             android:name=".ui.HomeLoginActivity"
             android:exported="false" />
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java b/app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java
index 77d9ac2..a027d30 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java
@@ -1,13 +1,17 @@
 package com.hdl.photovoltaic.ui;
 
+import androidx.annotation.NonNull;
 import androidx.appcompat.content.res.AppCompatResources;
 
+import android.Manifest;
+import android.content.pm.PackageManager;
 import android.os.Bundle;
 import android.view.View;
 
 import com.hdl.photovoltaic.R;
 import com.hdl.photovoltaic.base.CustomBaseActivity;
 import com.hdl.photovoltaic.databinding.ActivityMyPowerStationBinding;
+import com.hdl.photovoltaic.utils.PermissionUtils;
 
 
 public class MyPowerStationActivity extends CustomBaseActivity {
@@ -76,4 +80,5 @@
         }
     }
 
+
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/device/FastScanActivity.java b/app/src/main/java/com/hdl/photovoltaic/ui/device/FastScanActivity.java
index 93ddc2f..ba49e66 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/device/FastScanActivity.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/device/FastScanActivity.java
@@ -1,8 +1,12 @@
 package com.hdl.photovoltaic.ui.device;
 
 import androidx.appcompat.content.res.AppCompatResources;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.ContextCompat;
 
+import android.Manifest;
 import android.content.Intent;
+import android.content.pm.PackageManager;
 import android.database.Cursor;
 import android.graphics.Rect;
 import android.hardware.Camera;
@@ -46,7 +50,7 @@
 import java.util.Hashtable;
 
 public class FastScanActivity extends CustomBaseActivity implements IZxingActivity, SurfaceHolder.Callback {
-    private static final String TAG = com.zxing.qrcode.CaptureActivity.class.getSimpleName();
+    private static final String TAG = "FastScanActivity";
     private final int REQUEST_CODE = 33;
     private CameraManager cameraManager;
     private CaptureActivityHandler handler;
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java b/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java
index 66cab2e..1b34ca7 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java
@@ -1,21 +1,29 @@
 package com.hdl.photovoltaic.ui.powerstation;
 
+import android.Manifest;
 import android.content.Context;
 import android.content.Intent;
+import android.content.pm.PackageManager;
 import android.hardware.camera2.CameraManager;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.View;
 
+import androidx.annotation.NonNull;
+import androidx.core.app.ActivityCompat;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
 
 import com.hdl.photovoltaic.R;
 import com.hdl.photovoltaic.databinding.FragmentHouseListBinding;
 import com.hdl.photovoltaic.base.CustomBaseFragment;
+import com.hdl.photovoltaic.other.HdlLogLogic;
 import com.hdl.photovoltaic.ui.adapter.HouseInfoAdapter;
 import com.hdl.photovoltaic.ui.bean.HouseListBean;
 import com.hdl.photovoltaic.ui.device.FastScanActivity;
+import com.hdl.photovoltaic.utils.PermissionUtils;
+import com.hdl.photovoltaic.widget.ConfirmationDialog;
+import com.hdl.photovoltaic.widget.ConfirmationInputDialog;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -48,12 +56,17 @@
 
 
     private void initEvent() {
+
         viewBinding.toolbarTopFragmentHouseListRl.topMoreIv.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                Intent intent = new Intent();
-                intent.setClass(_mActivity, FastScanActivity.class);
-                startActivity(intent);
+                String[] ary = PermissionUtils.checkPermission(_mActivity, new String[]{Manifest.permission.CAMERA});
+                if (ary.length > 0) {
+                    requestPermissions(ary, PermissionUtils.STATUS_SUCCESS);
+                } else {
+                    startActivity(FastScanActivity.class);
+                }
+
             }
         });
         //璁剧疆涓嬫媺绠ご棰滆壊
@@ -91,5 +104,17 @@
 
     }
 
+    @Override
+    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+        if (requestCode == PermissionUtils.STATUS_SUCCESS) {
+            for (int i = 0; i < permissions.length; i++) {
+                if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
+                    startActivity(FastScanActivity.class);
+                }
 
+            }
+        }
+
+    }
 }
diff --git a/app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java b/app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java
new file mode 100644
index 0000000..c970410
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java
@@ -0,0 +1,78 @@
+package com.hdl.photovoltaic.utils;
+
+import android.app.Activity;
+import android.content.pm.PackageManager;
+import android.os.Build;
+
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.ContextCompat;
+import androidx.fragment.app.Fragment;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+
+public class PermissionUtils {
+
+    /**
+     * 鑾峰彇鏉冮檺鎴愬姛
+     */
+    public static final int STATUS_SUCCESS = 1;
+
+    /**
+     * 鍙湁activity鎵嶅彲浠ョ敵璇�
+     *
+     * @param activity -
+     * @param strings  -
+     */
+    public static void askPermission(Activity activity, String[] strings) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+            List<String> newList = new ArrayList<>();
+            for (String permission : strings) {
+                boolean flag = checkPermission(activity, permission);
+                if (!flag) {
+                    newList.add(permission);
+                }
+            }
+            if (newList.size() > 0) {
+                ActivityCompat.requestPermissions(activity, newList.toArray(new String[0]), STATUS_SUCCESS);
+            }
+        }
+    }
+
+    /**
+     * 妫�鏌ヤ竴涓潈闄�
+     *
+     * @param activity   -
+     * @param permission -
+     * @return -
+     */
+    public static boolean checkPermission(Activity activity, String permission) {
+        //first we need check this Drive has? CAMERA Permission
+        return ContextCompat.checkSelfPermission(activity, permission) == PackageManager.PERMISSION_GRANTED;
+    }
+
+    /**
+     * 妫�鏌ュ涓潈闄�
+     *
+     * @param activity -
+     * @param strings  -
+     * @return -
+     */
+    public static String[] checkPermission(Activity activity, String[] strings) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+            List<String> newList = new ArrayList<>();
+            for (String permission : strings) {
+                boolean flag = checkPermission(activity, permission);
+                if (!flag) {
+                    newList.add(permission);
+                }
+            }
+            return newList.toArray(new String[0]);
+        }
+        return new String[]{};
+    }
+
+
+}
diff --git a/app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationDialog.java b/app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationDialog.java
new file mode 100644
index 0000000..bd45db1
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationDialog.java
@@ -0,0 +1,177 @@
+package com.hdl.photovoltaic.widget;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+
+import com.hdl.photovoltaic.R;
+import com.hdl.photovoltaic.databinding.LoadingConfirmBinding;
+
+/**
+ * 纭妗�
+ */
+public class ConfirmationDialog extends Dialog {
+    public ConfirmationDialog(@NonNull Context context) {
+        super(context, R.style.Custom_AlertDialog);
+        this.mContext = context;
+    }
+
+    private final Context mContext;
+    private onNoOnclickListener noOnclickListener;//鍙栨秷鎸夐挳琚偣鍑讳簡鐨勭洃鍚櫒
+    private onYesOnclickListener yesOnclickListener;//纭畾鎸夐挳琚偣鍑讳簡鐨勭洃鍚櫒
+    private LoadingConfirmBinding viewBinding;
+    private String titleStr, contentStr, yesStr, noStr;
+
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        viewBinding = LoadingConfirmBinding.inflate(getLayoutInflater());
+        setContentView(viewBinding.getRoot());
+//        setCancelable(true);//绯荤粺鍚庨��鍙互鍙栨秷
+        //绌虹櫧澶勪笉鑳藉彇娑堝姩鐢�
+        setCanceledOnTouchOutside(false);
+        //鍒濆鍖栫晫闈㈡帶浠�
+        initView();
+        //鍒濆鍖栫晫闈㈡暟鎹�
+        initData();
+        //鍒濆鍖栫晫闈㈡帶浠剁殑浜嬩欢
+        initEvent();
+
+    }
+
+    /**
+     * 鑷畾涔�"鏍囬"鏂囨湰
+     *
+     * @param title 鍐呭
+     */
+    public void setTitle(String title) {
+        if (TextUtils.isEmpty(title)) {
+            return;
+        }
+        titleStr = title;
+
+    }
+
+    /**
+     * 鑷畾涔�"纭"鏂囨湰
+     *
+     * @param confirm 鍐呭
+     */
+    public void setConfirmation(String confirm) {
+        if (TextUtils.isEmpty(confirm)) {
+            return;
+        }
+        yesStr = confirm;
+
+    }
+
+    /**
+     * 鑷畾涔�"鍙栨秷"鏂囨湰
+     *
+     * @param cancel 鍐呭
+     */
+    public void setCancel(String cancel) {
+        if (TextUtils.isEmpty(cancel)) {
+            return;
+        }
+        noStr = cancel;
+
+    }
+
+    /**
+     * 鑷畾涔�"鍐呭"鏂囨湰
+     *
+     * @param content 鍐呭
+     */
+    public void setContentText(String content) {
+        if (TextUtils.isEmpty(content)) {
+            return;
+        }
+        contentStr = content;
+    }
+
+    private void initEvent() {
+        viewBinding.dialogCancelLy.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (noOnclickListener != null) {
+                    noOnclickListener.Cancel();
+                }
+            }
+        });
+        viewBinding.dialogConfirmLy.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (yesOnclickListener != null) {
+                    yesOnclickListener.Confirm();
+                }
+            }
+        });
+
+
+    }
+
+
+    /**
+     * 鍒濆鍖栫晫闈㈡帶浠剁殑鏄剧ず鏁版嵁
+     */
+    private void initData() {
+        //濡傛灉鐢ㄦ埛鑷畾浜唗itle鍜宮essage
+        if (!TextUtils.isEmpty(titleStr)) {
+            viewBinding.loadingConfirmationTitleTv.setText(titleStr);
+        }
+        if (!TextUtils.isEmpty(contentStr)) {
+            viewBinding.loadingConfirmationContentTv.setText(contentStr);
+        }
+        //濡傛灉璁剧疆鎸夐挳鏂囧瓧
+        if (!TextUtils.isEmpty(yesStr)) {
+            viewBinding.dialogConfirmTv.setText(yesStr);
+        }
+        if (!TextUtils.isEmpty(noStr)) {
+            viewBinding.dialogCancelTv.setText(noStr);
+        }
+    }
+
+    private void initView() {
+
+
+    }
+
+
+    /**
+     * 璁剧疆鍙栨秷鎸夐挳鐩戝惉
+     *
+     * @param onNoOnclickListener -
+     */
+    public void setNoOnclickListener(onNoOnclickListener onNoOnclickListener) {
+        if (onNoOnclickListener != null) {
+            this.noOnclickListener = onNoOnclickListener;
+        }
+    }
+
+    /**
+     * 璁剧疆纭畾鎸夐挳鐩戝惉
+     *
+     * @param yesOnclickListener -
+     */
+    public void setYesOnclickListener(onYesOnclickListener yesOnclickListener) {
+        if (yesOnclickListener != null) {
+            this.yesOnclickListener = yesOnclickListener;
+        }
+
+    }
+
+    public interface onNoOnclickListener {
+        void Cancel();
+
+    }
+
+    public interface onYesOnclickListener {
+        void Confirm();
+    }
+}
diff --git a/app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationInputDialog.java b/app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationInputDialog.java
new file mode 100644
index 0000000..b117d45
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationInputDialog.java
@@ -0,0 +1,186 @@
+package com.hdl.photovoltaic.widget;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.text.method.HideReturnsTransformationMethod;
+import android.text.method.PasswordTransformationMethod;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.content.res.AppCompatResources;
+
+import com.hdl.photovoltaic.R;
+import com.hdl.photovoltaic.databinding.LoadingConfirmInputBinding;
+
+/**
+ * 杈撳叆纭妗�
+ */
+public class ConfirmationInputDialog extends Dialog {
+
+    public ConfirmationInputDialog(@NonNull Context context) {
+        super(context, R.style.Custom_AlertDialog);
+        this.mContext = context;
+    }
+
+    private final Context mContext;
+    private onNoOnclickListener noOnclickListener;//鍙栨秷鎸夐挳琚偣鍑讳簡鐨勭洃鍚櫒
+    private onYesOnclickListener yesOnclickListener;//纭畾鎸夐挳琚偣鍑讳簡鐨勭洃鍚櫒
+    private LoadingConfirmInputBinding viewBinding;
+    private String titleStr, yesStr, noStr;
+
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        viewBinding = LoadingConfirmInputBinding.inflate(getLayoutInflater());
+        setContentView(viewBinding.getRoot());
+//        setCancelable(true);//绯荤粺鍚庨��鍙互鍙栨秷
+        //绌虹櫧澶勪笉鑳藉彇娑堝姩鐢�
+        setCanceledOnTouchOutside(false);
+        //鍒濆鍖栫晫闈㈡帶浠�
+        initView();
+        //鍒濆鍖栫晫闈㈡暟鎹�
+        initData();
+        //鍒濆鍖栫晫闈㈡帶浠剁殑浜嬩欢
+        initEvent();
+
+
+    }
+
+    /**
+     * 鑷畾涔�"鏍囬"鏂囨湰
+     *
+     * @param title 鍐呭
+     */
+    public void setTitle(String title) {
+        if (TextUtils.isEmpty(title)) {
+            return;
+        }
+        titleStr = title;
+
+    }
+
+    /**
+     * 鑷畾涔�"纭"鏂囨湰
+     *
+     * @param confirm 鍐呭
+     */
+    public void setConfirmation(String confirm) {
+        if (TextUtils.isEmpty(confirm)) {
+            return;
+        }
+        yesStr = confirm;
+
+
+    }
+
+    /**
+     * 鑷畾涔�"鍙栨秷"鏂囨湰
+     *
+     * @param cancel 鍐呭
+     */
+    public void setCancel(String cancel) {
+        if (TextUtils.isEmpty(cancel)) {
+            return;
+        }
+        noStr = cancel;
+
+    }
+
+
+    private void initEvent() {
+        viewBinding.dialogCancelLy.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (noOnclickListener != null) {
+                    noOnclickListener.Cancel();
+                }
+            }
+        });
+        viewBinding.dialogConfirmLy.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (yesOnclickListener != null) {
+                    yesOnclickListener.Confirm(viewBinding.loadingConfirmationInputEt.getText().toString());
+                }
+            }
+        });
+
+
+        viewBinding.loadingConfirmationClickTv.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                v.setSelected(!v.isSelected());
+                if (v.isSelected()) {
+                    viewBinding.loadingConfirmationInputEt.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
+                    viewBinding.loadingConfirmationHideIv.setImageDrawable(AppCompatResources.getDrawable(mContext, R.drawable.show));
+                } else {
+                    viewBinding.loadingConfirmationInputEt.setTransformationMethod(PasswordTransformationMethod.getInstance());
+                    viewBinding.loadingConfirmationHideIv.setImageDrawable(AppCompatResources.getDrawable(mContext, R.drawable.hide));
+                }
+                //璁剧疆鍏夋爣浣嶇疆
+                viewBinding.loadingConfirmationInputEt.setSelection(viewBinding.loadingConfirmationInputEt.getText().length());
+
+            }
+        });
+    }
+
+
+    /**
+     * 鍒濆鍖栫晫闈㈡帶浠剁殑鏄剧ず鏁版嵁
+     */
+    private void initData() {
+        //濡傛灉鐢ㄦ埛鑷畾浜唗itle鍜宮essage
+        if (!TextUtils.isEmpty(titleStr)) {
+            viewBinding.loadingConfirmationTitleTv.setText(titleStr);
+        }
+        //濡傛灉璁剧疆鎸夐挳鏂囧瓧
+        if (!TextUtils.isEmpty(yesStr)) {
+            viewBinding.dialogConfirmTv.setText(yesStr);
+        }
+        if (!TextUtils.isEmpty(noStr)) {
+            viewBinding.dialogCancelTv.setText(noStr);
+        }
+    }
+
+    private void initView() {
+
+
+    }
+
+
+    /**
+     * 璁剧疆鍙栨秷鎸夐挳鐩戝惉
+     *
+     * @param onNoOnclickListener -
+     */
+    public void setNoOnclickListener(onNoOnclickListener onNoOnclickListener) {
+        if (onNoOnclickListener != null) {
+            this.noOnclickListener = onNoOnclickListener;
+        }
+    }
+
+    /**
+     * 璁剧疆纭畾鎸夐挳鐩戝惉
+     *
+     * @param yesOnclickListener -
+     */
+    public void setYesOnclickListener(onYesOnclickListener yesOnclickListener) {
+        if (yesOnclickListener != null) {
+            this.yesOnclickListener = yesOnclickListener;
+        }
+
+    }
+
+    public interface onNoOnclickListener {
+        void Cancel();
+
+    }
+
+    public interface onYesOnclickListener {
+        void Confirm(String str);
+    }
+
+}
diff --git a/app/src/main/res/drawable/loading_confirmation_bj.xml b/app/src/main/res/drawable/loading_confirmation_bj.xml
new file mode 100644
index 0000000..3dfd634
--- /dev/null
+++ b/app/src/main/res/drawable/loading_confirmation_bj.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/text_FFFFFFFF" />
+    <corners android:radius="@dimen/dp_16" />
+</shape>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/loading_confirmation_edit_bj.xml b/app/src/main/res/drawable/loading_confirmation_edit_bj.xml
new file mode 100644
index 0000000..fa1aca7
--- /dev/null
+++ b/app/src/main/res/drawable/loading_confirmation_edit_bj.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <corners android:radius="@dimen/dp_4" />
+    <stroke
+        android:width="0.5dp"
+        android:color="@color/text_E1E1E1" />
+</shape>
\ No newline at end of file
diff --git a/app/src/main/res/layout/loading_confirm.xml b/app/src/main/res/layout/loading_confirm.xml
new file mode 100644
index 0000000..16fe379
--- /dev/null
+++ b/app/src/main/res/layout/loading_confirm.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/loading_confirmation_cl"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="@dimen/dp_48"
+        android:layout_marginTop="@dimen/dp_20"
+        android:layout_marginEnd="@dimen/dp_48"
+        android:layout_marginBottom="@dimen/dp_20"
+        android:background="@drawable/loading_confirmation_bj"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent">
+
+        <TextView
+            android:id="@+id/loading_confirmation_title_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="@dimen/dp_25"
+            android:layout_marginStart="@dimen/dp_20"
+            android:layout_marginTop="@dimen/dp_25"
+            android:layout_marginEnd="@dimen/dp_20"
+            android:textColor="@color/text_030D1C"
+            android:textSize="@dimen/text_18"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <TextView
+            android:id="@+id/loading_confirmation_content_tv"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="@dimen/dp_20"
+            android:layout_marginTop="@dimen/dp_34"
+            android:layout_marginEnd="@dimen/dp_20"
+            android:layout_marginBottom="@dimen/dp_34"
+            android:singleLine="false"
+            android:textColor="@color/text_030D1C"
+            app:layout_constraintBottom_toTopOf="@+id/dialog_confirm_bottom_line_ly"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/loading_confirmation_title_tv"
+
+            />
+
+
+        <LinearLayout
+            android:id="@+id/dialog_confirm_bottom_line_ly"
+            android:layout_width="0dp"
+            android:layout_height="@dimen/dp_52"
+            android:orientation="horizontal"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent">
+
+
+            <LinearLayout
+                android:id="@+id/dialog_cancel_ly"
+                android:layout_width="@dimen/dp_0"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:gravity="center">
+
+                <TextView
+                    android:id="@+id/dialog_cancel_tv"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/loading_鍙栨秷"
+                    android:textColor="@color/text_7C8590"
+                    android:textSize="@dimen/text_18" />
+
+
+            </LinearLayout>
+
+            <View
+                android:layout_width="0.5dp"
+                android:layout_height="@dimen/dp_23"
+                android:layout_gravity="center"
+                android:background="@color/text_E1E1E1" />
+
+            <LinearLayout
+                android:id="@+id/dialog_confirm_ly"
+                android:layout_width="@dimen/dp_0"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:gravity="center">
+
+                <TextView
+                    android:id="@+id/dialog_confirm_tv"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/loading_纭"
+                    android:textColor="@color/text_FF245EC3"
+                    android:textSize="@dimen/text_18" />
+            </LinearLayout>
+        </LinearLayout>
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/loading_confirm_input.xml b/app/src/main/res/layout/loading_confirm_input.xml
new file mode 100644
index 0000000..9a9f89f
--- /dev/null
+++ b/app/src/main/res/layout/loading_confirm_input.xml
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <RelativeLayout
+        android:id="@+id/loading_confirmation_rl"
+        android:layout_width="@dimen/dp_0"
+        android:layout_height="225dp"
+        android:layout_marginStart="@dimen/dp_48"
+        android:layout_marginEnd="@dimen/dp_48"
+        android:background="@drawable/loading_confirmation_bj"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent">
+
+        <TextView
+            android:id="@+id/loading_confirmation_title_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="@dimen/dp_25"
+            android:layout_alignParentTop="true"
+            android:layout_centerInParent="true"
+            android:layout_marginStart="@dimen/dp_20"
+            android:layout_marginTop="@dimen/dp_25"
+            android:layout_marginEnd="@dimen/dp_20"
+            android:text="wifi_ssid"
+            android:textColor="@color/text_030D1C"
+            android:textSize="@dimen/text_18" />
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/loading_confirmation_input_cl"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/dp_50"
+            android:layout_below="@+id/loading_confirmation_title_tv"
+            android:layout_marginStart="@dimen/dp_16"
+            android:layout_marginTop="@dimen/dp_34"
+            android:layout_marginEnd="@dimen/dp_16"
+            android:background="@drawable/loading_confirmation_edit_bj"
+
+            >
+
+            <EditText
+                android:id="@+id/loading_confirmation_input_et"
+                android:layout_width="0dp"
+                android:layout_height="@dimen/dp_23"
+                android:layout_marginEnd="@dimen/dp_40"
+                android:background="@null"
+                android:gravity="center_vertical|start"
+                android:hint="@string/home_login_璇疯緭鍏ュ瘑鐮�"
+                android:inputType="textPassword"
+                android:lines="1"
+                android:maxLines="1"
+                android:paddingStart="@dimen/dp_16"
+                android:paddingEnd="@dimen/dp_16"
+                android:textColor="@color/text_FF000000"
+                android:textColorHint="@color/text_25000000"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent"
+
+                />
+
+            <ImageView
+                android:id="@+id/loading_confirmation_hide_iv"
+                android:layout_width="23dp"
+                android:layout_height="18dp"
+                android:layout_marginEnd="@dimen/dp_16"
+                android:src="@drawable/hide"
+                app:layout_constraintBottom_toBottomOf="@+id/loading_confirmation_input_et"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintTop_toTopOf="@+id/loading_confirmation_input_et" />
+            <!--鍔犲ぇ鐐瑰嚮浜嬩欢-->
+            <TextView
+                android:id="@+id/loading_confirmation_click_tv"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toEndOf="@+id/loading_confirmation_input_et"
+                app:layout_constraintTop_toTopOf="parent" />
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <LinearLayout
+            android:id="@+id/dialog_confirm_bottom_line_ly"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/dp_52"
+            android:layout_alignParentBottom="true"
+            android:orientation="horizontal">
+
+
+            <LinearLayout
+                android:id="@+id/dialog_cancel_ly"
+                android:layout_width="@dimen/dp_0"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:gravity="center">
+
+                <TextView
+                    android:id="@+id/dialog_cancel_tv"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/loading_鍙栨秷"
+                    android:textColor="@color/text_7C8590"
+                    android:textSize="@dimen/text_18" />
+
+
+            </LinearLayout>
+
+            <View
+                android:layout_width="0.5dp"
+                android:layout_height="@dimen/dp_23"
+                android:layout_gravity="center"
+                android:background="@color/text_E1E1E1" />
+
+            <LinearLayout
+                android:id="@+id/dialog_confirm_ly"
+                android:layout_width="@dimen/dp_0"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:gravity="center">
+
+                <TextView
+                    android:id="@+id/dialog_confirm_tv"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/loading_纭"
+                    android:textColor="@color/text_FF245EC3"
+                    android:textSize="@dimen/text_18" />
+            </LinearLayout>
+        </LinearLayout>
+
+    </RelativeLayout>
+
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 57ebb68..8b1fadc 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -32,5 +32,7 @@
     <color name="text_CBCDD1">#CBCDD1</color>/
     <color name="text_FF245EC3">#FF245EC3</color>#
     <color name="text_636363">#636363</color>
+    <color name="text_7C8590">#7C8590</color>
+    <color name="text_030D1C">#030D1C</color>
 
 </resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d8a58e0..f78ebd0 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -21,7 +21,7 @@
     <string name="home_login_娉ㄥ唽">娉ㄥ唽</string>
     <string name="home_login_蹇樿瀵嗙爜">蹇樿瀵嗙爜</string>
     <string name="home_login_鐧诲綍">鐧诲綍</string>
-    <string name="home_login_鐧诲綍涓�">鐧诲綍涓�...</string>
+    <string name="home_login_鐧诲綍涓�">鐧诲綍涓��</string>
     <string name="home_login_浣撻獙鐢电珯">浣撻獙鐢电珯</string>
     <string name="home_login_鍚屾剰_鏈嶅姟鍗忚">鍚屾剰銆婃湇鍔″崗璁�嬪拰銆婄敤鎴蜂俊鎭繚鎶よ瀹氥��</string>
     <string name="home_login_error_璐﹀彿涓嶈兘涓虹┖">璐﹀彿涓嶈兘涓虹┖.</string>
@@ -43,8 +43,10 @@
     <string name="my_power_station_绂荤嚎">绂荤嚎</string>
     <string name="my_power_station_鏁呴殰">鏁呴殰</string>
     <string name="my_power_station_杩愯">杩愯</string>
+
+    <!--璁惧-->
     <string name="device_鎵嬪姩杩炴帴">鎵嬪姩杩炴帴</string>
-    <string name="device_鍔犺浇涓�">鍔犺浇涓�...</string>
+    <string name="device_鍔犺浇涓�">鍔犺浇涓��</string>
 
 
     <!--鎴戠殑-->
@@ -52,5 +54,9 @@
     <string name="me_璁剧疆">璁剧疆</string>
     <string name="me_鍏充簬">鍏充簬</string>
 
+    <!--寮规-->
+    <string name="loading_鍙栨秷">鍙栨秷</string>
+    <string name="loading_纭">纭</string>
+
 
 </resources>
\ No newline at end of file
diff --git a/third-zxing/build.gradle b/third-zxing/build.gradle
index fd81dd7..2961ed2 100644
--- a/third-zxing/build.gradle
+++ b/third-zxing/build.gradle
@@ -39,7 +39,7 @@
         exclude group: 'com.android.support', module: 'support-annotations'
     })
     testImplementation 'junit:junit:4.12'
-    implementation 'com.android.support:support-annotations:28.0.0'
+    api 'com.android.support:support-annotations:28.0.0'
 //    api 'com.android.support:appcompat-v7:28.0.0'
-    implementation 'androidx.appcompat:appcompat:1.3.0'
+    api 'androidx.appcompat:appcompat:1.3.0'
 }

--
Gitblit v1.8.0