有关Android中的AGPS

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/** Callback structure for the AGPS interface. */ typedef struct {
agps_status_callback status_cb; gps_create_thread create_thread_cb; } AgpsCallbacks;
eof(AGpsStatus) */
size_t
size;
AGpsType
type;
AGpsStatusValue status;
} AGpsStatus;
/** Callback with AGPS status information. * Can only be called from a thread created by create_thread_cb. */ typedef void (* agps_status_callback)(AGpsStatus* status);
3.AGPS 在 Android 中的实现
原生的 Android 源码中并没有 AGPS 的实现方式,我们以 PQXU2 为 例来观察 AGPS 的运作过程。下面是 HAL 层头文件中关于 AGPS 定义的接口 及回调函数。
/** Represents the status of AGPS. */
在agps中通过从蜂窝网络位置服务器下载当前地区的可用卫星信息包含当地区可用的卫星频段方位仰角等信息从而避免了全频段大范围的搜索使首次搜星速度得到大大提高时间由原来的几分钟减小到几秒钟
1.AGPS 概述
AGPS(AssistedGPS:辅助全球卫星定位系统)是结合 GSM 或 GPRS 与传统卫星定位,利用基地台代送辅助卫星信息,以缩减 GPS 芯片获取卫星 信号的延迟时间,受遮盖的室内也能借基地台讯号弥补,减轻 GPS 芯片对卫 星的依赖度。和纯 GPS、基地台三角定位比较,AGPS 能提供范围更广、更省 电、速度更快的定位服务,理想误差范围在 10 公尺以内,日本和美国都已经 成熟运用 AGPS 于 LBS 服务(Location Based Service,基于位置的服务)。
AGPS 技术是一种结合了网络基站信息和 GPS 信息对移动台进行定位的 技术,可以在 GSM/GPRS、WCDMA 和 CDMA2000 网络中使进行用。该技术 需要在手机内增加 GPS 接收机模块,并改造手机的天线,同时要在移动网络 上加建位置服务器、差分 GPS 基准站等设备。
AGPS 解决方案的优势主要体现在其定位精度上,在室外等空旷地区, 其精度在正常的 GPS 工作环境下,可以达到 10 米左右,堪称目前定位精度 最高的一种定位技术。该技术的另一优点为:首次捕获 GPS 信号的时间一般 仅需几秒,不像 GPS 的首次捕获时间可能要 2~3 分钟。
(5)设备将处理后的 GPS 信息(伪距信息)通过蜂窝网络传输给 AGPS 位置 服务器。 (6)AGPS 服务器根据伪距信息,并结合其他途径(蜂窝基站定位、参考 GPS 定位等)得到的辅助定位信息,计算出最终的位置坐标,返回给设备。
AGPS 定位技术的实际应用情况 因为 AGPS 需要网络支持,因此目前使用该技术的大部分设备为手机。 1.目前大部分支持 AGPS 的手机采用一种纯软件的 AGPS 方案。 该方案基于 MS-Based 位置计算方式。具体的方案为:定期下载星历数据到 手机中,手机中的 AGPS 软件会根据星历信息计算出当前位置的可用卫星信 息,从而提供给设备用于快速搜星。用户可以选择通过 WiFi、固网等免费网 络定期更新星历数据,从而避免使用蜂窝网络产生的数据流量费用。当然, 由于星历信息可能存在延迟,因此搜星时速度可能有所下降,但是仍然会比 传统 GPS 定位快很多倍。 该方案的优点是纯软件,不需要专门的 AGPS 硬件,几乎所有 GPS 手 机都可以使用;同时用户可以根据情况指定星历更新周期及更新方式,控制 或减免蜂窝网络数据流量。 2.部分运营商的 AGPS 方案中,实施了在无 GPS 信号时自动切换到 GSM 蜂窝基站 Cell-ID 定位的措施,从而一定程度上解决了室内定位的问题。 3.世界范围内一些 AGPS 芯片或相关服务已经广泛使用。
如上图所示,AGPS 中从定位启动到 GPS 接收器找到可用卫星的基本流程 如下: (1)设备从蜂窝基站获取到当前所在的小区位置(即一次 COO 定位)。 (2)设备通过蜂窝网络将当前蜂窝小区的位置传送给网络中的 AGPS 位置服 务器。 (3)AGPS 位置服务器根据当前小区位置查询该区域当前可用的卫星信息 (包括卫星的频段、方位、仰角等相关信息),并返回给设备。 (4)GPS 接收器根据得到的可用卫星信息,可以快速找到当前可用的 GPS 卫星。 至此,GPS 接收器已经可正常接收 GPS 信号,GPS 初始化过程结束。AGPS 对定位速度的提高就主要体现在此过程中。
} return sAGpsInterface; }
(const
AGpsInterface*)interface-
AGpsCallbacks sAGpsCallbacks = { agps_status_callback, create_thread_callback,
};
static void agps_status_callback(AGpsStatus* agps_status) {
const GpsInterface* interface = GetGpsInterface(env, obj); if (!interface)
return NULL;
if (!sAGpsInterface) { sAGpsInterface =
>get_extension(AGPS_INTERFACE); if (sAGpsInterface) sAGpsInterface->init(&sAGpsCallbacks);
static const void* loc_eng_get_extension(const char* name) {
if (strcmp(name, GPS_XTRA_INTERFACE) == 0) {
return &sLocEngXTRAInterface; } else if (strcmp(name, AGPS_INTERFACE) == 0) {
如上图所示,直接通过 GPS 信号,从 GPS 获取定位所需要的信息,这 是传统 GPS 定位的基本机制。AGPS 中,通过蜂窝基站的辅助来解决或缓解 上文提到的两个问题,对于第一个问题,首次搜星慢的问题,是因为 GPS 卫 星接收器需要进行全频段搜索以寻找 GPS 卫星而导致的。在 AGPS 中,通过 从蜂窝网络(位置服务器)下载当前地区的可用卫星信息(包含当地区可用 的卫星频段、方位、仰角等信息),从而避免了全频段大范围的搜索,使首 次搜星速度得到大大提高,时间由原来的几分钟减小到几秒钟。对于第二个 问题,GPS 卫星信号易受干扰的问题,这是由 GPS 卫星信号本身的性质决定 的,我们无法改变。但是 APGS 中,通过蜂窝基站参考 GPS 的 辅助,或是借 助 GSM 定位中 Cell-ID 定位(COO 定位)方法的辅助,缓解了在 GPS 信号不 良的情况下定位的问题,有效提高了在此情况下的定位精度。
/** Extended interface for AGPS support. */
typedef struct {
/** set to sizeof(AGpsInterface) */
size_t
size;
/** * Opens the AGPS interface and provides the callback routines * to the implemenation of this interface. */ void (*init)( AGpsCallbacks* callbacks ); /** * Notifies that a data connection is available and sets * the name of the APN to be used for SUPL.
2.AGPS 定位基本原理浅析
位置服务已经成为一门越来越热的技术,也将成为以后所有移动设备的 标配。随着人们对 BLS(Based Location Serices,基于位置的服务)需求的飞 速增长,无线定位技术也越来越得到重视。AGPS(Assisted GPS,A-GPS, 网络辅助 GPS)定位技术结合了 GPS 定位和蜂窝基站定位的优势,借助蜂窝 网络的数据传输功能,可以达到很高的定位精度和很快的定位 速度,在移动 设备尤其是手机中被越来越广泛的使用。
*/ int (*data_conn_open)( const char* apn ); /** * Notifies that the AGPS data connection has been closed. */ int (*data_conn_closed)(); /** * Notifies that a data connection is not available for AGPS. */ int (*data_conn_failed)(); /** * Sets the hostname and port for the AGPS server. */ int (*set_server)( AGpsType type, const char* hostname, int port ); } AgpsInterface;
AGPS 定位基本机制
根据定位媒介来分,定位技术基本包含基于 GPS 的定位和基于蜂窝基 站的定位两类。GPS 定位以其高精度得到更多的关注,但是弱点也很明显: 一是硬件初始化(首次搜索卫星)时间较长,需要几分钟至十几分钟;二是 GPS 卫星信号穿透力弱,容易受到建筑物、树木等的阻挡而影响其定位的精 度。AGPS 定位技术通过网络的辅助,成功的解决或缓解了这两个问题。对于 辅助网络,有多种可能 性,以 GSM 蜂窝网络为例,一般是通过 GPRS 网络进 行辅助。
下面是 HAL 实现层的 AGPS 代码。
static const AGpsInterface sLocEngAGpsInterface = {
sizeof(AGpsInterface), loc_eng_agps_init, loc_eng_agps_data_conn_open, loc_eng_agps_data_conn_closed, loc_eng_agps_data_conn_failed, loc_eng_agps_set_server, };
AGPS 定位基本流程 1.搜索卫星 AGPS 定位仍然是基于 GPS 的,因此定位的首要步骤还是先搜索到当前 地区的可用 GPS 卫星。在传统 GPS 定位中需要全频段搜索以找到可用卫星因 而耗时较长,而 AGPS 通过网络直接下载当前地区的可用卫星信息,从而提
高了搜星速度。同时,也减小了设备的电量消耗。
return &sLocEngAGpsInterface; } else if (strcmp(name, GPS_NI_INTERFACE) == 0) {
return &sLocEngNiInterface; }
return NULL; }
下面是 JNI 中的 AGPS 源码。
static const AGpsInterface* GetAGpsInterface(JNIEnv* env, jobject obj) {
2.计算位置 GPS 接收器一旦找到四颗以上的可用卫星,就可以开始接收卫星信号实 现定位。接下来的过程根据位置计算所在端的不同,通常有两种方案:在移 动设备端进行计算的 MS-Based 方式和在网络端进行计算的 MS-Assisted 方 式。 MS-Based 方 式 中,接下来过程与传统 GPS 定位完全相同,GPS 接收 器接收原始 GPS 信号,解调并进行一定处理,根据处理后的信息进行位置计 算,得到最终的位置坐标。 MS-Assisted 方式中,解调并处理后,接下来过程如下图所示:
相关文档
最新文档