为什么在室内环境中 GPS 定位不准?如何结合 Wi-Fi 和蓝牙辅助定位?
解读
面试官想考察两点:
- 对 GNSS 信号物理特性的理解,能否解释“室内失效”的本质;
- 对 Android 平台 Fused Location Provider(FLP)生态的掌握程度,能否把 Wi-Fi RTT、BLE AoA、芯片级 Kalman 滤波等国内可落地的技术讲清楚。
回答时先给“为什么”——信号被遮挡、多径、星历失效;再给“怎么做”——系统层调用 FLP,应用层主动扫描 Wi-Fi/Beacon,必要时走厂商 SDK(华为 HMS Location、OPPO 定位服务)做加权融合,最后兜底地图商的“室内通”指纹库。
知识点
-
GPS 室内失效根因
- 30 dB 以上穿透损耗:钢筋混凝土对 1.5 GHz 信号衰减 20–40 dB,普通手机天线灵敏度 ≤ –155 dBm,低于跟踪门限。
- 多径效应:室内反射路径 > 200 ns,导致 C/A 码相关峰畸变,伪距误差 10–100 m。
- 星历/历书失效:Android 7.0+ 虽支持 LTE 辅助(SUPL 2.0),但国内运营商不广播 SLP 地址,首次定位需 30 s 以上,用户早已走出室内。
-
Android 定位框架
- Fused Location Provider:Google 服务可用时走 GMS,国产机无 GMS 时由厂商实现同接口。
- LocationRequest.setPriority():PRIORITY_HIGH_ACCURACY 会同时打开 GPS、Wi-Fi、BLE 扫描;PRIORITY_LOW_POWER 仅走网络定位。
- 硬件支持:
– Wi-Fi RTT (802.11mc):Android 9+ 要求,测距精度 1–2 m,需路由器支持。
– BLE 5.1 AoA/AoD:Pixel 6、小米 13 等已支持,理论角度精度 1°。
-
融合算法
- 系统层:芯片商(高通、MTK)在 HAL 层做 Kalman 滤波,输入 GNSS 伪距、Wi-Fi RSSI、BLE RSSI、加速度计、陀螺仪,输出 FLP。
- 应用层:可调用 GnssMeasurement API 获取原始伪距,再用地图商 SDK(高德猎鹰、百度 LBS)上传指纹,做粒子滤波或加权 KNN。
-
国内合规点
- Wi-Fi 扫描受《移动互联网应用个人信息保护管理暂行规定》约束,Android 10+ 需 ACCESS_FINE_LOCATION + ACCESS_BACKGROUND_LOCATION;Android 12+ 还需 android.permission.NEARBY_WIFI_DEVICES。
- 蓝牙扫描需 BLUETOOTH_SCAN,且必须在 5 分钟内完成,否则会被系统节流。
答案
“室内 GPS 定位不准,本质是 1.5 GHz 信号被钢筋混凝土遮挡后衰减 30 dB 以上,低于手机跟踪灵敏度;同时室内多径导致伪距误差放大到数十米,且国内 SUPL 辅助数据缺失,星历下载耗时 30 s 以上,用户早已离开现场。
Android 端解决思路分三层:
- 系统层:优先使用 Fused Location Provider,它会自动把 Wi-Fi RSSI、BLE Beacon、加速度计、磁场传感器喂给芯片级 Kalman 滤波器,输出 3–5 m 精度的位置。
- 应用层:在 LocationRequest 里设置 PRIORITY_HIGH_ACCURACY,并主动调用 WifiManager.startScan() 或 BluetoothLeScanner,把 RSSI 列表上传给地图商指纹库,可进一步把误差压到 1–2 m;若项目对隐私敏感,可在端侧用 Particle Filter 融合 RTT 测距结果。
- 国产无 GMS 场景:调用厂商统一定位 SDK,如华为 HMS Location 的 setLocationType(LocationRequest.PRIORITY_HIGH_ACCURACY),内部已融合 Wi-Fi RTT、BLE AoA、惯导,接口与 GMS 完全一致,无需改业务代码。
最后注意合规:Android 12+ 扫描 Wi-Fi 需声明 NEARBY_WIFI_DEVICES,蓝牙需 BLUETOOTH_SCAN,且前台服务 5 分钟不结束会被系统节流,建议用 WorkManager 做后台聚合上传。”
拓展思考
- 折叠屏/车载场景:当屏幕展开或车机进入隧道,GPS 信号瞬间丢失,可提前用 SensorManager 注册 TYPE_ACCELEROMETER + TYPE_GYROSCOPE,做 DR(Dead Reckoning)推算,30 s 内误差 < 3%。
- 隐私沙盒影响:Android 13 预览版已限制非系统应用获取 MAC 地址,指纹库只能上报哈希化 BSSID,地图商需改用“路由器的 RSSI 时间序列 + 相对距离”做聚类,不再依赖明文 MAC。
- UWB 即将落地:OPPO、小米 2025 年旗舰机将配 UWB 芯片,厘米级测距,可取代 RTT;面试时可补充“未来可用 UWB + BLE AoA + 5G DL-TDOA 做三维室内定位,误差 < 10 cm”。