A-GPS,重置GPS和sendExtraCommand

nmw*_*223 6 gps android locationmanager location-provider

我正在寻找一些解释所有这些信息的指针.我有一个GPS利用应用程序(在一些旧的HTC Desire手机和谷歌Nexus 7上测试),我注意到 - 与其他一些应用程序一样 - GPS位置更新可能会"缓慢".似乎发生的事情是更新(1 /秒 - 这个应用程序需要良好的最新信息)通过OK,但通常lat/long值不会改变(当移动时).有趣的是,alt通常会这样做.

在阅读Stack Overflow之后,我发现使用以下代码"重置GPS"(使用权限android.permission.ACCESS_LOCATION_EXTRA_COMMANDS):

Bundle  extras = new Bundle();

extras.putBoolean("all", true);
locManager.sendExtraCommand("gps", "delete_aiding_data", extras);
Run Code Online (Sandbox Code Playgroud)

似乎有所帮助:在地点有一个最初的中断,然后真正的更新似乎更有用 - 直到它再次发生.

我还看了下面的代码

Bundle bundle = new Bundle();

locManager.sendExtraCommand("gps", "force_xtra_injection", bundle);
locManager.sendExtraCommand("gps", "force_time_injection", bundle);
Run Code Online (Sandbox Code Playgroud)

可用于更新A-GPS缓存信息以获得更快的锁定(短时间),但需要网络连接才能执行下载.我还没试过这个.

我遇到的问题是,我找不到任何关于这些命令是什么,它们做什么,何时应该和不应该使用的详细信息,为什么一切都发生等等.有一些,但它有点轶事.

我真正追求的是指向某个地方,我可以阅读有关背景的一切.如果锁定看起来稍长一点,我会非常高兴,因为它不会随着时间的推移而降低.

use*_*302 7

force_xtra_injection使gps软件向Xtra服务器询问辅助信息.Xtra是特定供应商支持的专有协议.我所知道的并没有真正详细描述,但我认为它确实包含了卫星的星历数据.

force_time_injection强制时间辅助到gps软件.时间必须是GPS格式.这是通过使用NTP确定GPS时间的合理准确值并将其提供给手机中的gps软件以用作建立初始位置的帮助来完成的.时间辅助仅用于第一个计算的位置.在第一个位置之后,GPS接收器知道的时间比您从外部软件界面提供的准确度要高得多.

星历表是每颗卫星的轨道模型.如果给它时间,它使用复杂的公式来指定卫星在太空中的位置.卫星通过它们的轨道以~3.8公里/秒的速度移动,因此尽可能准确地指定时间非常重要.

时间辅助并非真正用于计算位置,它用于确定(与星历或年历一起)您所在位置(或最后已知位置)的卫星是什么,以及该卫星的近似多普勒值是多少.这使得GPS接收器能够缩小搜索参数,并且更有可能以低信号强度找到卫星并且比没有时间更快地找到卫星.

如果lat/long值没有变化,原因有以下几点:

1)该位置实际上不是GPS位置,它基于WiFi数据,cellID数据或其他来源.您可以查看位置不确定性,以了解使用哪个源.如果不确定性是数百或数千米,则基于小区ID.如果第一个位置弹出非常快并且您有可怕的信号条件(您在信号被阻挡的地方,但仍然可以获得20或30米的精度),那么您可能正在使用WiFi定位.

2)GPS软件是夹紧位置报告.这是大多数人更喜欢改善用户体验的东西.没有人想坐在红绿灯处,看到他们的GPS位置在他们不开车时四处闲逛.如果夹紧,您可以开始移动,夹具应该释放并在短时间后开始跟踪您的位置.

3)你的信号状况非常差,GPS位置正在更新,但发生的速度非常慢.

从GPS获得好位置的最佳方法是在良好的信号条件下连接到互联网,这样您就可以从某个服务器获得辅助数据(星历,位置和当前GPS时间).

  • 是的,这是事实.手机中的一些深色使用碳纤维或碳粉来获得所需的色调.如果足够,可能会导致GPS出现问题.如果案件是第三方售后市场项目,则更有可能.此外,我已经看到一些油漆颜色会影响GPS性能.有些工艺使用金属薄片使涂料看起来正确.太多的金属,你有同样的问题.这通常是在颜色不好之前通过测试来捕获的. (2认同)