首页 文章

Android位置客户端的Provdier

提问于
浏览
3

我可以使用LocationClient和LocationRequest获取位置更新或当前位置 .

但是如何知道是否获得该位置是使用gps提供商或网络提供商 .

这是示例代码https://developer.android.com/training/location/retrieve-current.html

1 回答

  • 4

    显然,使用 LocationClientLocationRequest 时,不可能将优先级从源转移到获取 location 的需求/需求方 .

    提供者是 Fused Location Provider

    融合位置提供商融合位置提供商智能地管理底层定位技术,并根据您的需求为您提供最佳位置 .

    资料来源:Location APIs Android

    当他们第一次介绍这些api时,我试图解决这个问题,即使你是 location 对象的'provider',
    location.getProvider() ,它返回:"fused"作为值而不是GPS或NETWORK .

    仍然如果你想推断出位置的来源,不完全准确,但它可以与在LocationRequest的帮助下设置的PRIORITY相关

    例:

    public static final int PRIORITY_HIGH_ACCURACY与setPriority(int)一起使用以请求最准确的位置 . 这将返回最好的位置 .

    我观察到,根据使用 LocationRequest 设置的PRIORITY,改变了GPS的使用 .

    Only for PRIORITY_HIGH_ACCURACY应用程序使用GPS(不仅仅作为其融合位置提供程序),因此对于其他两个PRIORITY设置,它'intelligently manages'融合源并提供尽可能准确的位置,从而节省电池/电量 .

    请注意:
    当设置为PRIORITY_HIGH_ACCURACY时,我并不是说应该启用GPS以获得该条件下的位置,只是如果启用了GPS,您可以直观地看到它正在该优先级下使用并且在您设置时未被使用不同的优先权 .

    融合位置提供商使用GPS,WiFi,Cell Towers和Sensors来确定准确的位置估计 .

相关问题