From 5126bb1ec84ce28094ad390fbc56fec526ee9106 Mon Sep 17 00:00:00 2001 From: Lihongda <963140097@qq.com> Date: Mon, 11 Mar 2024 14:55:27 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=BB=E8=BE=91=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ifish/activity/BindTwoDeviceActivity.java | 1 + .../ifish/activity/newbind/AirKissUtil.java | 48 +++++++++++++++++-- .../ifish/activity/newbind/CheckWifiUtil.java | 7 +++ .../newbind/NewBindDeviceActivity.java | 27 +++++++++-- 4 files changed, 76 insertions(+), 7 deletions(-) diff --git a/iFish7/src/main/java/com/ifish/activity/BindTwoDeviceActivity.java b/iFish7/src/main/java/com/ifish/activity/BindTwoDeviceActivity.java index b7dec8c97..3abd4ae4d 100644 --- a/iFish7/src/main/java/com/ifish/activity/BindTwoDeviceActivity.java +++ b/iFish7/src/main/java/com/ifish/activity/BindTwoDeviceActivity.java @@ -185,6 +185,7 @@ public class BindTwoDeviceActivity extends BaseActivity { return; } } +// intent.setClass(BindTwoDeviceActivity.this, BindDeviceChoiceActivity.class); intent.setClass(BindTwoDeviceActivity.this, NewBindDeviceActivity.class); intent.putExtra("devicetype", "pet"); intent.putExtra("title", "连接宠物系统"); diff --git a/iFish7/src/main/java/com/ifish/activity/newbind/AirKissUtil.java b/iFish7/src/main/java/com/ifish/activity/newbind/AirKissUtil.java index 7d27a3116..0b80d8676 100644 --- a/iFish7/src/main/java/com/ifish/activity/newbind/AirKissUtil.java +++ b/iFish7/src/main/java/com/ifish/activity/newbind/AirKissUtil.java @@ -11,6 +11,7 @@ import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; +import com.ifish.activity.BindTankPetActivity; import com.ifish.activity.BlackListActivity; import com.ifish.activity.LoadingActivity; import com.ifish.activity.MainEightControlActivity; @@ -45,6 +46,7 @@ import com.ifish.utils.L; import com.ifish.utils.SPUtil; import com.ifish.utils.ToastUtil; import com.ifish.utils.WifiUtil; +import com.ifish.view.PetPopupChoice; import com.lidroid.xutils.util.LogUtils; import java.io.IOException; @@ -53,6 +55,7 @@ import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.util.Arrays; +import java.util.List; import rx.Observable; import rx.Observer; @@ -83,17 +86,21 @@ public class AirKissUtil { private String bssid = ""; private String isSsidHiddenStr = "YES"; + //当前需要连接的是什么设备 + private String devicetype; + private UDPReceiver udpReceiver = null; private DatagramSocket sendSocket = null; ProgressDialog mDialog = null; private static final int REPLY_BYTE_CONFIRM_TIMES = 3; - public void init(AppCompatActivity activity) { + public void init(AppCompatActivity activity, String devicetype) { wifiUtil = new WifiUtil(activity); sp = SPUtil.getInstance(activity); curActivity = activity; mDialog = new ProgressDialog(activity); + this.devicetype = devicetype; if (sendSocket != null) { sendSocket.close(); } @@ -283,10 +290,17 @@ public class AirKissUtil { 1, 6); device_mac = mac; - LogUtils.d("LHD 获取到的mac地址 = " + mac); + LogUtils.d("LHD 获取到的mac地址 = " + mac+" 当前设备类型 devicetype = "+devicetype); if (!TextUtils.isEmpty(device_mac)) { stopAirKiss(); - doPostBindDevice(); + //todo 区分是否是宠物笼和摄像头 + if (TextUtils.isEmpty(devicetype)){ + doPostBindDevice(); + } else if ("pet".equals(devicetype)){ + doPostBindPetDevice(); + }else { + doPostBindDevice(); + } break; } } @@ -352,6 +366,34 @@ public class AirKissUtil { } } + private void doPostBindPetDevice(){ + hm.queryStoreName(new HttpListener>>() { + @Override + public void success(final BaseBean> baseBean) { + curActivity.runOnUiThread(new Runnable() { + @Override + public void run() { + new PetPopupChoice(curActivity, new PetPopupChoice.OnChoiceListener() { + @Override + public void onChoice(String s) { + doPostBindPetDevice(s); + } + }, baseBean.data).showDialog(); + } + }); + } + + @Override + public void error(Exception e, String msg) { + ToastUtil.show(curActivity, msg); + } + + @Override + public void finish() { + + } + }, Commons.USER.getUserId()); + } /** * @param * @Description: 给宠物设备发送入网指令 diff --git a/iFish7/src/main/java/com/ifish/activity/newbind/CheckWifiUtil.java b/iFish7/src/main/java/com/ifish/activity/newbind/CheckWifiUtil.java index a5f185cfc..bcbb8e8d8 100644 --- a/iFish7/src/main/java/com/ifish/activity/newbind/CheckWifiUtil.java +++ b/iFish7/src/main/java/com/ifish/activity/newbind/CheckWifiUtil.java @@ -2,8 +2,10 @@ package com.ifish.activity.newbind; import static android.content.Context.WIFI_SERVICE; +import android.Manifest; import android.app.Dialog; import android.content.Intent; +import android.content.pm.PackageManager; import android.net.wifi.ScanResult; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; @@ -15,6 +17,7 @@ import android.widget.ProgressBar; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; +import androidx.core.app.ActivityCompat; import com.ifish.activity.HotSpotConnentDeviceActivity; import com.ifish.activity.HotSpotConnentDeviceCameraActivity; @@ -73,6 +76,10 @@ public class CheckWifiUtil { return false; } WifiManager wifiManager = (WifiManager) activity.getApplicationContext().getSystemService(WIFI_SERVICE); + if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { + ToastUtil.show(activity.getApplicationContext(), "缺少联网权限"); + return false; + } List scanResults = wifiManager.getScanResults(); // 是否是 2.4G boolean is24G = false; diff --git a/iFish7/src/main/java/com/ifish/activity/newbind/NewBindDeviceActivity.java b/iFish7/src/main/java/com/ifish/activity/newbind/NewBindDeviceActivity.java index e9f88f121..2b8820721 100644 --- a/iFish7/src/main/java/com/ifish/activity/newbind/NewBindDeviceActivity.java +++ b/iFish7/src/main/java/com/ifish/activity/newbind/NewBindDeviceActivity.java @@ -62,7 +62,7 @@ public class NewBindDeviceActivity extends AppCompatActivity { //----------------变量区--------------------// private ConnectType curConnectType;//当前选择的连接类型 APConnect,SmartConfig,AirKiss - + private boolean first = true;//首次进入 //当前需要连接的是什么设备 private String devicetype; @@ -81,8 +81,8 @@ public class NewBindDeviceActivity extends AppCompatActivity { initWifiName(); checkWifiUtil = new CheckWifiUtil(); airKissUtil = new AirKissUtil(); - airKissUtil.init(this); devicetype = getIntent().getStringExtra("devicetype"); + airKissUtil.init(this,devicetype); //默认AP联网 curConnectType = ConnectType.AirKiss; switchUIConnectType(curConnectType); @@ -207,6 +207,7 @@ public class NewBindDeviceActivity extends AppCompatActivity { */ public void switchUIConnectType(ConnectType connectType) { resetLayout(); + showToast(connectType); switch (connectType) { case SmartConfig: // 处理SmartConfig逻辑 @@ -223,11 +224,9 @@ public class NewBindDeviceActivity extends AppCompatActivity { tvTips.setText("1、插座仅支持2.4G的WiFi网络,不支持5G及双频合一的网络(需在路由器设置中分开)"); tvTips2.setText("2、先长按插座复位键13秒左右,松手后红灯绿灯同时熄灭,只有绿灯偶尔闪烁,再点下一步。"); tvTips3.setText("3、APP跳转到WLAN后,选择ifish-xxxx的网络,点击连接,密码是12345678,连好以后点击左上角返回箭头,耐心等待连接。"); - ToastUtil.show(this, "切换到AP联网"); break; case AirKiss: tvConnectType.setText("一键联网"); - ToastUtil.show(this, "一键联网"); tvClickButton.setText("确定"); tvTips.setText("1、插座仅支持2.4G的WiFi网络,不支持5G及双频合一的网络(需在路由器设置中分开)"); tvTips2.setText("2、先长按插座复位键3秒,松手后红灯绿灯同时闪烁以后,再点确定按钮。"); @@ -237,6 +236,25 @@ public class NewBindDeviceActivity extends AppCompatActivity { } } + private void showToast(ConnectType connectType){ + if (first){ + first = false; + LogUtils.d("LHD 首次进入的时候不显示toast"); + return; + } + switch (connectType) { + case SmartConfig: + ToastUtil.show(this, "切换到快捷联网"); + break; + case APConnect: + ToastUtil.show(this, "切换到AP联网"); + break; + case AirKiss: + ToastUtil.show(this, "切换到一键联网"); + break; + } + } + /** * 根据连接类型去连接设备 */ @@ -255,6 +273,7 @@ public class NewBindDeviceActivity extends AppCompatActivity { // 处理SmartConfig逻辑 Intent intent = new Intent(); String devicetype = getIntent().getStringExtra("devicetype"); + LogUtils.d("LHD 快捷联网 smartConfig devicetype = "+devicetype); if ("camera".equals(devicetype)) { intent.setClass(NewBindDeviceActivity.this, BindCameraActivity.class); } else if ("pet".equals(devicetype)) {