android GPS 冷启动

 转自  http://www.cnblogs.com/l2rf/p/5113326.html  

GpsLocationProvider中的sendExtraCommand方法


Android系统源码中GpsLocationProvider类中包含sendExtraCommand方法,代码如下

 

复制代码
 1  @Override
 2     public boolean sendExtraCommand(String command, Bundle extras) {
 3 
 4         long identity = Binder.clearCallingIdentity();
 5         boolean result = false;
 6 
 7         if ("delete_aiding_data".equals(command)) {
 8             result = deleteAidingData(extras);
 9         } else if ("force_time_injection".equals(command)) {
10             sendMessage(INJECT_NTP_TIME, 0, null);
11             result = true;
12         } else if ("force_xtra_injection".equals(command)) {
13             if (mSupportsXtra) {
14                 xtraDownloadRequest();
15                 result = true;
16             }
17         } else {
18             Log.w(TAG, "sendExtraCommand: unknown command " + command);
19         }
20 
21         Binder.restoreCallingIdentity(identity);
22         return result;
23     }
复制代码

 

 

方法有三个参数:一个字符串用于指定位置提供者、一个附加的命令以及一个提供命令执行信息的Bundle 对象。

 

GPS 位置提供者支持以下三个附加命令:

delete_aiding_data

force_time_injection

force_extra_injection

delete_aiding_data 命令用于删除先前已下载的A-GPS 数据。这是唯一使用Bundle 参数的附加命令,Bundle 用于控制要删除的A-GPS 数据。Bundle 可以包含布尔型的键值对来指明要移除的数据。可用的键字符串如下所示:

 

ephemeris

almanac

position

time

iono

utc

health

svdir

scsteer

sadata

rti

celldb-info

all

传递一个空的Bundle 会删除所有的A-GPS 数据。

 

force_time_injection 命令从配置的NTP 服务器检索当前时间并进行更新,用来进行GPS 计算。

 

force_extra_injection 命令从一个配置服务器中下载A-GPS 数据,这些数据将被GPS位置提供者使用。

 

使用示例

1 LocationManager locationmanager = (LocationManager)context.getSystemService("location");  
2         Bundle bundle = new Bundle();  
3         locationmanager.sendExtraCommand("gps", "force_xtra_injection", bundle); //快速定位command  
4         locationmanager.sendExtraCommand("gps", "force_time_injection", bundle);  
5         locationmanager.sendExtraCommand("gps", "delete_aiding_data", bundle); //冷启动 

 

 

相关知识

 

星历(Ephemeris)与历书(Almanac)

   为了缩短卫星锁定时间,GPS接收机需利用历书、当地位置的时间来预报卫星运行状态。

   历书与星历都是表示卫星运行的参数。历书包括全部卫星的大概位置,用于卫星预报;星历只是当前接收机观测到的卫星的精确位置,用于定位。

   1)cold(冷启动):没有之前的位置信息,没有星历,没有时间的估算。这种情况发生在初次使用定位时或电池没电导致星历丢失时。关机状态下将接收机移动200公里以上距离。

   2)warm(温启动):有历书信息,大致的位置和时间可知,没有星历信息。这种情况发生在本次定位距离上次超过两个小时时。

   3)hot(热启动):有星历信息,大致的时间和位置可知,通常比温启动的时间和位置信息精确。这种情况发生在本次定位与上次定位的时间间隔小于两个小时时。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值