最近在写GPS定位,LocationManager中有两个参数比较迷惑,GPS_Provider和NetWork_Provider,于是找了找资料,看到这三者的关系,详细梳理一下,以防忘记。
安卓智能手机的定位,一定离不开三个词:网络定位、A-GPS和GPS。他们之间的关系如下:
网络定位(此处特指安卓“设置”中给出的概念)(包括非卫星参与的移动基站定位、WiFi 定位) | A-GPS(Assisted GPS ) | GPS | |
设备是否需要联网(WIFI/2G/3G等) | 需要 | 需要 | 不需要 |
定位源/数据源 | 移动基站、wifi等无线基站信息 | 移动基站、wifi等无线基站信息 | 卫星 |
系统独立性 | 可单独使用 | 目标是为了令GPS定位更快更精准,不可单独使用 | 可单独使用 |
定位速度 | 快(需视乎网络速度、与位置服务器连接的情况) | 目标是为了令GPS定位更快更精准,不能比较(辅助GPS的速度:需视乎网络速度、与位置服务器连接和通讯的质量) | 相对其它两个较慢(如果A-GPS工作良好,也比较快) |
定位精度 | 低(需要视乎数据源提供商) | 目标是为了令GPS定位更快更精准,不能比较(辅助GPS的精度:需要视乎数据源提供商) | 高(需视乎定位芯片和天线接收质量) |
(安卓)所属开发层 | 应用程序框架层(<=4.0.x / 4.1.x / 4.2.x三大开发方式接入LocationProviderProxy) + platform级签名 | Linux内核层(驱动级开发)(需搭配GPS驱动一并开发) | Linux内核层 + 应用程序框架层(需继承LocationProvider派生出GpsLocationProvider等)(驱动级开发) |
原文地址:http://www.tuicool.com/articles/aMNbAb