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_allowed
在frameworks/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特色开发,基于位置服务,出现的问题