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