This commit is contained in:
Lihongda 2024-03-08 23:16:48 +08:00
parent 1ed84b8b79
commit f1f144ec32
5 changed files with 165 additions and 68 deletions

View File

@ -8,6 +8,7 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.Window; import android.view.Window;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@ -35,6 +36,8 @@ public class BottomChoiceDialog extends DialogFragment implements View.OnClickLi
return dialog; return dialog;
} }
public static ConnectType curType;
public static BottomChoiceDialog newInstance() { public static BottomChoiceDialog newInstance() {
if (bottomChoiceDialog == null) { if (bottomChoiceDialog == null) {
bottomChoiceDialog = new BottomChoiceDialog(); bottomChoiceDialog = new BottomChoiceDialog();
@ -46,6 +49,9 @@ public class BottomChoiceDialog extends DialogFragment implements View.OnClickLi
private TextView tvAP; private TextView tvAP;
private TextView tvAirKiss; private TextView tvAirKiss;
private TextView tvCancel; private TextView tvCancel;
private LinearLayout lineAirKiss;
private LinearLayout lineSmartConfig;
private LinearLayout lineAP;
@Nullable @Nullable
@Override @Override
@ -56,11 +62,16 @@ public class BottomChoiceDialog extends DialogFragment implements View.OnClickLi
tvAP = (TextView) view.findViewById(R.id.tv_AP); tvAP = (TextView) view.findViewById(R.id.tv_AP);
tvAirKiss = (TextView) view.findViewById(R.id.tv_airkiss); tvAirKiss = (TextView) view.findViewById(R.id.tv_airkiss);
tvCancel = (TextView) view.findViewById(R.id.tv_cancel); tvCancel = (TextView) view.findViewById(R.id.tv_cancel);
lineAirKiss = (LinearLayout) view.findViewById(R.id.line_airKiss);
lineSmartConfig = (LinearLayout) view.findViewById(R.id.line_smartConfig);
lineAP = (LinearLayout) view.findViewById(R.id.line_AP);
tvSmartConfig.setOnClickListener(this); tvSmartConfig.setOnClickListener(this);
tvAP.setOnClickListener(this); tvAP.setOnClickListener(this);
tvAirKiss.setOnClickListener(this); tvAirKiss.setOnClickListener(this);
tvCancel.setOnClickListener(this); tvCancel.setOnClickListener(this);
switchChooseUI(curType);
return view; return view;
} }
@ -123,6 +134,27 @@ public class BottomChoiceDialog extends DialogFragment implements View.OnClickLi
} }
} }
public void switchChooseUI(ConnectType curConnectType) {
lineAirKiss.setVisibility(View.VISIBLE);
lineAP.setVisibility(View.VISIBLE);
lineSmartConfig.setVisibility(View.VISIBLE);
switch (curConnectType) {
case SmartConfig:
// 处理SmartConfig逻辑
lineSmartConfig.setVisibility(View.GONE);
break;
case APConnect:
// 处理APConnect逻辑
lineAP.setVisibility(View.GONE);
break;
case AirKiss:
lineAirKiss.setVisibility(View.GONE);
// 处理AirKiss逻辑
break;
}
}
public interface OnChooseClickListener { public interface OnChooseClickListener {
void smartConfigConnect();//智能连接 void smartConfigConnect();//智能连接

View File

@ -11,6 +11,7 @@ import android.text.TextUtils;
import android.view.View; import android.view.View;
import android.view.Window; import android.view.Window;
import android.widget.Button; import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView; import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
@ -183,7 +184,7 @@ public class CheckWifiUtil {
return wifissid; return wifissid;
} }
public void checkCurAP(AppCompatActivity activity, String wifiName, String wifiPwd, String devicetype) { public void checkCurAP(AppCompatActivity activity, String wifiName, String wifiPwd, String devicetype, ProgressBar progressLoading, TextView tvApConnectDevice) {
String wifissid = getCurWifiSsid(activity); String wifissid = getCurWifiSsid(activity);
if (TextUtils.isEmpty(wifissid)) { if (TextUtils.isEmpty(wifissid)) {
wifissid = ""; wifissid = "";
@ -194,6 +195,7 @@ public class CheckWifiUtil {
if ("camera".equals(devicetype)) { if ("camera".equals(devicetype)) {
if (!wifissid.startsWith("GW_AP_")) { if (!wifissid.startsWith("GW_AP_")) {
ToastUtil.show(activity.getApplicationContext(), "请先连接摄像头设备热点"); ToastUtil.show(activity.getApplicationContext(), "请先连接摄像头设备热点");
resetAPLayout(progressLoading,tvApConnectDevice);
return; return;
} }
//todo 摄像头 //todo 摄像头
@ -201,6 +203,7 @@ public class CheckWifiUtil {
} else if ("pet".equals(devicetype)) { } else if ("pet".equals(devicetype)) {
if (!wifissid.startsWith("ifish-")) { if (!wifissid.startsWith("ifish-")) {
ToastUtil.show(activity.getApplicationContext(), "请先连接宠物笼设备热点"); ToastUtil.show(activity.getApplicationContext(), "请先连接宠物笼设备热点");
resetAPLayout(progressLoading,tvApConnectDevice);
return; return;
} }
//todo 宠物 //todo 宠物
@ -208,6 +211,7 @@ public class CheckWifiUtil {
} else { } else {
if (!wifissid.startsWith("ifish-")) { if (!wifissid.startsWith("ifish-")) {
ToastUtil.show(activity.getApplicationContext(), "请先连接设备热点"); ToastUtil.show(activity.getApplicationContext(), "请先连接设备热点");
resetAPLayout(progressLoading,tvApConnectDevice);
return; return;
} }
//todo 设备 //todo 设备
@ -216,6 +220,7 @@ public class CheckWifiUtil {
if (wifissid.equals(wifiName)) { if (wifissid.equals(wifiName)) {
ToastUtil.show(activity.getApplicationContext(), "WiFi名称不能和热点名称一致"); ToastUtil.show(activity.getApplicationContext(), "WiFi名称不能和热点名称一致");
resetAPLayout(progressLoading,tvApConnectDevice);
return; return;
} }
@ -227,4 +232,9 @@ public class CheckWifiUtil {
} }
private void resetAPLayout(ProgressBar progressLoading, TextView tvApConnectDevice) {
progressLoading.setVisibility(View.GONE);
tvApConnectDevice.setVisibility(View.VISIBLE);
}
} }

View File

@ -27,6 +27,7 @@ import com.ifish.activity.BindTankPetActivity;
import com.ifish.activity.R; import com.ifish.activity.R;
import com.ifish.basebean.ConnectMessageEvent; import com.ifish.basebean.ConnectMessageEvent;
import com.ifish.utils.AnimationUtil; import com.ifish.utils.AnimationUtil;
import com.ifish.utils.ClickUtil;
import com.ifish.utils.KVUtil; import com.ifish.utils.KVUtil;
import com.ifish.utils.ToastUtil; import com.ifish.utils.ToastUtil;
import com.ifish.utils.WifiAdmin; import com.ifish.utils.WifiAdmin;
@ -57,9 +58,6 @@ public class NewBindDeviceActivity extends AppCompatActivity {
private TextView tvApConnectDevice; private TextView tvApConnectDevice;
//选择连接类型的底部弹窗
private BottomChoiceDialog bottomChoiceDialog;
//----------------变量区--------------------// //----------------变量区--------------------//
private ConnectType curConnectType;//当前选择的连接类型 APConnect,SmartConfig,AirKiss private ConnectType curConnectType;//当前选择的连接类型 APConnect,SmartConfig,AirKiss
@ -70,6 +68,7 @@ public class NewBindDeviceActivity extends AppCompatActivity {
private CheckWifiUtil checkWifiUtil; private CheckWifiUtil checkWifiUtil;
private AirKissUtil airKissUtil; private AirKissUtil airKissUtil;
private String bssid = ""; private String bssid = "";
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -113,12 +112,16 @@ public class NewBindDeviceActivity extends AppCompatActivity {
private void initTitle() { private void initTitle() {
TextView title_text = (TextView) findViewById(R.id.title_text); TextView title_text = (TextView) findViewById(R.id.title_text);
title_text.setText("连接设备"); title_text.setText("连接设备");
findViewById(R.id.title_img).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
} }
private void initView() { private void initView() {
bottomChoiceDialog = BottomChoiceDialog.newInstance();
tvConnectType = (TextView) findViewById(R.id.tv_connect_type); tvConnectType = (TextView) findViewById(R.id.tv_connect_type);
frameAp = (FrameLayout) findViewById(R.id.frame_ap); frameAp = (FrameLayout) findViewById(R.id.frame_ap);
@ -139,31 +142,36 @@ public class NewBindDeviceActivity extends AppCompatActivity {
tvOtherConnect.setOnClickListener(new View.OnClickListener() { tvOtherConnect.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (bottomChoiceDialog != null && !bottomChoiceDialog.isAdded()) { if (ClickUtil.isFastDoubleClick()) {
bottomChoiceDialog.show(getSupportFragmentManager(), "选择连接类型"); LogUtils.d("LHD 防止快速点击");
return;
} }
} //选择连接类型的底部弹窗
}); BottomChoiceDialog.curType = curConnectType;
bottomChoiceDialog.setOnChooseClickListener(new BottomChoiceDialog.OnChooseClickListener() { BottomChoiceDialog bottomChoiceDialog = BottomChoiceDialog.newInstance();
@Override bottomChoiceDialog.show(getSupportFragmentManager(), "选择连接类型");
public void smartConfigConnect() { bottomChoiceDialog.setOnChooseClickListener(new BottomChoiceDialog.OnChooseClickListener() {
//智能连接逻辑 @Override
curConnectType = ConnectType.SmartConfig; public void smartConfigConnect() {
switchUIConnectType(curConnectType); //智能连接逻辑
} curConnectType = ConnectType.SmartConfig;
switchUIConnectType(curConnectType);
}
@Override @Override
public void APConnect() { public void APConnect() {
//AP连接逻辑 //AP连接逻辑
curConnectType = ConnectType.APConnect; curConnectType = ConnectType.APConnect;
switchUIConnectType(curConnectType); switchUIConnectType(curConnectType);
} }
@Override @Override
public void AirKissConnect() { public void AirKissConnect() {
//airKiss逻辑 //airKiss逻辑
curConnectType = ConnectType.AirKiss; curConnectType = ConnectType.AirKiss;
switchUIConnectType(curConnectType); switchUIConnectType(curConnectType);
}
});
} }
}); });
tvClickButton.setOnClickListener(new View.OnClickListener() { tvClickButton.setOnClickListener(new View.OnClickListener() {
@ -233,7 +241,7 @@ public class NewBindDeviceActivity extends AppCompatActivity {
switch (connectType) { switch (connectType) {
case SmartConfig: case SmartConfig:
// 处理SmartConfig逻辑 // 处理SmartConfig逻辑
tvConnectType.setText("智能连网"); tvConnectType.setText("快捷连网");
tvClickButton.setText("确定"); tvClickButton.setText("确定");
tvTips.setText("1、插座仅支持2.4G的WiFi网络不支持5G及双频合一的网络需在路由器设置中分开\n2、先长按插座复位键3秒松手后红灯绿灯同时闪烁再点确定按钮。\n3、如多次尝试一键连网都不成功可切换其他连网方式每次重新连接时插座需断一次电然后重新复位连接。"); tvTips.setText("1、插座仅支持2.4G的WiFi网络不支持5G及双频合一的网络需在路由器设置中分开\n2、先长按插座复位键3秒松手后红灯绿灯同时闪烁再点确定按钮。\n3、如多次尝试一键连网都不成功可切换其他连网方式每次重新连接时插座需断一次电然后重新复位连接。");
break; break;
@ -245,8 +253,8 @@ public class NewBindDeviceActivity extends AppCompatActivity {
ToastUtil.show(this, "切换到AP连网"); ToastUtil.show(this, "切换到AP连网");
break; break;
case AirKiss: case AirKiss:
tvConnectType.setText("AirKiss连网"); tvConnectType.setText("一键连网");
ToastUtil.show(this, "AirKiss连网"); ToastUtil.show(this, "一键连网");
tvClickButton.setText("确定"); tvClickButton.setText("确定");
tvTips.setText("1、插座仅支持2.4G的WiFi网络不支持5G及双频合一的网络需在路由器设置中分开\n2、先长按插座复位键3秒松手后红灯绿灯同时闪烁再点确定按钮。\n3、如多次尝试一键连网都不成功可切换其他连网方式每次重新连接时插座需断一次电然后重新复位连接。"); tvTips.setText("1、插座仅支持2.4G的WiFi网络不支持5G及双频合一的网络需在路由器设置中分开\n2、先长按插座复位键3秒松手后红灯绿灯同时闪烁再点确定按钮。\n3、如多次尝试一键连网都不成功可切换其他连网方式每次重新连接时插座需断一次电然后重新复位连接。");
// 处理AirKiss逻辑 // 处理AirKiss逻辑
@ -284,7 +292,7 @@ public class NewBindDeviceActivity extends AppCompatActivity {
intent.putExtra("title", "连接热流器"); intent.putExtra("title", "连接热流器");
} }
//新页面跳转 //新页面跳转
intent.putExtra("wifiPassword",pwd); intent.putExtra("wifiPassword", pwd);
ToastUtil.show(NewBindDeviceActivity.this, "开始SmartConfig连网..."); ToastUtil.show(NewBindDeviceActivity.this, "开始SmartConfig连网...");
startActivity(intent); startActivity(intent);
AnimationUtil.startAnimation(NewBindDeviceActivity.this); AnimationUtil.startAnimation(NewBindDeviceActivity.this);
@ -297,7 +305,7 @@ public class NewBindDeviceActivity extends AppCompatActivity {
case AirKiss: case AirKiss:
// 处理AirKiss逻辑 // 处理AirKiss逻辑
ToastUtil.show(NewBindDeviceActivity.this, "开始AirKiss连网..."); ToastUtil.show(NewBindDeviceActivity.this, "开始AirKiss连网...");
airKissUtil.connectDeviceByAirKiss(this,ssid,bssid,pwd); airKissUtil.connectDeviceByAirKiss(this, ssid, bssid, pwd);
break; break;
} }
} }
@ -321,7 +329,7 @@ public class NewBindDeviceActivity extends AppCompatActivity {
if (isJump) { if (isJump) {
String wifiName = tvWifiName.getText().toString(); String wifiName = tvWifiName.getText().toString();
String wifiPwd = tvWifiPwd.getText().toString(); String wifiPwd = tvWifiPwd.getText().toString();
checkWifiUtil.checkCurAP(this, wifiName, wifiPwd, devicetype); checkWifiUtil.checkCurAP(this, wifiName, wifiPwd, devicetype,progressLoading,tvApConnectDevice);
isJump = false; isJump = false;
} }
} }

View File

@ -0,0 +1,24 @@
package com.ifish.utils;
import android.view.View;
public class ClickUtil {
private static long lastClickTime;
public static boolean isFastDoubleClick() {
return isFastDoubleClick(300);
}
public static boolean isFastDoubleClick(long interval) {
long time = System.currentTimeMillis();
long timeD = time - lastClickTime;
if (0 < timeD && timeD < interval) {
lastClickTime = time;
return true;
}
lastClickTime = time;
return false;
}
}

View File

@ -5,54 +5,77 @@
android:background="@drawable/white_radius10" android:background="@drawable/white_radius10"
android:orientation="vertical"> android:orientation="vertical">
<TextView <LinearLayout
android:id="@+id/tv_airkiss" android:id="@+id/line_airKiss"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="50dp" android:layout_height="wrap_content"
android:gravity="center" android:orientation="vertical">
android:text="一键联网"
android:textColor="#3E3A39"
android:textSize="16sp" />
<View <TextView
android:layout_width="match_parent" android:id="@+id/tv_airkiss"
android:layout_height="0.5dp" android:layout_width="match_parent"
android:background="#efedee" /> android:layout_height="50dp"
<TextView android:gravity="center"
android:id="@+id/tv_smartConfig" android:text="一键联网"
android:layout_width="match_parent" android:textColor="#3E3A39"
android:layout_height="50dp" android:textSize="16sp" />
android:gravity="center"
android:text="快捷联网"
android:textColor="#3E3A39"
android:textSize="16sp" />
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0.5dp" android:layout_height="0.5dp"
android:background="#efedee" /> android:background="#efedee" />
</LinearLayout>
<TextView <LinearLayout
android:id="@+id/tv_AP" android:id="@+id/line_smartConfig"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="50dp" android:layout_height="wrap_content"
android:gravity="center" android:orientation="vertical">
android:text="AP联网"
android:textColor="#3E3A39"
android:textSize="16sp" />
<View <TextView
android:id="@+id/tv_smartConfig"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:text="快捷联网"
android:textColor="#3E3A39"
android:textSize="16sp" />
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="#efedee" />
</LinearLayout>
<LinearLayout
android:id="@+id/line_AP"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0.5dp" android:layout_height="wrap_content"
android:background="#efedee" /> android:orientation="vertical">
<TextView
android:id="@+id/tv_AP"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:text="AP联网"
android:textColor="#3E3A39"
android:textSize="16sp" />
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="#efedee" />
</LinearLayout>
<TextView <TextView
android:id="@+id/tv_cancel" android:id="@+id/tv_cancel"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="50dp" android:layout_height="50dp"
android:layout_marginBottom="20dp"
android:gravity="center" android:gravity="center"
android:text="取消" android:text="取消"
android:layout_marginBottom="20dp"
android:textColor="#3E3A39" android:textColor="#3E3A39"
android:textSize="16sp" /> android:textSize="16sp" />