手机导航-GPS搜星速度优化(android手机)
小三提回来4个月了,关于导航的问题曾经纠结过很久:弄个一体机吧,贵,安装还麻烦,更新地图也麻烦(其实主要是贵。。。),家里装宽带电信送了华为C8812跟华为C8650,一直都是拿这两个手机当导航用,但是冷启动搜星速度慢,信号也不太稳定,经常高架下面丢星。
一直想优化一下手机的搜星速度,然后关注的方向一下是GPS天线这个方向,但是哥们属于理论派,动手能力差(电烙铁用得太烂),一直没什么动作。。。然后心想手机应该是有带AGPS功能的啊,为啥作用不大呢。。。
昨晚心血来潮,把手里面的手机跟PAD,跑到阳台上逐个测试了一下,参测机型如下:
1、华为C8812
2、华为C8650
3、小米M1电信版
4、联想乐Phone
5、联想乐PAD A1
对比结果:小米搜星快,基本可以做到秒定,凯立德12颗星,华为的两款手机都不如小米,大约需要10分钟才能定位,凯立德7颗星左右,乐Phone从头到尾一颗星都搜不到,联想乐PAD A1能搜到1颗星(等于没有)。
查了一下手机GPS芯片的信息,发现基本上这几款手机的GPS处理芯片都是集成在CPU里面的,并且这四款手机都是高通的CPU,带GPSOne功能,然后联想乐PAD A1用的是TI OMAP 3622,经确认应该不带AGPS。
在这里插拔一下AGPS的工作原理,我就不百度了,按自己理解的来大概讲一下吧,首先讲一下GPS,GPS在定位时,会根据搜到的卫星计算卫星的轨迹,生成一堆卫星的运行轨迹,根据这一堆卫星来进行定位,这一堆卫生的运行轨迹叫星历,GPS会在本地保存最后一次定位的星历,据说会保存4个小时(这个最后一次定位的概念是:小明某年某月某日某时某地,用完GPS导航后,关闭GPS导航,记下来的星历就是该年该月该日该时该地天上的卫星的运行轨迹)。如果在4小时内原地再次开启GPS(也就是热启动),那么GPS可以利用保存下来的星历迅速定位(因为知道那一堆卫星大概在什么位置了啊,重点在那一片地方找呗)。好,到了这里其实就该AGPS出场了,AGPS干嘛用的?当GPS冷启动时,这不没有星历么,或者是以前保存的星历失效了么,AGPS会根据手机信号进行基站模糊定位,然后把定位到的位置信息发送给AGPS服务器,AGPS服务器再把手机信号定位地的星历发送给手机,这下GPS就有星历了,就从冷启动成功升级为热启动了,搜星定位就快了。。。妹的,大概讲一下就讲了这么多字。。。好,下面继续。。。
这几款手机的CPU跟GPSOne信息如下:
1、华为C8812 高通MSM7627A GPSOne7代
2、华为C8650 高通MSM7627 GPSOne7代
3、小米M1 高通MSM8660 GPSOne8代
4、联想乐Phone 高通QSD8250 GPSOne7代
其中华为C8812、C8650以及联想乐Phone的CPU都属于高通骁龙一代,小米M1的CPU属于高通骁龙三代。
于是坐到马桶上思考了一下:既然都有GPSOne功能,那么即使一个是7代,一个是8代,应该也不会差距这么大吧。于是继续百度。。。终于,找到了关键的东西:gps.conf
先贴一下我现在已经优化过的gps.conf的内容:
NTP_SERVER=cn.pool.ntp.org
NTP_SERVER=time.gpsonextra.net
XTRA_SERVER_1=http://xtra1.gpsonextra.net/xtra2.bin
XTRA_SERVER_2=http://xtra2.gpsonextra.net/xtra2.bin
XTRA_SERVER_3=http://xtra3.gpsonextra.net/xtra2.bin
SUPL_HOST=suplcn.sirf.com
SUPL_PORT=7275
从上往下:
NTP_SERVER——时间同步服务器
XTRA_SERVER——妹的,昨晚的网站看过了找不到链接,这个不记得了,反正这三行都是默认值,应该是高通提供的。
SUPL_HOST——AGPS服务器的域名,也可以直接填IP地址
SUPL_PORT——AGPS服务器的服务端口
关键来了啊,俺看了一下两台华为手机的gps.conf内容,SUPL_HOST跟SUPL_PORT都是未配置的,啥叫未配置?就是在gps.conf里面写的是#SUPL_HOST跟#SUPL_PORT,对编程有了解的车友应该知道,这尼马#号就是注释符啊,不生效啊,也就是华为手机的gps.conf中没有AGPS服务器的相关配置。
然后联想乐Phone里面的SUPL_HOST配的是google的一个服务器,俺ping了一下,ping不通。。。也就是说,这玩意也没生效。
找到问题原因不就好办了么,俺直接刷刷刷把华为跟联想手机的gps.conf全换成优化后的conf文件,重启,再次测试。。。
测试结果:四台手机均在30秒内完成了定位,其中联想乐Phone之前一直搜不到星,再次测试时30秒内直接12星。。。
终于解决了。。。
好,这都是昨晚的事。。。今天下午出门,拿着华为C8812试了一下,冷启动1分钟左右凯立德定位成功,全程保持在7-8颗星左右。。。(隔了一晚上了,必须是冷启动了)
其实,看到这,android系统玩得熟的车友应该已经在动手了。。。俺也再哆嗦一下如何去修改gps.conf吧:
1、你得先root。。。
2、可以直接新建一个文本文件,把上面那一段gps.conf的内容复制粘贴进去,然后把这个文本文件改名为gps.conf
3、把gps.conf导到手机SD卡里边去
4、通过RE管理器,用这个gps.conf文件替换掉手机系统里面原来的gps.conf文件(路径是/system/etc)
5、重启手机,让新的gps.conf生效
呃,最后说一下,本帖的优化方式仅适用于加速GPS定位,对于GPS信号不稳定,丢星等还是没有用的,毕竟手机的GPS天线是内置的,屁大点天线,加上整车的金属框,加上前挡玻璃,加上前挡膜,这信号,你们懂的。。。能有7-8颗星,就不错了,不过稍微过个下穿,过个隧道,跑在高架桥下(嗯,反正是有遮挡物啦),信号断一下是肯定的。。。
如果动手能力强,可以试试外接GPS天线。。。俺等教程。。。
|