如何在 Android 工作室获取附近的 Wifi 距离和方向

How to get Nearby Wifi distance and direction in Android Studios

如何获取附近所有 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

此应用程序提供附近的露营地 wifi 地块

任何人都可以指导我这是如何实现的吗?

简答"not possible".

长答案是 phone 给出的只是输入信号的强度,它可以来自任何方向。您甚至无法估计到 WiFi 接入点的距离,直到您知道某个已知距离的 phone 信号强度。但是,您可以根据 phone 的移动和 WiFi 信号强度变化的差异来估计 WiFi 接入点所在的方向。

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

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

要计算距离你可以试试:

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