Android 定位模式,无 GPS,AOSP 中的选项

Posted

技术标签:

【中文标题】Android 定位模式,无 GPS,AOSP 中的选项【英文标题】:Android location mode, no GPS, options in AOSP 【发布时间】:2017-09-22 13:06:02 【问题描述】:

我正在开发没有 GPS 芯片的 android M STB。在 Android 设置中,位置,我有三种位置支持选择——高精度、低功率、仅 GPS。系统默认为高精度模式。

这里的问题是,当从后台服务调用 wifi.getScanResults() 并且启用了需要 GPS 的定位模式之一时,我没有得到任何结果。从前台应用程序调用工作正常,只有后台服务受此影响。当我将系统切换到位置模式 Low Bat(不需要 GPS)时,后台 getScanResults() 调用按预期工作。

如何修改我的 AOSP 构建,以便由于没有 GPS 芯片而不会向用户显示“高精度”和“仅限 GPS”选项?

【问题讨论】:

【参考方案1】:

您是否尝试过修改 LocationManagerService 类使其不加载 GPS 提供程序?以下可能是您正在寻找的内容。

https://github.com/android/platform_frameworks_base/blob/nougat-release/services/core/java/com/android/server/LocationManagerService.java#L453

【讨论】:

【参考方案2】:

默认定位模式由def_location_providers_allowedframeworks/base/packages/SettingsProvider/res/values/defaults.xml中设置。它的值可以是gps(仅限GPS)、network(省电)或gps,network(高精度)。

因此,您可以将def_location_providers_allowed 设置为network(例如在设备/供应商覆盖中)并在设置 中为用户禁用或隐藏模式 选项 → 位置,因为您只有一个选择(请参阅packages/apps/Settings/res/xml/location_mode.xml)。

【讨论】:

以上是关于Android 定位模式,无 GPS,AOSP 中的选项的主要内容,如果未能解决你的问题,请参考以下文章

Android中如何知道定位模式是WIFI还是2G/3G基站?

《第一行代码》Android特色开发,基于位置服务,出现的问题

android的怎么使用gps定位

GPS定位研究之gps位置改变监听源码分析(Android10)

在android中使用gps安全定位

Android如何开启GPS定位服务?