我正在开发一个应用程序,想要使用Fused Location Provider。但是我有一些疑问和几个问题。
- 当GPS关闭时,如果我将优先级设置为HIGH,那么这是否意味着GPS会自动打开?
- 我能否按需使用Fused提供程序将UpdateLocation与HIGH优先级一起设置以节省电池电量?
- 如何知道Fused提供程序在使用什么(是GPS还是网络提供程序)?
- Fused提供程序是Android定位的最佳选择吗?它有什么负面影响吗?
请问您的意见是什么? 谢谢。
我正在开发一个应用程序,想要使用Fused Location Provider。但是我有一些疑问和几个问题。
请问您的意见是什么? 谢谢。
就像https://developer.android.com/training/location/index.html中非常明确地说明的那样,将Google Play服务位置API用于为应用程序添加位置感知功能比使用Android框架位置API(android.location)更可取。如果您目前正在使用Android框架位置API,则强烈建议尽快切换到Google Play服务位置API。所以我希望您已经得到了答案。
使用 LocationManager 的 Location.getProvider 获取 Gps 时返回 "gps",获取 Wifi 时返回 "network",获取 FusedLocationProvider 时返回 "fused"。
当 GPS 关闭并将优先级设置为 HIGH 时,这是否意味着 GPS 将自动打开?
除了“省电模式”以外的任何设置都会在可用时打开 GPS。这些设置适用于我的 Android 7.1.1 手机。在用户端的早期 Android 版本中,位置设置是不同的。作为开发人员,要启用使用 GPS,您应该设置 mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);
mLocationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
我怎样才能知道使用的是融合提供程序(GPS还是网络提供程序)?
通过Wifi获取位置信息时,Location.hasSpeed()从不返回true,但如果你在户外,Gps几乎总是返回true。同时,location.getExtras()有卫星标签,你可以检查卫星数量,这仅适用于Gps。如果你步行或者据我所读,当速度小于5公里/小时时,速度可能不准确。我的意思是,如果你正在使用FLP,并且最后的位置数据包含速度信息,那么它肯定来自Gps。
它有什么缺点吗?
自Android 8.0及以上版本,如果你不使用前台服务或在应用程序未暂停的情况下获取前台位置,FLP和LocationManager都会有位置检索限制。
此外,FLP需要用户设备上可用的GooglePlayService,并且它应该在特定版本之上。根据您使用的版本,可能是10或11。如果您希望在禁止Google Play服务的国家(例如中国)发布您的应用程序,则可能会遇到麻烦。现有的答案并没有说明为什么FusedLocationProvider更好。
FusedLocationProvider更好是因为API从更多的数据源(传感器、wifi、上下文、历史记录)智能而节省电池地融合。此外,谷歌一直在通过添加更多的数据源来改进它。如果您的应用程序使用它,您将免费获得这些改进。