Fused Location Provider是不错的选择?

时间:2016-06-28 09:57:49

标签: android gps android-location fusedlocationproviderapi

我正在开发一个我希望使用Fused Location Provider的应用程序。但我有一些疑问,还有几个问题。

  1. 当GPS关闭并且我将优先级设置为HIGH时,这是否意味着GPS将自动打开?
  2. 我可以根据需要设置具有高优先级的Fused提供程序的UpdateLocation,以便至少节省一点电量吗?
  3. 我怎么知道Fused提供商正在使用什么(它是GPS还是网络提供商)? 最后
  4. Fused提供商真的是Android位置的最佳选择吗?对此有任何负面意见吗?
  5. 你有什么看法? 提前谢谢。

4 个答案:

答案 0 :(得分:8)

  

当GPS关闭并且我将优先级设置为HIGH时,这是否意味着GPS会自动开启?

不,它不会自动打开。但是,如果您使用SettingsApi,则会向用户提示对话框,并提供必须打开GPS的信息。如果用户接受,gps将自动激活。查看SettingsApi

  

我如何知道Fused提供商正在使用什么(它是GPS还是网络提供商)

如果您正确使用融合提供者api和SettingsApi。它将为当前位置请求提供足够的所需设置。

  

Fused提供商真的是android位置的最佳选择吗?对此有任何负面意见吗?

在我看来,在融合提供者之前,你必须直接与提供商打交道(Gps,网络)但是融合只是问你,"你想要获得多准确的位置?"

答案 1 :(得分:4)

正如此处https://developer.android.com/training/location/index.html非常明确地指出,Google Play服务位置API优于Android框架位置API(android.location),作为向您的应用添加位置感知的一种方式。如果您当前正在使用Android框架位置API,强烈建议您尽快切换到Google Play服务位置API。所以我希望你得到答案。

答案 2 :(得分:4)

我为Gps,Wifi和Fused Location Provider制作了测试应用程序并对其进行了2天的测试。它更好,因为它使用它们,而且大部分时间它都是最准确的。此外,Gps数据是一个非常嘈杂的数据,会导致抖动,解决这个低通滤波器或使用其他滤波器。用于获得最准确结果的最成功的滤波器之一是卡尔曼滤波器。 FusedLocationProvider使用与RotationVector相同的过滤器,这是一个融合了硬件和软件的融合传感器。 RotationVector使用加速度计,陀螺仪(如果有)和磁场传感器来获取和过滤位置和方位角数据。

带有LocationManager的Gps的Location.getProvider返回" gps",Wifi返回" network",并且FusedLocationProvider返回"融合"。

  

当GPS关闭并且我将优先级设置为HIGH时,这是否意味着GPS将自动打开,或者不是

除了"省电"以外的任何其他内容如果可用,将打开Gps。我的Android 7.1.1手机上提供此设置。在用户方面,Android的早期版本的位置设置有所不同。作为支持使用Gps的开发者,您应该设置mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

  

PRIORITY_HIGH_ACCURACY - 使用此设置可以请求最精确的位置。使用此设置,位置服务更有可能使用GPS来确定位置。

设置优先级也可以确定电池使用水平。

  

我可以根据需要设置具有高优先级的融合提供商的UpdateLocation,以便至少节省一点电量吗?

是的,除了优先级之外,您还可以设置位置请求的间隔。

mLocationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);
mLocationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
  

我怎么知道Fused提供商正在使用什么(它是GPS还是网络提供商)?

来自Wifi的位置永远不会为Location.hasSpeed()返回true,但如果你在户外,Gps几乎总是返回true。此外,location.getExtras()还有卫星标签,您可以检查哪些卫星仅适用于Gps。如果你走路或者到目前为止我读过的速度可能不正确,我还没有在车上试过这个,当速度低于5公里/小时它不是很准确。我的意思是如果你使用FLP并且最后的位置数据包含速度信息,它肯定来自Gps

  

对此有任何负面意见吗?

从Android 8.0及更高版本开始,如果你没有使用前台服务或在前台获取位置而没有为FLP和LocationManager暂停app,则会有l ocation retrieving limit

此外,FLP要求GooglePlayService可在用户的设备上使用,并且应高于特定版本。 10或11,取决于您使用的是哪一个。如果您希望在禁止Google Play服务的国家/地区(例如中国)发布您的应用,则可能会出现问题。

答案 3 :(得分:1)

现有的答案并不是说为什么 FusedLocationProvider更好。

这是更好的,因为API以更智能和节省电池的方式从更多数据源(传感器,wifi,上下文,历史记录)融合。此外,Google总是通过添加更多数据源来改进它。如果您的应用使用它,您可以免费获得这些改进。