Android 原生Wi-Fi室内定位探究

一.关于室内定位的一些技术包括:RFID、蓝牙、红外、UWB、 ZigBee、WiFi和行人航迹推算PDR(Pedestrian Dead Reckoning)

       参考资料:http://wap.cnki.net/lunwen-1014235696.html

二.Android内置的定位服务,目前Android内置的定位方式有以下几种:

  1. GPS定位

优点:速度快、精度高、可在无网络情况下使用

缺点:首次连接时间长、只能在户外已经开阔地使用,设备上方有遮挡物就不行了、比较耗电

  1. Network(Wi-Fi和移动网络)定位

优点:和基站定位一样,它的优势在于收环境影响较小,只要有Wifi的地方可以使用(支持室内定位)。

缺点:需要有wifi、精度不准,大约几十米。

参考资料:https://blog.csdn.net/qq_24531461/article/details/72972389

所以在Android P之前也是支持Wi-Fi室内定位的,只是由于以下原因,所以国内大部分应用都是选择的第三方定位服务(如:高德,百度,腾讯)

    1. 没有安装GMS服务

    2. GPS不支持室内定位

    3. Network(Wi-Fi和移动网络)支持室内定位,但需要连接谷歌服务器,而且定位不精准

三.在Android P上利用802.11mc协议以及RTT实现Wi-Fi室内定位:(精度可到1到2米)

Android 9 添加了对 IEEE 802.11mc Wi-Fi 协议(也称为 Wi-Fi Round-Trip-Time (RTT))的平台支持,从而让您的应用可以利用室内定位功能。

在运行 Android 9 且具有硬件支持(所谓硬件支持指的是支持位置服务,支持Wi-Fi)的设备上,应用可以使用 RTT API 来测量与附近支持 RTT 的 Wi-Fi 接入点 (AP) 的距离。 设备必须已启用位置

服务并开启 Wi-Fi 扫描(在 Settings > Location 下),同时您的应用必须具有 ACCESS_FINE_LOCATION 权限。设备无需连接到接入点即可使用 RTT。

为了保护隐私,只有手机可以确定与接入点的距离;接入点无此信息。如果您的设备测量与 3 个或更多接入点的距离,您可以使用一个多点定位算法

来预估与这些测量值最相符的设备位置。 结果通常精准至 1 至 2 米。

实现步骤:

  • 框架:
    • AOSP 代码
    • 启用 WLAN RTT:需要功能标记
  • WLAN RTT (IEEE 802.11mc) HAL 支持(意味着固件支持)

要实现此功能,请采用 WLAN HIDL,另外还要启用功能标记:

  • 在位于 device// 的 device.mk 中,修改 PRODUCT_COPY_FILES 环境变量,以便支持 WLAN RTT 功能:

PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.wifi.rtt.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.rtt.xml

最终上层调用WifiRttManager实现

参考资料:

https://www.metaltoad.com/comment/6070#comment-6070

https://developer.android.com/about/versions/pie/android-9.0

https://developer.android.com/reference/android/net/wifi/rtt/package-summary

http://www.cnblogs.com/huangguanyuan/p/9990828.html

https://blog.csdn.net/yi_master/article/details/80083365

你可能感兴趣的:(Wi-Fi)