第一、首先是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.org计划(一个全球性的利用空置服务器提供免费时间服务的项目,目前在全球拥有1400多台服务器。且根据地域提供服务器池功能。)的北美服务器(north-america.pool.ntp.org)。这就意味着,所用的手机,不论所处的地域和服务器实际的情况,用GPS的时候都会去连接那个地址。这种不合理的情况,造成很多非北美的用户GPS定位缓慢。知道了以上原理以后我们就可以着手修改自己的gps参数来提高定位效率了。

 

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

第三、修改gps.conf的前提条件
1.你必须ROOT
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.org                              差时同步服务器
XTRA_SERVER_1=http://xtra1.gpsonextra.net/xtra.bin         这三项不变,推测是卫星的相关信息
XTRA_SERVER_2=http://xtra2.gpsonextra.net/xtra.bin
XTRA_SERVER_3=http://xtra3.gpsonextra.net/xtra.bin
SUPL_HOST=supl.google.com                                                        定位服务器
SUPL_PORT=7276                                                                              端口
SUPL_TLS_HOST=lsb.geo.t-mobile.com
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.org/en/看看中国亚洲北美的活动的服务器,中国的肯定要选,亚洲的和北美的可以选几个,选择多少有什么效果还没进一步验证,初步验证中国的三个貌似很有效果。可以多填几个,


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


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


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