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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步