admin管理员组

文章数量:1607988

来源:http://bbs.gfan/viewthread.php?tid=564753

下面说的有点复杂,如果mytouch4g的朋友想试试效果,直接将gps.conf文件改成如下内容,然后看定位速度(不是搜星速度,我的搜星速度一直是10秒以内的)有没有提升,反馈一下大家能一起验证一下(我的是gmaps5.0室外信号良好不开gprs,没有wifi情况下,从7分钟提高到2分钟,最好先备份,对硬件无任何风险如何修改下文中有介绍


NTP_SERVER=2.pool.ntp

NTP_SERVER=north-america.pool.ntp

NTP_SERVER=2.asia.pool.ntp

NTP_SERVER=0.asia.pool.ntp

XTRA_SERVER_1=http://xtra1.gpsonextra/xtra.bin
       XTRA_SERVER_2=http://xtra2.gpsonextra/xtra.bin

XTRA_SERVER_3=http://xtra3.gpsonextra/xtra.bin

#SUPL_HOST=supl.google
       SUPL_HOST=supl

SUPL_PORT=7276


前言:

我的mytouch4g装的就是破解版的gmaps5.0,安装详情可参考我另一贴http://bbs.gfan/viewthread.php?tid=414093&extra=&page=1
但是有个问题就是定位速度慢,我的系统英文原版的,早晚上班路上测试基本在7分钟左右才能定位,但是用搜星软件GPS智慧搜星 ulysee gizmos v1.6.1)搜星速度很快几乎30秒内就能搜到89颗星。而且室内窗边基本就能搜到12颗星而且不能定位。 更改之后定位速度很快,不到2分钟,而且卫星数量也增加了2个左右,室内距离封闭阳台3米的地方平均能4克星。5楼多层。定位精度有所下降,但不大,关屏幕后再开屏幕定位时间约为20-30秒左右。 导航正在测试中,貌似定位于导航不冲突。 经过网上前辈的种种经验整理汇聚此帖,对手机GPS设备的定位原理   

第一、首先是GPS定位原理: GPS 是用什么来确定你和卫星的距离的呢? 公式:距离= 速度* 时间
无线电波的速度是恒定的,那计算时间就可以得到距离了。GPS 卫星上载有原子钟,并不停地发送含有时间信息的代码。GPS 接收器(芯片)就是接收这些代码,并转译出时间信息。然后用本地的时间减去接收到的时间数据,根据无线电波的速度来确定你和卫星的距离。由于电波信号的传播速度很快,所以GPS 的时间信号是精准到纳秒级的。这就对接收器的时间精度提出了很高的要求。专业级的系统往往要附带有原子钟,至少也需要单独的时间服务器。一般的导航仪也都带有连续运行的计时芯片。 手机受到体积和使用上的限制,所以不可能拥有独立的计时系统。所以谷歌就采取了一个取巧的办法。当系统请求GPS 定位时,从网上的时间服务器(NTP )上获取时间。用这个时间来计算你和卫星的距离。你可以试验一下,当你的手机连接无线网络(或者是用USB 连接网络)的时候,GPS 定位是非常迅速的。这是因为,有快速的网络可以迅速更新NTP 的数据。 这样我们就可以来考虑如何改善GPS 定位的工作情况了。
一、确保你可用的通信网络。当你在使用GPS 的时候,需要进行同步时间的工作。初次同步后,每1 个小时会更新一次数据,如果更新失败,5 分钟后会再次更新。所以,为了确保你定位精确,请在使用GPS 的时候,确保手机有可用的通信网络(当然,如果你对精度要求不是很高的话,只要保证初次同步时可用就可以了)。

很多朋友可能会问,如果没有移动或者wifi信号还能定位吗?

答案是肯定的,我自己测试过,也问过htc 的客服工程师,个人推测原因如下:
一方面手机同时的GPS 芯片能同时接受卫星信号和差时服务器的信号,然后通过内部计算时间,计算位置信息,但是差时服务器NTP 貌似应该不能发射无线信号啊,那是网络服务器,所以很可能就是GPS 芯片能直接接受由NTP 服务器通过移动网络或其他什么介质传送出来的时钟信号。
再有就是GPS 不通过差时服务器,直接通过卫星信息能自动校时,不过时间慢点而已。以上为个人推测还请高手指正。 二、加快NTP 的更新速度。我的mytouch4g 系统的默认NTP 地址是pool.ntp 计划(一个全球性的利用空置服务器提供免费时间服务的项目,目前在全球拥有1400 多台服务器。且根据地域提供服务器池功能。)的北美服务器( north-america.pool.ntp) 。这就意味着,所用的手机,不论所处的地域和服务器实际的情况,用GPS 的时候都会去连接那个地址。这种不合理的情况,造成很多非北美的用户GPS 定位缓慢。 知道了以上原理以后我们就可以着手修改自己的gps参数来提高定位效率了。       


二、修改的原理
基于上面的介绍分析,可以通过如下的方面来提高定位的精度和速度。 1.手机所在地点的卫星信号(是指手机裸露在空旷室外,卫星信号强度可以用搜星软件来测试,我在青岛,坐车在室外基本能稳定在11颗卫星,10颗能导航的水平,更改gps.conf之后的数据,之前是9颗左右,稳定定位8颗) 2.手机信号 3.手机的定位软件,本人使用的是gmap5.0,破解版可导航的。 4.gps参数,含在gps.conf文件内 由于前3条都是自然条件是不能改变的,所以我们只能通过设置gps.conf参数来提高了,
开始正题:

第三、修改gps.conf的前提条件
1.你必须ROO T
2.装个ROOT管理器例如rootexplorer
3.先备份gps.conf文件,将文件复制到smcard(不要备份在system文件夹下,否则重启的时候有可能被自动删除的)
4.因为有ROOT权限,找到System/etc/gps.conf 这个文件,先更改权限为可写,然后长按gps.conf这个文件,选择文本编辑器打开,就可以编辑了,这个时候会提示自动备份,已经有备份可以不用管了。


第四、修改gps.conf
我的Gps.conf文件的原文如下:
NTP_SERVER=north-america.pool.ntp                               差时同步服务器
XTRA_SERVER_1=http://xtra1.gpsonextra/xtra.bin         这三项不变,推测是卫星的相关信息
XTRA_SERVER_2=http://xtra2.gpsonextra/xtra.bin
XTRA_SERVER_3=http://xtra3.gpsonextra/xtra.bin
SUPL_HOST=supl.google                                                         定位服务器
SUPL_PORT=7276                                                                               端口
SUPL_TLS_HOST=lsb.geo.t-mobile
SUPL_TLS_HOST_1=/etc/T-Mobile_USA_Root_CA.der
SUPL_TLS_HOST_2=/etc/T-Mobile_USA_Intermediate_CA.der
SUPL_TLS_HOST_3=/etc/T-Mobile_USA_Issure_CA_01.der
SUPL_TLS_HOST_4=/etc/T-Mobile_USA_Issure_CA_02.der
蓝色部分为T-mobile的什么信息不清楚,可能是T-mobile其他功能使用的,我的国内用不着的功能都删除了,所以没影响,其他系统应该没有这些信息。


我们重点能修改红色粗体的三项信息, 最关键的差时服务器,有很多更改差时服务器的帖子,现在告诉大家如何选择最有效的,到下面这个网址, http://www.pool.ntp/en/ 看看中国亚洲北美的活动的服务器,中国的肯定要选,亚洲的和北美的可以选几个,选择多少有什么效果还没进一步验证,初步验证中国的三个貌似很有效果。可以多填几个,


服务器是实时变动的哦!!


2011 年1月21日星期五的活动服务器情况 亚洲的:
server 0.asia.pool.ntp
server 1.asia.pool.ntp
server 2.asia.pool.ntp
server 3.asia.pool.ntp
中国的:
server 1.pool.ntp
server 3.asia.pool.ntp
server 2.asia.pool.ntp
美国的:
server 0.us.pool.ntp
server 1.us.pool.ntp
server 2.us.pool.ntp
server 3.us.pool.ntp
其他的大家自己去网站看吧,


其次是定位服务器,貌似只有google的和nokia的两个服务器,具体区别还没测试,先用google的吧还挺不错的. 端口,7275,和7276不同的手机默认这两个的都有,大家根据实际情况自己试吧.
再有就是下面的t-mobile信息,可能只有我的t-mobile定制机有,我当时因为备份被系统删除所以没有留下记录,有好几行关于t-mobile的服务器,不知道是什么功能的,我感觉删除那些t-mobile的信息之后定位速度有了很大提升,但是精度差了一点,不过影响不大,还有就是更改之后关屏幕在开屏幕的时候貌似要重新定位,需要2 3十秒才能重新定位,以前的时候可能几秒就定位了,别的还都在实验过程中。


还是写在前面吧,后面的不容易看,继续感谢5楼的朋友啊,吃不吃的问题顺嘴一说,绝无贬义,已删除.难得有个朋友有兴趣探讨这个问题啊,呵呵,看了你的文章害得我又学习了半天,有了进一步的了解,下面接着说说我的新认识.


今天先到这,明天继续!!  呵呵 越来越有意思了,你说的gps定位的原理没问题,但是实际使用中我认为会有一些辅助手段来提高定位的,gps.conf参数里的信息我还没彻底研究明白,资源也越来越难找了,先休息了,





首先非常感谢5楼的朋友的纠错,我本人非这方面的专业人士,完全是google所得,另外对gmaps5.0钟爱有加,但其定位太慢,网上反映定位慢的有很多,但也没有这方面的专业的帖子,所以才有此兴趣研究一下,也希望有不对的地方大家指出共同探讨,因为我现在其中也有很多疑惑没有解开!


下面就你的看法谈谈我所得的认识:

1、gps定位时不需要ntp服务器。gps取的信号里面就含有时间信息。听说过ntp服务器都是用gps来获取授时信息的,没听说过反过来gps要从ntp获取时间信息的。而且如lz所言,gps定位的时间差分都在几个纳秒之间,你ping一个ntp服务器的数据包来回的时差至少要毫秒级别,差千倍,自己想想是否靠谱。gps.conf里面的ntp server是其他系统服务在用。ntp服务器是从gps来获取授时信息很有可能,这样可以保证NTP服务器的时间与卫星时间同步,但是与GPS的时间(即手机时间)是有误差的(可能是纳秒级的,1纳秒=10的-9次方秒),所以GPS设备必须要有自己的或者说独立的非卫星的时间信息,才能与卫星的时间信号作出时间差,来计算位置,专业的gps都是自带时钟系统的,定位的精度跟这个时钟系统也有很大关系,我分析应该就是这样,卫星信号在带定位信号和时间,然后GPS获得第三方的准确时钟信息,二者做差计算出时差,然后速度一定计算距离,计算位置。至于ntp服务器传输给手机的时钟信号里面肯定是带修正的,应该能修正信号传输的这段时间,否则gps不可能以纳秒的精度使用,这个应该很容易实现的。有不对的地方还请指出 :)
2、照你的说法,不连网络的情况下就无法定位,因为不通ntp服务器。这是个常识性错误。这个大家可以很简单地测试一下,开gps,关wifi、gprs/3g,开能否定位。答案是肯定的。这条楼主没有仔细看我的帖子,我说的也是肯定的
3、你文中那几个gps.conf里面的配置信息基本上是A-GPS来用的,这个必须C网手机才支持。这个很有可能,但是没有实践过。我今天也在考虑,我把gps.conf里面的后缀名信息都改掉之后还是能定位和导航,但是更改tnp服务器和删除我gps.conf信息里面的下面的t-mobile信息,我的定位速度确实大幅度提升。从以前的7分钟提升到现在的2分钟左右,因为很关注定位的时间,所以心里比较肯定。
4、即使用到了gps.conf里面的信息,测试了这个文件里面原生的几个地址,能ping通,耗时几百毫秒。为了几百毫秒的提升而修改一个系统底层文件,没有任何的必要。修改文件的必要性要看自己的目的了,为了提高有一些风险也是值得的,android的精神即是如此吗,还有能ping通几百毫秒并不意味着定位时间也是差这几百毫秒:)




本文标签: 原理速度文件搜星教程