.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> 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" /> 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 @@ } } } 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; 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); } } } } } app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java
New file @@ -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[]{}; } } app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationDialog.java
New file @@ -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() { //如果用户自定了title和message 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(); } } app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationInputDialog.java
New file @@ -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() { //如果用户自定了title和message 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); } } app/src/main/res/drawable/loading_confirmation_bj.xml
New file @@ -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> app/src/main/res/drawable/loading_confirmation_edit_bj.xml
New file @@ -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> app/src/main/res/layout/loading_confirm.xml
New file @@ -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> app/src/main/res/layout/loading_confirm_input.xml
New file @@ -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> 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> 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> 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' }