zoukankan      html  css  js  c++  java
  • 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(热启动):有星历信息,大致的时间和位置可知,通常比温启动的时间和位置信息精确。这种情况发生在本次定位与上次定位的时间间隔小于两个小时时。

    sendExtraCommand

  • 相关阅读:
    新年来了,却似乎没有新年的迹象和心情
    XHTC最新进展
    有件事很是头疼
    完善中的HTML版ProcessBuilder
    20041114 Bindows
    想不到这么快就申请成功了,多年未曾体会的激动仿佛又重返我身了
    有人需要这样的HTML Menu组件吗?
    告知所有需要XHTC和ProcessBuilder的朋友
    醉里插花花莫笑,可怜人似春将老
    Flex创建一个UI component的全过程
  • 原文地址:https://www.cnblogs.com/l2rf/p/5113326.html
Copyright © 2011-2022 走看看