如何在Android Studios中获取附近的Wifi距离和方向

时间:2016-07-14 08:12:45

标签: android location wifi

如何获得附近所有Wifi的方向和强度? 到目前为止,我已经能够获得级别的Wifi强度,但只能使用以下代码来连接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

这个应用程序提供附近的坎帕斯无线电台情节

任何人都可以指导我如何做到这一点吗?

2 个答案:

答案 0 :(得分:0)

简短回答“不可能”。

很长的答案是手机只能提供输入信号的强度,它可以来自任何方向。您甚至无法估计到WiFi接入点的距离,直到您知道其手机的信号强度为已知距离。但是,您可以估算WiFi接入点距手机移动的方向以及WiFi信号强度变化的差异。

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

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

答案 1 :(得分:0)

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

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);
}