【问题标题】:How to get Nearby Wifi distance and direction in Android Studios如何在 Android Studios 中获取附近的 Wifi 距离和方向
【发布时间】:2016-11-17 01:20:35
【问题描述】:

如何获取附近所有 Wifi 的方向和强度? 到目前为止,我已经能够使用以下代码获得 Wifi Strength in Level 但仅限于连接的 wifi

   WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
            int numberOfLevels = 5;
            WifiInfo wifiInfo = wifiManager.getConnectionInfo();
            int level = WifiManager.calculateSignalLevel(wifiInfo.getRssi(), numberOfLevels);

我正在尝试做这样的事情 Play Store App Link

这个应用程序在campas附近提供wifi小区

谁能指导我如何做到这一点?

【问题讨论】:

  • 我知道这与你的问题无关,但我看到这问了很多人:Android Studio 只是一个 IDE,你想知道的是你如何在“Android”而不是“Android”中做到这一点工作室”。
  • 但这仅显示已连接 Wifi 的信息

标签: android location wifi


【解决方案1】:

简答“不可能”。

长答案是手机只提供输入信号的强度,可以来自任何方向。您甚至无法估计到 WiFi 接入点的距离,除非您知道它在已知距离内的手机信号强度。但是,您可以通过手机的移动以及 WiFi 信号强度的变化来估计 WiFi 接入点所在的方向。

您链接到的应用程序会告诉您开始扫描,然后慢慢旋转。这是记录设备方向和信号强度变化所必需的。然后根据设备的方向和该方向的信号强度,它可以估计 WiFi 接入点的位置。我与该应用程序没有任何联系,也没有使用过它。所有这些信息均基于应用的屏幕截图和 WiFi 工作原理的一般知识。

还有其他有趣的东西,例如 WiFi 接入点,当它检测到信号低的设备时,它可以向特定方向发送更强的信号。

【讨论】:

    【解决方案2】:

    要查找距离,您可以尝试:

    public double calculateDistance(double signalLevelInDb, double freqInMHz) {
        double exp = (27.55 - (20 * Math.log10(freqInMHz)) + Math.abs(signalLevelInDb)) / 20.0;
        return Math.pow(10.0, exp);
    }
    

    【讨论】:

    • 但是我们如何从 wifi direct 获取 signalLevelInDb 和 freqInMHz 呢?
    猜你喜欢
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多