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 正在执行配网, 请稍等片刻…