关于wifiManager.getConnectionInfo()与wifiManager.getScanResults()的使用问题

先解释一下:
wifiManager.getConnectionInfo()是用来获取当前已连接上的wifi的信息。
wifiManager.getScanResults()是用来获得手机扫描到的所有wifi的信息。

小弟之前在一个线程里面放置wifiManager.getConnectionInfo()实时获取当前连接的wifi信号强度的信息,用一个textview来实时显示信号强度的变化,这个是实现了的,随着我原理或者靠近路由器,textview上的信号强度是会变化的。

可是后来我试了试把wifiManager.getScanResults()方在线程里面实时显示当前扫描出来的所有无线信号的信号强度变化,可是发现textview中信号强度没有任何变化,只有当我把程序退出再进入后,显示的信号强度就发生了变化,意思就是使用wifiManager.getScanResults()时,屏幕不能实时更新,不知道这是为什么。

private void obtainWifiInfo() {

//显示当前连接的wifi信息(可以实时更新)
WifiInfo info;
info= wifiManager.getConnectionInfo();
if (info.getBSSID() != null) {  
     // 链接信号强度
double strength = WifiManager.calculateSignalLevel(info.getRssi(), 1001);  
textview1.setText("强度:"+strength+" ");  
    // Wifi源名称
String ssid = info.getSSID();                   
textview0.setText("名称:"+ssid+" ");  
}



        // 显示扫描到的所有wifi信息(不能实时更新):
WifiManager wifiManager= (WifiManager) getSystemService(WIFI_SERVICE);
StringBuilder scanBuilder= new StringBuilder();
List<ScanResult> scanResults=wifiManager.getScanResults();//搜索到的设备列表
for (ScanResult scanResult : scanResults) {
scanBuilder.append("\n设备名:"+scanResult.SSID
                        +"\n信号强度:"+wifiManager.calculateSignalLevel(scanResult.level,1001)+"\n");
}
textview3.setText(scanBuilder);
}




Thread t = new Thread(new Runnable() 
{
public void run() 
{

while(true)
    {
        runOnUiThread(new Runnable() 
        {
        public void run()
        {

         obtainWifiInfo();
        }
        });
        try{
Thread.sleep(500);
}catch(InterruptedException e){
e.printStackTrace();
}
    }
}
});
t.start();
}


  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Wifimanager是一个用于管理和连接无线网络的Android API。它提供了一组功能,可以通过编程方式扫描和连接无线网络,获取有关网络连接状态的信息,并允许用户配置网络连接。 要自定义Wifimanager页面的参数,我们可以使用Wifimanager类的相关方法和属性。以下是一些常见的自定义参数: 1. 设置网络连接密码:可以使用Wifimanager类的setWifiEnabled方法启用无线网络,并使用addNetwork方法添加一个新的网络配置。可以使用WifiConfiguration类的preSharedKey属性来设置网络连接密码。 2. 设置网络连接类型:可以使用WifiConfiguration类的allowedKeyManagement属性来设置安全协议,例如WPA或WEP,以确保网络连接的安全性。 3. 连接到指定的网络:可以使用Wifimanager类的enableNetwork方法连接到预先配置的网络。可以通过使用WifiConfiguration类的networkId属性作为参数来指定要连接的网络。 4. 获取已连接网络的信息:可以使用Wifimanager类的getConnectionInfo方法来获取当前已连接网络的信息。可以使用WifiInfo类的SSID属性获取网络的名称,并可以使用IpAddress属性获取网络的IP地址。 5. 扫描并获取可用网络列表:可以使用Wifimanager类的startScan方法扫描可用的无线网络,并使用getScanResults方法获取扫描结果的列表。可以使用ScanResult类的SSID属性获取网络的名称,并可以使用level属性获取网络的信号强度。 以上是一些常见的自定义参数,可以根据具体需求进行进一步的自定义。通过使用Wifimanager提供的方法和属性,我们可以方便地管理和定制无线网络连接。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值