From 81055decbe2d6356123035a32ef0ea0e3181bd0d Mon Sep 17 00:00:00 2001 From: kerwincui <164770707@qq.com> Date: Thu, 24 Jun 2021 14:55:33 +0800 Subject: [PATCH] =?UTF-8?q?android=E7=AB=AFbug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/build.gradle | 3 + .../wumei/activity/AddDeviceActivity.java | 14 +-- .../fragment/device/AddDeviceFragment.java | 119 ++++++++++-------- .../fragment/device/DeviceEditFragment.java | 7 +- .../fragment/device/SimpleTabFragment.java | 23 ++-- .../com/kerwin/wumei/utils/SettingUtils.java | 17 +++ .../main/res/layout/fragment_add_device.xml | 76 ++++++----- .../main/res/layout/fragment_device_edit.xml | 16 ++- .../main/res/layout/fragment_device_set.xml | 4 +- android/app/src/main/res/values/strings.xml | 2 +- 10 files changed, 166 insertions(+), 115 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 4653cf2e..32580bb9 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -126,6 +126,9 @@ dependencies { //rxutil2 implementation deps.rxbinding implementation 'com.github.xuexiangjys:rxutil2:1.2.0' + + // circleprogressview 圆形进度动画控件 + implementation 'com.king.view:circleprogressview:1.1.2' } //自动添加X-Library依赖 apply from: 'x-library.gradle' diff --git a/android/app/src/main/java/com/kerwin/wumei/activity/AddDeviceActivity.java b/android/app/src/main/java/com/kerwin/wumei/activity/AddDeviceActivity.java index c4ec7fdd..0faf011e 100644 --- a/android/app/src/main/java/com/kerwin/wumei/activity/AddDeviceActivity.java +++ b/android/app/src/main/java/com/kerwin/wumei/activity/AddDeviceActivity.java @@ -2,10 +2,7 @@ package com.kerwin.wumei.activity; import android.Manifest; -import android.app.Activity; -import android.app.ProgressDialog; import android.content.Context; -import android.content.DialogInterface; import android.content.pm.PackageManager; import android.location.LocationManager; import android.net.wifi.ScanResult; @@ -14,7 +11,6 @@ import android.net.wifi.WifiManager; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; -import android.os.Handler; import android.text.Spannable; import android.text.SpannableString; import android.text.SpannableStringBuilder; @@ -35,12 +31,10 @@ import com.espressif.iot.esptouch.util.TouchNetUtil; import com.kerwin.wumei.R; import com.kerwin.wumei.adapter.entity.EspTouchViewModel; import com.kerwin.wumei.core.BaseActivity; -import com.kerwin.wumei.fragment.LoginFragment; import com.kerwin.wumei.fragment.device.AddDeviceFragment; import com.kerwin.wumei.utils.NetUtils; import com.xuexiang.xui.utils.KeyboardUtils; import com.xuexiang.xui.utils.StatusBarUtils; -import com.xuexiang.xui.widget.progress.CircleProgressView; import com.xuexiang.xutil.display.Colors; import java.lang.ref.WeakReference; @@ -334,7 +328,7 @@ public class AddDeviceActivity extends BaseActivity { activity.mTask = null; if (result == null) { addDeviceFragment.showMessage("建立 EspTouch 任务失败, 端口可能被其他程序占用",false); - addDeviceFragment.endCounter(); + addDeviceFragment.cancleCounter(); return; } @@ -346,16 +340,16 @@ public class AddDeviceActivity extends BaseActivity { if (!firstResult.isSuc()) { addDeviceFragment.showMessage("配网失败",false); - addDeviceFragment.endCounter(); + addDeviceFragment.cancleCounter(); return; } String message=""; for (IEsptouchResult touchResult : result) { - message += "BSSID: "+touchResult.getBssid()+", 地址: "+touchResult.getInetAddress().getHostAddress()+"\n"; + message += "BSSID: "+touchResult.getBssid()+"\n 地址: "+touchResult.getInetAddress().getHostAddress()+"\n"; } - addDeviceFragment.endCounter(); + addDeviceFragment.completeCounter(); addDeviceFragment.showMessage("完成配网\n"+message,true); } } diff --git a/android/app/src/main/java/com/kerwin/wumei/fragment/device/AddDeviceFragment.java b/android/app/src/main/java/com/kerwin/wumei/fragment/device/AddDeviceFragment.java index e02cc600..33abf32a 100644 --- a/android/app/src/main/java/com/kerwin/wumei/fragment/device/AddDeviceFragment.java +++ b/android/app/src/main/java/com/kerwin/wumei/fragment/device/AddDeviceFragment.java @@ -18,6 +18,7 @@ import android.text.method.HideReturnsTransformationMethod; import android.text.method.PasswordTransformationMethod; import android.util.Log; import android.view.View; +import android.widget.CheckBox; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.TextView; @@ -30,16 +31,21 @@ import com.kerwin.wumei.activity.AddDeviceActivity; import com.kerwin.wumei.adapter.entity.EspTouchViewModel; import com.kerwin.wumei.core.BaseFragment; import com.xuexiang.xpage.annotation.Page; -import com.xuexiang.xui.widget.progress.CircleProgressView; +import com.king.view.circleprogressview.CircleProgressView; + import com.xuexiang.xui.widget.textview.supertextview.SuperButton; + import java.util.List; import butterknife.BindView; +import static com.kerwin.wumei.utils.SettingUtils.getWifiPassword; +import static com.kerwin.wumei.utils.SettingUtils.setWifiPassword; + @Page(name = "智能配网") -public class AddDeviceFragment extends BaseFragment implements CircleProgressView.CircleProgressUpdateListener { +public class AddDeviceFragment extends BaseFragment { @BindView(R.id.advance_frame_layout) FrameLayout advanceFrameLayout; @BindView(R.id.advance_linear_layout) @@ -48,14 +54,18 @@ public class AddDeviceFragment extends BaseFragment implements CircleProgressVie AppCompatImageView advanceIcon; @BindView(R.id.wifi_password_icon) AppCompatImageView wifiPasswordIcon; - @BindView(R.id.progressView_circle_main) - CircleProgressView progressViewCircleMain; +// @BindView(R.id.progressView_circle_main) +// CircleProgressView progressViewCircleMain; @BindView(R.id.progress_text_main) TextView progressTextMain; @BindView(R.id.btn_config_cancle) SuperButton btnConfigCancle; @BindView(R.id.btn_return) SuperButton btnReturn; + @BindView(R.id.chk_remeber) + CheckBox chk_remeber; + @BindView(R.id.circleProgressView) + CircleProgressView circleProgressView; private static final String TAG = AddDeviceFragment.class.getSimpleName(); private static final int REQUEST_PERMISSION = 0x01; @@ -81,24 +91,33 @@ public class AddDeviceFragment extends BaseFragment implements CircleProgressVie */ @Override protected void initViews() { - progressViewCircleMain.setGraduatedEnabled(true); - progressViewCircleMain.setProgressViewUpdateListener(this); - //智能配网 mViewModel = ((AddDeviceActivity)this.getActivity()).GetMViewModel(); - mViewModel.ssidSpinner = findViewById(R.id.ssid_spinner); + mViewModel.apPasswordEdit = findViewById(R.id.wifi_password_txt); + mViewModel.apPasswordEdit.setText(getWifiPassword()); + + mViewModel.ssidSpinner = findViewById(R.id.ssid_spinner); mViewModel.packageModeGroup = findViewById(R.id.packageModeGroup); mViewModel.messageView = findViewById(R.id.txt_config_message); mViewModel.messageView.setText(""); + mViewModel.xsbDeviceCount = findViewById(R.id.xsb_device_count); mViewModel.xsbDeviceCount.setDefaultValue(1); + mViewModel.confirmBtn = findViewById(R.id.btn_begin); mViewModel.confirmBtn.setOnClickListener(v -> { ((AddDeviceActivity)this.getActivity()).executeEsptouch(); + //存储wifi密码 + if(chk_remeber.isChecked()){ + setWifiPassword(mViewModel.apPasswordEdit.getText().toString()); + }else{ + setWifiPassword(""); + } + // PageOption.to(AddDeviceTwoFragment.class) //跳转的fragment // .setAnim(CoreAnim.slide) //页面转场动画 // .setRequestCode(100) //请求码,用于返回结果 @@ -131,42 +150,6 @@ public class AddDeviceFragment extends BaseFragment implements CircleProgressVie } - - /** - * 进度条开始更新 - * - * @param view - */ - @Override - public void onCircleProgressStart(View view) { - - } - - /** - * 进度条更新结束 - * - * @param view - */ - @Override - public void onCircleProgressFinished(View view) { - progressViewCircleMain.startProgressAnimation(); - } - - - - /** - * 进度条更新中 - * - * @param view - * @param progress - */ - @Override - public void onCircleProgressUpdate(View view, float progress) { - -// progressTextMain.setText("10"); - - } - @Override protected void initListeners() { //单击高级设置项 @@ -205,7 +188,7 @@ public class AddDeviceFragment extends BaseFragment implements CircleProgressVie @Override public void onClick(View view){ ((AddDeviceActivity)getActivity()).interruptEspTouchTask(); - endCounter(); + cancleCounter(); } }); @@ -213,7 +196,7 @@ public class AddDeviceFragment extends BaseFragment implements CircleProgressVie @Override public void onClick(View view){ popToBack(); - endCounter(); + cancleCounter(); } }); @@ -221,7 +204,7 @@ public class AddDeviceFragment extends BaseFragment implements CircleProgressVie @Override public void onDestroyView() { - endCounter(); + cancleCounter(); super.onDestroyView(); } @@ -229,22 +212,50 @@ public class AddDeviceFragment extends BaseFragment implements CircleProgressVie * 打开计时器 */ public void beginCounter(){ - progressViewCircleMain.startProgressAnimation(); - mHander.post(mCounter); - showMessage("配网中...",true); mViewModel.confirmBtn.setEnabled(false); btnConfigCancle.setEnabled(true); + showMessage("配网中...",true); + mHander.post(mCounter); + + //显示进度动画,进度,动画时长 + circleProgressView.showAnimation(100,3000); + //设置进度改变监听 + circleProgressView.setOnChangeListener(new CircleProgressView.OnChangeListener() { + @Override + public void onProgressChanged(float progress, float max) { + if(progress==100){ + circleProgressView.setProgress(0); + circleProgressView.showAnimation(100); + + } + } + }); + } + + /** + * 计时器完成 + */ + public void completeCounter(){ + mCount=0; + mHander.removeCallbacks(mCounter); + progressTextMain.setText("100"); + circleProgressView.setOnChangeListener(null); + circleProgressView.showAppendAnimation(100); } /** * 关闭计时器 */ - public void endCounter(){ - mHander.removeCallbacks(mCounter); + public void cancleCounter(){ mViewModel.confirmBtn.setEnabled(true); btnConfigCancle.setEnabled(false); - progressViewCircleMain.stopProgressAnimation(); - progressViewCircleMain.setProgressViewUpdateListener(null); + showMessage("",true); + + mCount=0; + mHander.removeCallbacks(mCounter); + progressTextMain.setText("0"); + circleProgressView.setOnChangeListener(null); + circleProgressView.showAppendAnimation(0); } /** diff --git a/android/app/src/main/java/com/kerwin/wumei/fragment/device/DeviceEditFragment.java b/android/app/src/main/java/com/kerwin/wumei/fragment/device/DeviceEditFragment.java index c1f7bcee..c623089d 100644 --- a/android/app/src/main/java/com/kerwin/wumei/fragment/device/DeviceEditFragment.java +++ b/android/app/src/main/java/com/kerwin/wumei/fragment/device/DeviceEditFragment.java @@ -34,6 +34,7 @@ import com.xuexiang.xpage.annotation.Page; import com.xuexiang.xui.widget.actionbar.TitleBar; import com.xuexiang.xui.widget.edittext.materialedittext.MaterialEditText; import com.xuexiang.xui.widget.textview.supertextview.SuperButton; +import com.xuexiang.xui.widget.toast.XToast; import com.xuexiang.xutil.net.JsonUtil; import java.util.List; @@ -64,6 +65,8 @@ public class DeviceEditFragment extends BaseFragment { SuperButton sp_device_temperature; @BindView(R.id.update_device_temp_icon) AppCompatImageView update_temp_icon; + @BindView(R.id.sp_upgrade) + SuperButton sp_upgrade; private Long deviceId=0L; private String deviceNum=""; @@ -100,7 +103,7 @@ public class DeviceEditFragment extends BaseFragment { } @SingleClick - @OnClick({ R.id.btn_save,R.id.btn_cancle_edit,R.id.update_device_temp_icon}) + @OnClick({ R.id.btn_save,R.id.btn_cancle_edit,R.id.update_device_temp_icon,R.id.sp_upgrade}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.btn_save: @@ -113,6 +116,8 @@ public class DeviceEditFragment extends BaseFragment { getNewStatusData(); update_temp_icon.setVisibility(View.GONE); break; + case R.id.sp_upgrade: + XToastUtils.success("固件已经是最新版本"); default: break; } diff --git a/android/app/src/main/java/com/kerwin/wumei/fragment/device/SimpleTabFragment.java b/android/app/src/main/java/com/kerwin/wumei/fragment/device/SimpleTabFragment.java index 67779605..d3a23a66 100644 --- a/android/app/src/main/java/com/kerwin/wumei/fragment/device/SimpleTabFragment.java +++ b/android/app/src/main/java/com/kerwin/wumei/fragment/device/SimpleTabFragment.java @@ -203,27 +203,23 @@ public class SimpleTabFragment extends BaseFragment { holder.click(R.id.device_item_light_button, v -> { if(device.getIsOnline()==0) return; - // 更新灯状态 - updateDeviceStatus(buildDeviceLightStatus(device.getDeviceId(), - device.getDeviceNum(), - lightIconView.isIconEnabled()==true?0:1)); //震动 Vibrator vibrator = (Vibrator) activity.getSystemService(activity.VIBRATOR_SERVICE); vibrator.vibrate(100); - lightIconView.switchState(true); - + // 更新灯状态 + updateDeviceStatus( + buildDeviceLightStatus(device.getDeviceId(), device.getDeviceNum(),lightIconView.isIconEnabled()==true?0:1) + , lightIconView); }); holder.click(R.id.device_item_switch_button, v -> { if(device.getIsOnline()==0) return; - // 更新继电器状态 - updateDeviceStatus(buildDeviceRelayStatus(device.getDeviceId(), - device.getDeviceNum(), - switchIconView.isIconEnabled()==true?0:1)); //震动 Vibrator vibrator = (Vibrator) activity.getSystemService(activity.VIBRATOR_SERVICE); vibrator.vibrate(100); - switchIconView.switchState(true); - + // 更新继电器状态 + updateDeviceStatus( + buildDeviceRelayStatus(device.getDeviceId(),device.getDeviceNum(),switchIconView.isIconEnabled()==true?0:1) + , switchIconView); }); holder.click(R.id.device_item_card_view, v -> { @@ -307,7 +303,7 @@ public class SimpleTabFragment extends BaseFragment { /** * HTTP更新设备状态 */ - private void updateDeviceStatus(IotDeviceStatus deviceStatus){ + private void updateDeviceStatus(IotDeviceStatus deviceStatus,SwitchIconView iconView){ if(!hasToken()) return; XHttp.put("/prod-api/system/status") .upJson(JsonUtil.toJson(deviceStatus)) @@ -316,6 +312,7 @@ public class SimpleTabFragment extends BaseFragment { @Override public void onSuccess(String response) throws Throwable { Log.d("response:",response); + iconView.switchState(true); XToastUtils.success("设备状态更新成功"); } @Override diff --git a/android/app/src/main/java/com/kerwin/wumei/utils/SettingUtils.java b/android/app/src/main/java/com/kerwin/wumei/utils/SettingUtils.java index adf4d010..2120fa4e 100644 --- a/android/app/src/main/java/com/kerwin/wumei/utils/SettingUtils.java +++ b/android/app/src/main/java/com/kerwin/wumei/utils/SettingUtils.java @@ -37,6 +37,7 @@ public final class SettingUtils { private static final String SERVERPORT="serve_port"; private static final String ISHTTPS="is_https"; private static final String APIP="ap_ip"; + private static final String WIFIPASSWORD="wifi_password"; /** * 是否是第一次启动 */ @@ -98,6 +99,22 @@ public final class SettingUtils { return MMKVUtils.getString(APIP,"192.168.4.1"); } + /** + * 设置wifi密码 + * @return + */ + public static void setWifiPassword(String wifiPassword){ + MMKVUtils.put(WIFIPASSWORD,wifiPassword); + } + + /** + * 获取wifi密码 + * @return + */ + public static String getWifiPassword(){ + return MMKVUtils.getString(WIFIPASSWORD,""); + } + /** * 获取服务端ip * @return diff --git a/android/app/src/main/res/layout/fragment_add_device.xml b/android/app/src/main/res/layout/fragment_add_device.xml index 29a0c3d0..5f32d887 100644 --- a/android/app/src/main/res/layout/fragment_add_device.xml +++ b/android/app/src/main/res/layout/fragment_add_device.xml @@ -34,30 +34,43 @@ android:animationCache="false" android:background="#FFFFFF"> - + + + + + + + + + + + + + + + + + + + + + + + + + + android:textSize="40dp" /> + android:textSize="28dp" /> @@ -141,7 +154,7 @@ app:met_errorMessage="WIFI密码无效" app:met_floatingLabel="normal" app:met_floatingLabelText="WIFI密码" - app:met_passWordButton="true" /> + app:met_passWordButton="false" /> @@ -159,14 +172,13 @@ android:textColor="@color/colorAccent" android:textSize="12sp" /> - + android:text="记住密码" /> diff --git a/android/app/src/main/res/layout/fragment_device_edit.xml b/android/app/src/main/res/layout/fragment_device_edit.xml index f07af32e..1f4af479 100644 --- a/android/app/src/main/res/layout/fragment_device_edit.xml +++ b/android/app/src/main/res/layout/fragment_device_edit.xml @@ -135,6 +135,18 @@ android:layout_marginStart="80dp" android:layout_marginTop="@dimen/config_margin_18dp" android:text="v1.0" /> + + @@ -213,7 +225,7 @@ android:layout_marginStart="110dp" android:layout_marginTop="40dp" android:layout_marginBottom="100dp" - android:text="保存" + android:text="保 存" app:sCornersRadius="5dp" app:sSolidColor="@color/colorAccent" /> diff --git a/android/app/src/main/res/layout/fragment_device_set.xml b/android/app/src/main/res/layout/fragment_device_set.xml index 6e44365d..0443ee5a 100644 --- a/android/app/src/main/res/layout/fragment_device_set.xml +++ b/android/app/src/main/res/layout/fragment_device_set.xml @@ -313,7 +313,7 @@ android:layout_height="35dp" android:layout_marginTop="40dp" android:layout_marginBottom="40dp" - android:text="取消" + android:text="取 消" app:sCornersRadius="5dp" app:sSolidColor="@color/app_color_theme_2" /> @@ -326,7 +326,7 @@ android:layout_marginEnd="15dp" android:layout_marginRight="15dp" android:layout_marginBottom="100dp" - android:text="应用" + android:text="应 用" app:sCornersRadius="5dp" app:sSolidColor="@color/colorAccent" /> diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 19626e44..381b5f36 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -93,7 +93,7 @@ 组播 确认 设备不支持 5G Wi-Fi, 请确认当前连接的 Wi-Fi 为 2.4G, 或者您可以尝试选择组播 - ⚠️警告️ + ⚠ 警告 在 Android M 及以上版本,如果您禁止授权位置权限,APP将无法获取 Wi-Fi 信息。 Wi-Fi 已断开或发生了变化 Esptouch 正在执行配网, 请稍等片刻…