【问题标题】:Getting Signal strength of the Wifi connected(not getting called)获取已连接 Wifi 的信号强度(不被调用)
【发布时间】:2014-02-12 07:23:33
【问题描述】:

我正在尝试获取已连接 AP 的 Wi-Fi 信号强度。当我尝试运行以下代码时,没有返回任何内容/显示错误。

public class Wifi extends uiscenario {
    public void onReceive(WifiManager wifiManager) throws UiObjectNotFoundException, InterruptedException, RemoteException, IOException {
        System.out.println("level");
        int numberOfLevels=4;
        WifiInfo wifiInfo = wifiManager.getConnectionInfo();
        int level=WifiManager.calculateSignalLevel(wifiInfo.getRssi(), numberOfLevels);
        System.out.println("Bars =" +level);
    }
}

如何获取连接的wifi的信号强度,以及如何获取wifi的扫描结果并连接到信号最强的wifi?

更新代码

public class Wifi extends UiScenario { 
       private static WifiManager wifiManager;
           public void wifiscan() throws UiObjectNotFoundException,InterruptedException,RemoteException, IOException { 
           int numberOfLevels=5; 
           WifiInfo wifiInfo = wifiManager.getConnectionInfo();
           int level=WifiManager.calculateSignalLevel(wifiInfo.getRssi(), numberOfLevels);        
           System.out.println("Bars =" +level);
     }
}

在这一行出现错误(WifiInfo wifiInfo = wifiManager.getConnectionInfo();)

【问题讨论】:

    标签: android android-wifi wireless android-uiautomator


    【解决方案1】:

    希望它应该工作。它对我来说工作正常。

    WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
    int linkSpeed = wifiManager.getConnectionInfo().getRssi();
    

    【讨论】:

      【解决方案2】:
      WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
                                  int linkSpeed = wifiManager.getConnectionInfo().getRssi();
      
                                  System.out.println("Link Speed is======"+linkSpeed);
      

      【讨论】:

      • 我相信这里没有初始化wifi管理器..你能给出完整的代码吗?
      • 只需从 control+shift+O 导入 lib,如果仍然出现错误,请粘贴代码
      • 当我尝试运行上面的代码时,会抛出 Nullpointer 异常。我在这里遗漏了什么吗?
      • 不,伙计,它在我身边工作正常哦,你得到这个错误的地方意味着你在哪一行得到这个错误
      • 在这一行,错误显示:WifiInfo wifiInfo = wifiManager.getConnectionInfo();
      【解决方案3】:

      检查您的清单使用 wifi 权限并读取手机状态您的代码是否完美, 它应该可以工作,否则试试这个。

      WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
      int linkSpeed = wifiManager.getConnectionInfo().getRssi();
      

      【讨论】:

      • 我在无根设备上运行..此外,此代码本身不会进入此方法
      • 在 logcat 中,它显示在 wpasupplicant 中发出私有命令失败。我在这里遗漏了什么吗?
      猜你喜欢
      • 2012-07-08
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      • 2018-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-23
      相关资源
      最近更新 更多