文章目录


前言

关键词:HBuilder uniapp wifi RSSI SSID

最近做项目有一个需求,要求用HBuilder uniapp做一个app显示手机可接收的WiFi名称和对应的场强(信号强度),百度找了一圈,只找到了关于WiFi名称的一些资料,于是根据一篇文章修改了一下(附在文末),最终很nice的解决了我的问题。有一定的参考价值,感兴趣的小伙伴们可以参考一下。(9.6号)

一、代码及注释

index.vue 代码如下:
 

<template>
    <view>
        home---{{title}}
        <button type="default" @click="getWifiInfo">获取wifi信息</button>
    </view>
</template>

<script>
    // const gbWiFi = uni.requireNativePlugin('Googbuild-WIFI');
    const FvvUniWifiHelper = uni.requireNativePlugin("Fvv-UniWifiHelper");
    export default {
        data() {
            return {
                title: "",
                wifiArray:[],
            }
        },
        onLoad() {
            
        },
    
        methods: {
            getWifiInfo () {
                //在手机上显示
                uni.showModal({
                    title: "alert 弹窗标题",
                    //content: "弹窗内容,告知当前状态、信息和解决方法,描述文字尽量控制在三行内",
                    content: this.getWiFiIP(),
                    showCancel: false,
                    confirmText: "确定",
                    confirmColor: "#00ffff",
                    success(res) {
                        if (res.confirm) {
                            console.log('确认')                                   
                        }
                    }
                })    
            },
            // 获取WiFi信息
            getWiFiIP() {
                // MainActivity
                var MainActivity = plus.android.runtimeMainActivity()
                // Context
                var Context = plus.android.importClass('android.content.Context')
                // WiFi 相关包  
                plus.android.importClass("android.net.wifi.WifiManager")
                plus.android.importClass("android.net.wifi.WifiInfo")
                plus.android.importClass("android.net.wifi.ScanResult")
                plus.android.importClass("java.util.ArrayList")
                // WiFi 管理实例
                var wifiManager = MainActivity.getSystemService(Context.WIFI_SERVICE)
                // 开启 WiFi
                // wifiManager.setWifiEnabled(true)
                // 当前连接 WiFi 信息 
                var wifiInfo = wifiManager.getConnectionInfo()
                
                console.log(wifiInfo.toString())//打印当前连接 WiFi 的所有信息
                
                var wifirssi = wifiInfo.getRssi()// 获取当前链接 WiFi 的信号强度
                console.log(wifirssi)//打印 WiFi 的信号强度
                
                var ssid = wifiInfo.getSSID()// 获取当前 WIFI 连接的 SSID (WIFI 名称)  
                ssid = ssid.replace(/(^\"*)|(\"*$)/g, "")  
                console.log(ssid)//打印 WIFI 名称
                console.log(ssid+","+"信号强度:"+wifirssi)
                
                //注意 getConnectionInfo() 与 getScanResults() 的区别
                var resultList = wifiManager.getScanResults(),//扫描得到的wifi信号集合
                    len = resultList.size() 
                var wifiScanResults = '' //定义wifiScanResults
                console.log(resultList)
                
                //注:获取resultList中的场强信息用的是 level 而不是 RSSI
                
                for(var i = 0; i < len; i++) {
                  console.log(resultList.get(i).plusGetAttribute('SSID') +" 信号:"+resultList.get(i).plusGetAttribute('level'))
                  //将每一个ssid与rssi 都添加到wifiArray数组中,用于绑定显示,根据个人业务取舍 wifiArray=[{name:WiFi的SSID}]
                  let oneWiFi={
                      name:resultList.get(i).plusGetAttribute('SSID'),
                         signal:resultList.get(i).plusGetAttribute('level')
                  }
                  this.wifiArray.push(oneWiFi);
                  wifiScanResults = wifiScanResults + ',' + this.wifiArray[i].name + ' 信号:'+ this.wifiArray[i].signal + "\n";//打印内容
                }
                return wifiScanResults//返回
                
                
            }
                
        },
        
    }
</script>

<style>

</style>


总结

(有不懂的可以私信我,我会在文章中进行补充)

以上就是本文的主要内容,有错误请各位大佬指正。

 附参考文章:uni-app获取手机当前连接的WIFI名称_yjl23332的博客-CSDN博客_uniapp获取wifi名称

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐