介绍
本文目的是给那些BREW开发者们一个关于BREW SDK/API中有效特征的大概的了解,他们用这些来创建BREW定位应用程序。
gpsOne
gpsOne是一种混合定位系统。包括AGPS(thePDE-Position Determination Entity assisted handset-based GPS gechnology)(定位实体辅助手持GPS技术),和AFLT(the network-dependent position by triangulation technology基于网络的三角测量技术)。这两个主要的组件构成了gpsOne定位解决方案。
gpsOne混合系统吸取了AGPS中的精确定位的优点并且扩展使用这些特征,当在某些条件下不能达到GPS的准确程度时,将启用基于AFLT网络的深层穿透能力来扩展系统,使其覆盖所有的地带(森林,农田,室内,室外)。
一个移动设备可以初始化三种gpsOne模式:
1、辅助定位(MS-Assisted)
2、基本定位(MS-Based)
3、独立或者自主模式
辅助定位模式利用初始化定位实体(服务器)来计算移动位置,他只能是混合模式。
基本定位模式利用定位实体的有限和周期的信号来计算移动设备的位置。
独立或者自主的模式是指手持设备的计算位置能力而不用定位实体的干预。
BREW对gpsOne的支持
BREW 1.* ( ISHELL_GetPosition() )系列API支持一个有限的辅助定位gpsOne定位数据(大量的经纬度)。BREW 1.*不支持基本定位模式。
BREW 2.0(IPOSDET Interface)完全支持辅助定位模式并且提供了一系列的位置数据,这些数据要比1.*所支持的数据更丰富。BREW 2.0不支持基本定位模式。
本版本不支持自主模式。
需要MIF文件
使用IPOSDET API需要定位权限(PL_POS_LOCATION)。
BREW 2.0位置测定API
BREW gpsOne API通过IPOSDET接口生效。
调用一个定位需要两个步骤。
1,应用程序设置gpsOne引擎;
2,gpsOne引擎取得定位信息。
注意:如果接受默认的设置,那么可以不用初始化gpsOne引擎就获取定位信息。
AEEGPSConfig:是一个初始化GPS引擎的数据结构。
AEEGPSInfo:从(向)API函数输入和提取信息的一个数据结构。
第一步:设置GPS引擎
在调用的时候完成设置GPS引擎的工作。
int IPOSDET_SetGPSConfig(IPosDet *pIPosDet, AEEGPSConfig *pConfig );
IPosDet_SetGPSConfig()函数返回的可能返回值如下:
SUCCESS |
函数成功 |
EPRIVLEVEL |
您的BREW程序在MIF中不包括PL_POS_LOCATION权限。请更正MIF文件后重试一次。 |
EBADPARM |
您设置的pConfig参数是无效的(NULL)。 |
EUNSUPPORTED |
gpsOne引擎不支持您设置的模式。 |
在AEEGPSConfig中的参数有:mode,optim,server,nFixes,nInterval和qos。
mode
模式可以设置四种操作模式之一。
AEEGPS_Mode_One_Shot:
这是默认的模式。这种模式允许您请求一个定位而不需要担心gpsOne引擎使用的是下面哪一种模式(辅助或者基本定位)。这种模式与您为optim选择的那些参数是相关联的。
假如optim被设置为AEEGPS_OPT_SPEED,这种模式会提供给您一个最短时间的数据。在设备当前状态下,他会选择一个最好的途径来在最短的时间内获取定位数据。
如果设备执行基本定位比辅助定位快,就会使用基本定位。如果设备有必要的辅助数据(历书和历表)来执行一个基本定位,那么就会用这种方式。如果辅助数据无效或者不再有效,这种模式将试图下载或者刷新辅助数据。并且会给您一个辅助定位数据。
假如optim被设置成AEEGPS_OPT_ACCURACY,这种模式会提供给您一个最高精度的数据。目前,这是一个辅助定位数据,用来适应PDE的计算能力。然而,这种初始化模式可能会在将来改变。
假如您没有设置optim参数,默认的模式(AEEGPS_OPT_DEFAULT)将是AEEGPS_OPT_SPEED(速度优先)。
注意,对于AEEGPS_OPT_SPEED和AEEGPS_OPT_ACCUACY设备的状态是从属执行的,假如不知道使用上面哪一种模式获取定位数据,您也不必关心它。
AEEGPS_Mode_One_Shot是使用的最简单的模式,因为下面的BREW API将指出
使用哪一种模式将依赖于您的设备:速度还是精确数据。还要注意的是,为了使AEEGPS_OPT_SPEED达到最优化,这种模式将自动自我改变来适应变化中的情况(例如:无论当前的设备有足够的辅助数据条件下)。然后,正如您看到的那样,您永远不能确定gpsOne引擎会使用哪一种模式(MS-Assisted VS MS-Based)(甚至于AEEGPS-OPT-ACCURACY)。
如果您需要控制gpsOne模式,请使用下面列出的AEEGPS_Mode_Track_Network或者AEEGPS_Mode_Track_Network模式。
AEEGPS_Mode_Track_Network:
假如您希望强制gpsOne引擎为MS-Assisted模式,则使用这个参数。
AEEGPS_Mode_Track_Local:
假如您希望强制gpsOne引擎为MS-Based模式,请使用这个参数。
在导航应用上。使用导航,作为名字的一部分,可能被混淆并且不能从中推断出使用了哪些上述模式。这种模式将在单点上准确的提供给您一份定位数据,并且不会和PDE初始化任何现有的导航期间。为了在MS-Assisted模式上执行导航(除非移动设备不支持MS-Based模式,否则对于导航来说,它不是一个最好的选择),您的应用程序必须定期调用IPOSDET_GetGPSInof()函数。
AEEGPS_Mode_DLoad_First
这种模式使用在与MS-Based模式的连接中。为了响应一个位置请求,它将从PDE下载GPS辅助数据(历书和历表),因此,移动设备可以利用部分数据,在本地执行位置计算。
注意,假如信息无效或者已经被废弃,使用AEEGPS_Mode_Track_Local模式会下载GPS辅助信息。当您希望下载或者更新历书资料和天文历表数据时,这种模式正好提供给您控制权。
进一步来说,使用这种模式来缩短获取第一次MS-Based模式的数据时间:一个应用程序正当他显示应用程序的欢迎界面时,他可能还想同时开始下载GPS辅助信息,并且通过第一个初始化的屏幕提供给用户。
Optim
AEEGPS_OPT_SPEED:
速度优先。在AEEGPS_Mode_One_Shot模式上使用,他将提供给您尽最快速度得到的数据。基于设备的当前状态和能力,设备将在一个最少时间内选择一个最快的路途来获取定位数据。如果设备可以执行MS-Based模式比MS-Assisted快,那么就会使用MS-Basde模式。这种情况会在设备存在必须的辅助数据(历书和历表)时发生。如果辅助数据不可用或者失效,这种模式将不会去下载或者刷新辅助数据,相反,他会提供给您一份MS-Assisted定位数据。
AEEGPS_OPT_ACCURACY:
精度优先。在AEEGPS_Mode_One_Shot模式上使用,这种模式将提供给您尽可能精确的定位数据。当然,为了配合PDE的高级计算能力,他是MS-Assisted模式。然而,这种状况或许会在将来改变。
AEEGPS_OPT_DEFAULT:
默认模式,将被设置成为速度优先。
qos
“服务质量”参数特别对应于像gpsOne引擎这样的应用会花多长(以秒为单位)时间来搜寻卫星。注意,为了获得真AFTL定位数据,您只能设置这个参数为零。
该参数取值范围为0~255,但是上面的初始化可能会舍去最大值,并使它小于255。更高的qos数值代表返回更高精度的定位数据和更长的定位时间(像MS-Assisted模式)。更低的qos数值返回更低精度的定位数据和更少的定位时间(像MS-Based模式)。注意,长时间的搜索卫星可能使获取定位数据时间加长。目前大多数设备的最大值是30左右。
应该在MS_Assisted模式使用qos参数来干预获取定位时间。对于MS-Based模式,不需要使用qos参数,因为gpsOne引擎已经自动把定位时间最小化了。在MS-Assisted模式中,如果gpsOne引擎不能得到满足特定的qos需求环境,IPOSDET_GetGPSInof()函数的返回值会在状态域里面报告一个AEEGPS_ERR_INFO_UNAVAIL值(请参阅状态0的描述)。
您可以使用下面范围的数值,来体会您希望的定位时间和精度之间的关系。请注意,当前的定位时间和精度高度依赖个体操作者的网络设计,并且不应该是逐字的方式,因为他们正试图传输一个由qos造成的错误的联系信号。
0-返回一个只有AFLT(Advanced Fo