Android 定位策略

申请用户权限

为了接收来自NETWORK_PROVIDERGPS_PROVIDER的位置更新,你必须通过声明ACCESS_COARSE_LOCATIONACCESS_FINE_LOCATION权限来分别的在你的Android清单中申请用户权限,如:

<manifest ... >

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    ...

</manifest>

没有这些权限,你的应用程序会在请求位置更新时发生运行时错误。

注意:如果你同时使用了NETWORK_PROVIDER和GPS_PROVIDER,那么你只需要申请ACCESS_FINE_LOCATION权限,因为它包含这两个位置提供器的权限。(ACCESS_COARSE_LOCATION只包含了NETWORK_PROVIDER权限。)

定义最佳性能的模型

基于位置的应用程序目前是比较普遍的,但是由于精度不佳,需要使用多种方法来获取用户移动的位置,并且还希望能够达到省电的目的,因此获取用户位置是复杂的。要克服获取良好用户位置的障碍,同时保护电池的消耗,你就必须定义一个一致的模型来指定应用程序如何获取用户位置。这个模型包含了启动和停止监听更新的时机和使用被缓存的位置数据的时机。

获取用户位置的流程

以下是典型的获取用户位置的过程流程:

1.  启动应用程序;

2.  稍后,启动对期望的位置提供器的更新的监听;

3.  通过筛选新的位置,来维持一个当前最优的位置评估;

4.  停止对位置更新的监听;

5.  利用最后评估的最佳位置。

1用一个可视的时间轴,演示了应用程序中所监听的位置更新,以及这些事件所发生的时机:

1.代表应用程序中用于监听位置更新的窗口的时间轴。

这个窗口模型---在接收位置更新期间,你需要决定把基于位置的服务添加到你的应用程序中的时机。

原文地址:https://www.cnblogs.com/lechance/p/4373158.html