在uniapp小程序中获取周边WiFi列表,并且显示已连接WiFi

 详细代码如下:

<script>
	export default {
		data() {
			return {
				wifiList: [], // 存储WiFi列表
				connectedWifiSSID: {}
			};
		},

		onLoad() {
			this.getConnectedWifi()
			this.getWifiList();
		},


		methods: {
			getWifiList() {
				uni.getWifiList({
					success: res => {
						console.log('res', res);
						uni.onGetWifiList((res) => {
							this.wifiList = res.wifiList;
							console.log('this.wifiList', this.wifiList);

							this.wifiList.sort(function(a, b) {
								if (a.SSID === connectedWifi.SSID) {
									return -1;
								} else if (b.SSID === connectedWifi.SSID) {
									return 1;
								} else {
									return 0;
								}
							})

							// 过滤同名WiFi信号
							let filterList = this.wifiList.reduce(function(result, item) {
								let index = result.findIndex(function(v) {
									return v.SSID == item.SSID;
								});
								if (index < 0) {
									result.push(item);
								} else if (item.signalStrength > result[index]
									.signalStrength) {
									result[index] = item;
								}
								return result;
							}, []);
							console.log("filterList", filterList);
							this.wifiList = filterList;
						});
					},
					fail: err => {
						console.error('获取WiFi列表失败:', err);
					}
				});
			},


			// 点击连接某个 Wi-Fi
			connectWifi(wifi) {
				console.log('选中的WiFi:', wifi);
				uni.connectWifi({
					SSID: wifi.SSID,
					password: 'your_password',
					success: res => {
						console.log('Wi-Fi连接成功:', res);
					},
					fail: err => {
						console.error('Wi-Fi连接失败:', err);
					}
				});
			},


			//获取当前连接的wifi
			getConnectedWifi() {
				uni.getConnectedWifi({
					success: res => {
						connectedWifi = res.wifi; //当前连接的wifi的信息
						console.log(connectedWifi, "connectedWifi")
						this.connectedWifiSSID = res.wifi.SSID;
						console.log('已连接Wi-Fi:', res);
						console.log('已连接Wi-Fi的SSID:', this.connectedWifiSSID);
					},
					fail: err => {
						console.error('获取已连接的Wi-Fi信息失败:', err);
					}
				});
			}


		}
	};
</script>

 

 使用Array.prototype.sort()方法对this.wifiList进行排序。排序的规则是,如果Wi-Fi的SSID与当前已连接的Wi-Fi的SSID相同,则将其排在前面;如果Wi-Fi的SSID与当前已连接的Wi-Fi的SSID不同,则按原始顺序排序。

Array.prototype.sort()方法接受一个比较函数作为参数,该函数定义了排序的规则。比较函数有两个参数ab,分别代表数组中的两个元素。如果返回值小于0,表示a应该排在b前面;如果返回值大于0,表示b应该排在a前面;如果返回值等于0,表示ab的顺序不变。

							this.wifiList.sort(function(a, b) {
								if (a.SSID === connectedWifi.SSID) {
									return -1;
								} else if (b.SSID === connectedWifi.SSID) {
									return 1;
								} else {
									return 0;
								}
							})

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值