我正在开发一个Android应用程序,它具有搜索所有最近/检测到的wifi热点的模块。
我可以从搜索过的wifi热点中获取所有细节,例如 SSID,BSSID,功能,频率,级别和时间戳
有了这些信息,我还需要WiFi的距离(wifi接入点和移动设备之间的距离)
我使用下面的线来获得距离。
double exp = (27.55 - (20 * Math.log10(freqInMHz)) + Math.abs(levelInDb)) / 20.0;
double distanceM = Math.pow(10.0, exp);
这将以米为单位返回距离。
我通过google从许多页面上研究这些代码。
但我认为我错了,这段代码返回了错误的距离。我也在谷歌搜索上尝试了很多但没有得到准确的输出。
请帮帮我。我怎样才能获得Wifi AP和移动设备之间的距离?
答案 0 :(得分:4)
此代码:
double exp =(27.55 - (20 * Math.log10(freqInMHz))+ Math.abs(levelInDb))/ 20.0; double distanceM = Math.pow(10.0,exp);
假设两个各向同性天线之间的自由空间路径衰减并且AP以20dBm的功率发射(并且数学甚至不正确;自由空间路径损耗的频率依赖性不同;这不是重要的W-LAN的频段,使用,校正在 27.55 )。
实际上,您需要处理各向异性天线,路径中的障碍物,衍射效应以及AP在不需要高带宽的情况下改变其功率输出以节省能源。
或换句话说:仅仅通过观察接收到的功率来获得可靠的距离图是完全不切实际的。它可以给你一个数量级的球场,但不是那种远程准确的东西。这只是基础物理学。
测量距离的唯一可靠方法是飞行时间。为此,您必须测量设备和接入点之间的往返时间。由于我们处理的光速和距离大约为100米(上),这意味着测量纳秒。可以做但需要一些工作。请参阅SatelliteSD提供给您的链接(它使用德语,但图表和关键字应该是可以理解的)。
答案 1 :(得分:1)
有可能,您可以使用飞行时间方法。请记住,您不能依赖收到的消息,而是依赖于收到的开销(如ACK) 我只能想出这个参考文献(德语)measuring of signal runtimes 通过快速阅读,我认为这是一件非常繁琐的事情。
答案 2 :(得分:0)
答案 3 :(得分:-1)
有一种名为" triangulation"但对于这种情况,你有至少3个热点。您可以在此pdf中详细解答。