作者:
Confach 发表于2006-04-28 21:48
版权信息:可以任意转载, 转载时请务必以超链接形式标明文章
原始出处 和作者信息.
http://www.cnblogs.com/confach/articles/387915.html
第11章 使用位置信息
位置API
位置API(javax.microedition.location)允许应用程序获取BlackBerry设备的全球定位系统(GPS)位置。GPS位置是BlackBerry设备中的地理坐标(经度和纬度)。根据使用
的位置方法,应用程序也可以获得BlackBerry设备的速度,方向,以及路线。
获得GPS位置的方法
|
方法
|
常数
|
描述
|
|
Cellsite
|
GPS_AID_MODE_CELLSITE
|
本方法使用活动的蜂窝(cellsite) 塔的GPS位置来提供第一个有序GPS信息。它提供最不精确的位置信息;虽说如此,但它是最快的位置模式。
注:如果使用本模式,将得不到方向,路径,以及速度获。这个位置方法需要网络连接以及运营商的支持。
|
|
Assisted
|
GPS_AID_MODE_ASSIST
|
本方法使用网络为设备的芯片提供天文卫星数据。它比自动模式提供GPS位置更快些,并且比蜂窝模式更精确。
注:本位置方法需要网络连接以及运营商的支持。
|
|
Autonomous
|
GPS_AID_MODE_AUTONOMOUS
|
本方法在没有网络的协助下使用BlackBerry上的GPS芯片。自动模式提供第一个GPS位置最慢。
|
为选择GPS位置方法指定原则
通过创建一个javax.microedition.location.Criteria类,调用合适的set方法,然后传递这个LocationProvider.getInstance()实例来指定需要的原则.
注:为创建一个缺省规则的LocationProvider实例,调用LocationProvider.getInstance(null).
|
Criteria criteria = new Criteria();
// Allow cost.
criteria.setCostAllowed(true);
// Require a horizontal accuracy of 50 metres.
criteria.setHorizontalAccuracy(50);
// Require a vertical accuracy of 50 metres.
criteria.setVerticalAccuracy(50);
LocationProvider provider = LocationProvider.getInstance(criteria);
|
选择GPS位置方法的原则
|
建议的GPS位置方法
|
水平精确度
|
垂直精确度
|
费用
|
耗电量
|
|
自动
|
需要
|
需要
|
不允许
|
不可用
|
|
自动
|
需要
|
需要
|
允许
|
低,一般或没有需求
|
|
第一次修正:协助
后续修正:自动
|
需要
|
需要
|
允许
|
高
|
|
自动
|
不需要
|
不需要
|
不允许
|
一般,高或没有需求
|
|
协助
|
不需要
|
不需要
|
允许
|
一般,或没有需求
|
|
第一次修正:协助
后续修正:自动
|
不需要
|
不需要
|
允许
|
高
|
|
蜂窝
|
不需要
|
不需要
|
允许
|
低
|
注:如果BlackBerry无线设备有一个卫星的障碍视图,GPS可能不可用。当设备在室内或被建筑物,树,以及密云围绕,这是有可能发生的。
获取BlackBerry设备的位置
第一次获取BlackBerry设备位置所花的时间依赖多方面的因素,例如选择的GPS模式,GPS的信号强度。在自动模式中,典型的至少需要2分钟,在协助模式。典型的是至少需要30秒。
如果GPS修正在10秒的请求内发生后,连续请求的平均响应时间为1到2秒,这取决位置条件。
注:如果你使用了一个可能花费用户资费的位置方法,不要经常查询BlackBerry设备的位置。
为了指定一个需要的响应事件,调用Criteaia.setPreferredReponseTime(),以毫秒为单位提供需要的时间。
获取BlackBerry设备的位置
调用LocationProvider.getLocation(int),提供一个以毫秒为单位的超时时间。
注:如果LocationProvider.getLocation(int)早事件线程调用,LocationExcept会抛出。
|
try {
// Specify -1 to have the implementation use its default timeout value
// for this provider.
Location location = provider.getLocation(-1);
}
catch (Exception e) {
// handle LocationException, InterruptedException, SecurityException
// and IllegalArgumentException
}
|
获取位置信息
Location类提供方法来获取位置信息,例如GPS坐标,以及路径。
注:RIM的实现不支持文本地址信息。结果,getAddressInfo()方法会空。
|
QualifiedCoordinates coordinates = location.getQualifiedCoordinates;
float speed = location.getSpeed();
float course = location.getCourse();
|
[1] [2] [3] [4] [5] 下一页