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.Window;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
@ -35,6 +36,8 @@ public class BottomChoiceDialog extends DialogFragment implements View.OnClickLi
return dialog;
}
public static ConnectType curType;
public static BottomChoiceDialog newInstance() {
if (bottomChoiceDialog == null) {
bottomChoiceDialog = new BottomChoiceDialog();
@ -46,6 +49,9 @@ public class BottomChoiceDialog extends DialogFragment implements View.OnClickLi
private TextView tvAP;
private TextView tvAirKiss;
private TextView tvCancel;
private LinearLayout lineAirKiss;
private LinearLayout lineSmartConfig;
private LinearLayout lineAP;
@Nullable
@Override
@ -56,11 +62,16 @@ public class BottomChoiceDialog extends DialogFragment implements View.OnClickLi
tvAP = (TextView) view.findViewById(R.id.tv_AP);
tvAirKiss = (TextView) view.findViewById(R.id.tv_airkiss);
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);
tvAP.setOnClickListener(this);
tvAirKiss.setOnClickListener(this);
tvCancel.setOnClickListener(this);
switchChooseUI(curType);
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 {
void smartConfigConnect();//智能连接

View File

@ -11,6 +11,7 @@ import android.text.TextUtils;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
@ -183,7 +184,7 @@ public class CheckWifiUtil {
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);
if (TextUtils.isEmpty(wifissid)) {
wifissid = "";
@ -194,6 +195,7 @@ public class CheckWifiUtil {
if ("camera".equals(devicetype)) {
if (!wifissid.startsWith("GW_AP_")) {
ToastUtil.show(activity.getApplicationContext(), "请先连接摄像头设备热点");
resetAPLayout(progressLoading,tvApConnectDevice);
return;
}
//todo 摄像头
@ -201,6 +203,7 @@ public class CheckWifiUtil {
} else if ("pet".equals(devicetype)) {
if (!wifissid.startsWith("ifish-")) {
ToastUtil.show(activity.getApplicationContext(), "请先连接宠物笼设备热点");
resetAPLayout(progressLoading,tvApConnectDevice);
return;
}
//todo 宠物
@ -208,6 +211,7 @@ public class CheckWifiUtil {
} else {
if (!wifissid.startsWith("ifish-")) {
ToastUtil.show(activity.getApplicationContext(), "请先连接设备热点");
resetAPLayout(progressLoading,tvApConnectDevice);
return;
}
//todo 设备
@ -216,6 +220,7 @@ public class CheckWifiUtil {
if (wifissid.equals(wifiName)) {
ToastUtil.show(activity.getApplicationContext(), "WiFi名称不能和热点名称一致");
resetAPLayout(progressLoading,tvApConnectDevice);
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.basebean.ConnectMessageEvent;
import com.ifish.utils.AnimationUtil;
import com.ifish.utils.ClickUtil;
import com.ifish.utils.KVUtil;
import com.ifish.utils.ToastUtil;
import com.ifish.utils.WifiAdmin;
@ -57,9 +58,6 @@ public class NewBindDeviceActivity extends AppCompatActivity {
private TextView tvApConnectDevice;
//选择连接类型的底部弹窗
private BottomChoiceDialog bottomChoiceDialog;
//----------------变量区--------------------//
private ConnectType curConnectType;//当前选择的连接类型 APConnect,SmartConfig,AirKiss
@ -70,6 +68,7 @@ public class NewBindDeviceActivity extends AppCompatActivity {
private CheckWifiUtil checkWifiUtil;
private AirKissUtil airKissUtil;
private String bssid = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -113,12 +112,16 @@ public class NewBindDeviceActivity extends AppCompatActivity {
private void initTitle() {
TextView title_text = (TextView) findViewById(R.id.title_text);
title_text.setText("连接设备");
findViewById(R.id.title_img).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
private void initView() {
bottomChoiceDialog = BottomChoiceDialog.newInstance();
tvConnectType = (TextView) findViewById(R.id.tv_connect_type);
frameAp = (FrameLayout) findViewById(R.id.frame_ap);
@ -139,31 +142,36 @@ public class NewBindDeviceActivity extends AppCompatActivity {
tvOtherConnect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (bottomChoiceDialog != null && !bottomChoiceDialog.isAdded()) {
bottomChoiceDialog.show(getSupportFragmentManager(), "选择连接类型");
if (ClickUtil.isFastDoubleClick()) {
LogUtils.d("LHD 防止快速点击");
return;
}
}
});
bottomChoiceDialog.setOnChooseClickListener(new BottomChoiceDialog.OnChooseClickListener() {
@Override
public void smartConfigConnect() {
//智能连接逻辑
curConnectType = ConnectType.SmartConfig;
switchUIConnectType(curConnectType);
}
//选择连接类型的底部弹窗
BottomChoiceDialog.curType = curConnectType;
BottomChoiceDialog bottomChoiceDialog = BottomChoiceDialog.newInstance();
bottomChoiceDialog.show(getSupportFragmentManager(), "选择连接类型");
bottomChoiceDialog.setOnChooseClickListener(new BottomChoiceDialog.OnChooseClickListener() {
@Override
public void smartConfigConnect() {
//智能连接逻辑
curConnectType = ConnectType.SmartConfig;
switchUIConnectType(curConnectType);
}
@Override
public void APConnect() {
//AP连接逻辑
curConnectType = ConnectType.APConnect;
switchUIConnectType(curConnectType);
}
@Override
public void APConnect() {
//AP连接逻辑
curConnectType = ConnectType.APConnect;
switchUIConnectType(curConnectType);
}
@Override
public void AirKissConnect() {
//airKiss逻辑
curConnectType = ConnectType.AirKiss;
switchUIConnectType(curConnectType);
@Override
public void AirKissConnect() {
//airKiss逻辑
curConnectType = ConnectType.AirKiss;
switchUIConnectType(curConnectType);
}
});
}
});
tvClickButton.setOnClickListener(new View.OnClickListener() {
@ -233,7 +241,7 @@ public class NewBindDeviceActivity extends AppCompatActivity {
switch (connectType) {
case SmartConfig:
// 处理SmartConfig逻辑
tvConnectType.setText("智能连网");
tvConnectType.setText("快捷连网");
tvClickButton.setText("确定");
tvTips.setText("1、插座仅支持2.4G的WiFi网络不支持5G及双频合一的网络需在路由器设置中分开\n2、先长按插座复位键3秒松手后红灯绿灯同时闪烁再点确定按钮。\n3、如多次尝试一键连网都不成功可切换其他连网方式每次重新连接时插座需断一次电然后重新复位连接。");
break;
@ -245,8 +253,8 @@ public class NewBindDeviceActivity extends AppCompatActivity {
ToastUtil.show(this, "切换到AP连网");
break;
case AirKiss:
tvConnectType.setText("AirKiss连网");
ToastUtil.show(this, "AirKiss连网");
tvConnectType.setText("一键连网");
ToastUtil.show(this, "一键连网");
tvClickButton.setText("确定");
tvTips.setText("1、插座仅支持2.4G的WiFi网络不支持5G及双频合一的网络需在路由器设置中分开\n2、先长按插座复位键3秒松手后红灯绿灯同时闪烁再点确定按钮。\n3、如多次尝试一键连网都不成功可切换其他连网方式每次重新连接时插座需断一次电然后重新复位连接。");
// 处理AirKiss逻辑
@ -284,7 +292,7 @@ public class NewBindDeviceActivity extends AppCompatActivity {
intent.putExtra("title", "连接热流器");
}
//新页面跳转
intent.putExtra("wifiPassword",pwd);
intent.putExtra("wifiPassword", pwd);
ToastUtil.show(NewBindDeviceActivity.this, "开始SmartConfig连网...");
startActivity(intent);
AnimationUtil.startAnimation(NewBindDeviceActivity.this);
@ -297,7 +305,7 @@ public class NewBindDeviceActivity extends AppCompatActivity {
case AirKiss:
// 处理AirKiss逻辑
ToastUtil.show(NewBindDeviceActivity.this, "开始AirKiss连网...");
airKissUtil.connectDeviceByAirKiss(this,ssid,bssid,pwd);
airKissUtil.connectDeviceByAirKiss(this, ssid, bssid, pwd);
break;
}
}
@ -321,7 +329,7 @@ public class NewBindDeviceActivity extends AppCompatActivity {
if (isJump) {
String wifiName = tvWifiName.getText().toString();
String wifiPwd = tvWifiPwd.getText().toString();
checkWifiUtil.checkCurAP(this, wifiName, wifiPwd, devicetype);
checkWifiUtil.checkCurAP(this, wifiName, wifiPwd, devicetype,progressLoading,tvApConnectDevice);
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:orientation="vertical">
<TextView
android:id="@+id/tv_airkiss"
<LinearLayout
android:id="@+id/line_airKiss"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:text="一键联网"
android:textColor="#3E3A39"
android:textSize="16sp" />
android:layout_height="wrap_content"
android:orientation="vertical">
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="#efedee" />
<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" />
<TextView
android:id="@+id/tv_airkiss"
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" />
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="#efedee" />
</LinearLayout>
<TextView
android:id="@+id/tv_AP"
<LinearLayout
android:id="@+id/line_smartConfig"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:text="AP联网"
android:textColor="#3E3A39"
android:textSize="16sp" />
android:layout_height="wrap_content"
android:orientation="vertical">
<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_height="0.5dp"
android:background="#efedee" />
android:layout_height="wrap_content"
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
android:id="@+id/tv_cancel"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginBottom="20dp"
android:gravity="center"
android:text="取消"
android:layout_marginBottom="20dp"
android:textColor="#3E3A39"
android:textSize="16sp" />