2012年4月17日星期二

利用ditu.google.com制作出行地图

        ditu.google.com的特点是在于卫星图片上有道路标记,实质是道路图层和卫星照片图层的组合。制作离线地图软件是基于Java的Mobile Atlas Creator(MAC),MAC不带google这类的商业地图的地图源,但允许用户自定义,帮助文件README.HTM(位于安装目录)中有详细介绍。制作多图层的地图源可以参考模板:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customMultiLayerMapSource>
    <name>Custom OSM Mapnik with Hills (Ger)</name>
    <tileType>PNG</tileType>
    <layers>
        <customMapSource>
            <name>Custom OSM Mapnik</name>
            <minZoom>0</minZoom>
            <maxZoom>18</maxZoom>
            <tileType>PNG</tileType>
            <tileUpdate>None</tileUpdate>
            <url>http://tile.openstreetmap.org/{$z}/{$x}/{$y}.png</url>
            <backgroundColor>#000000</backgroundColor>
        </customMapSource>
        <customMapSource>
            <name>Custom transparent hillshade</name>
            <minZoom>0</minZoom>
            <maxZoom>18</maxZoom>
            <tileType>PNG</tileType>
            <tileUpdate>None</tileUpdate>
            <url>http://www.wanderreitkarte.de/hills/{$z}/{$x}/{$y}.png</url>
        </customMapSource>
    </layers>
</customMultiLayerMapSource>
<url>…</url>表示地图源路径,路径可以通过FireFox浏览器访问ditu.google.com得到,其中需要借助FireBug插件,效果如图所示:
图中红圈为地图源地址,如路径源地址:
http://mt1.google.cn/vt/imgtp=png32&lyrs=h@176000000&hl=zh-CN&gl=cn&src=app&x=419&y=195&z=9&s=Gali
和卫星照片源地址:
http://mt3.google.cn/vt/lyrs=s@108&hl=zh-CN&gl=cn&src=app&x=419&y=194&z=9&s=Gal
此时将x、y和z的值替换为{$x}、{$y}和{$z}并将地址中的“&”改为符合xml规范的“&amp;”否则打开MAC时会出如下错误:
        将获得的地图源地址带入模板并进行一定的完善可得到如下地图源文件代码:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customMultiLayerMapSource>
    <name>Google Ditu</name>
    <tileType>JPG</tileType>
    <layers>
        <customMapSource>
        <name>Satellite</name>
        <minZoom>0</minZoom>
        <maxZoom>19</maxZoom>
        <tileType>jpg</tileType>
        <tileUpdate>IfNoneMatch</tileUpdate>
        <url>http://{$serverpart}.google.cn/vt/lyrs=s@108&amp;gl=cn&amp;src=app&amp;host=ditu.google.com&amp;x={$x}&amp;y={$y}&amp;z={$z}</url>
        <backgroundColor>#000000</backgroundColor>
            <serverParts>mt0 mt1 mt2 mt3</serverParts>
        </customMapSource>
        <customMapSource>
            <name>Path</name>
            <minZoom>0</minZoom>
            <maxZoom>19</maxZoom>
            <tileType>PNG</tileType>
            <tileUpdate>IfNoneMatch</tileUpdate>
            <url>http://{$serverpart}.google.cn/vt/imgtp=png32&amp;lyrs=h@176000000&amp;hl=zh-CN&amp;gl=cn&amp;src=app&amp;x={$x}&amp;y={$y}&amp;z={$z}&amp;s=Galileo</url>
            <backgroundColor>#000000</backgroundColor>
            <serverParts>mt0 mt1 mt2 mt3</serverParts>
        </customMapSource>
    </layers>
</customMultiLayerMapSource>
各部分具体含义请参见README.HTM和MAC的Wiki,需要说明的是在利用FireBug获取Google地图源时需要关闭Google地图的MapsGL特性,否则通过路径源地址将获得到路径的矢量数据而非路径图片。
地图源文件存放在安装路径下的mapsources文件夹中,此类地图源的扩展名为xml。在软件中选用自制的地图源便可下载含路径的卫星地图。
        软件使用请参阅相关教程。

2012年4月7日星期六

Defy MB525 ME525 GPS 搜星 解决

    如果你已经看过很多帖子,参考上面的办法但依旧搜不到星或者只能搜到一两颗但根本不能定位的话就来看看我的文字吧。

    首先我回答一下DEFY是否有GPS这个问题,答案肯定是有,要不然我就别往下写了是吧?DEFY的GPS芯片是Broadcom公司的BCM4750,通过IIC总线与CPU OMAP3630进行通信。关于DEFY只能用基站定位的谣言显然荒谬。网上有很多关于如何配置GPS相关文件的帖子,咱们都看的太多了,我也不想多说什么了,那些基本上都是尝试,缺乏根本的东西,但是有个帖子写的不错,推荐大家看一下http://forum.xda-developers.com/showthread.php?t=1458285

    其次再说点儿预备知识,免得犯低级错误。无辅助GPS搜星需要3-5分钟的时间,地点越空旷越好,AGPS搜星时间为几秒,但是也需要一个能让手机看见天的地方。GPS测试软件推荐用GPSTEST,可以从Play商店直接下载,这个软件需要设置屏幕常亮,要不然屏幕一黑就不搜星了,至于费电的问题,解决办法就是降低屏幕亮度。

    下面来说说我的问题,把GPS失灵分为两种情况,第一种是搜不到任何星,第二种是搜到一两颗星,信号很弱根本连接不上。
    第一种问题由以下四个文件引起:
/system/bin/brcm_guci_drv——GPS芯片的驱动
/system/etc/gpsconfig.xml——GPS芯片驱动的配置文件
/system/lib/hw/gps.jordan.so——定位功能运行库
/system/etc/location.cfg——定位功能运行库的配置文件
由于brcm_guci_drv和gps.jordan.so自身包含配置文件内容,所以改外部文件gpsconfig.xml或location.cfg的作用并不大。补充一下/system/etc和/etc是同一个目录,这是linux的一种快捷方式。想解决第一种问题,就是通过刷机或者替换的方式修改这四个文件,使你的GPS可以正常工作,GPS正常工作的表现是/data/location目录下有正确的文件生成,下面说一下这个目录下的文件:
/data/location/gpscmd
/data/location/location.cfg
/data/location/gpsdata.nvs
/data/location/LEARN_STORE.BIN
gpscmd是BCM4750芯片的通道文件,也就是说通过对这个文件的“读”或“写”操作实现对GPS模块进行数据的发送与接收,这个文件误删除以后在下次开机会自动生成;location.cfg来自/system/etc/location.cfg,记录当前定位功能的一些配置信息;gpsdata.nvs记录着星历信息,可以通过文本文件查看器查看内容,如果里面有大量数据说明你的星历下载没有问题;LEARN_STORE.BIN这个文件只有在正确定位后才会生成,它记录着定位信息,如果没有这个文件,说明你还没有成功定位过。删除gpsdata.nvs、LEARN_STORE.BIN和location.cfg可以清空gps定位的缓存。第一个问题解决与否可以通过观察这四个文件是否生成正确,只要固件对,gps总是能收到卫星信号的。BCM4750芯片没那么容易坏,除非是第二种问题。
    第二种问题:第一个问题扯的有点儿远,那么第二个问题就要从远方扯回来。如果你的ME525不是从正规渠道买来的,那么它就有大于90%的可能性为翻新机,尤其是淘宝上比实体店便宜100块钱以上的。事情是这样的,国外手机便宜,用户更换的频率很高,这就有了大量的二手手机,这些手机回收后被拆解,并将主板当电子垃圾运到国内翻新,因为国内可以生产除了主板以外的所有配件,同时只运主板运费和关税都很低(有些时候也有没有电池和后盖的整机)。这些主板在国内工厂组装为新机器后流入市场,便是我们在淘宝上以较为便宜的价格拿到的机器。不要自信你的原始发票、入网许可和三码合一,这些都是可以仿造的,不要小看这个产业链,当然也不要轻信客服鉴定,客服鉴定的时候只是根据你的IMEI查你的机器是否在保,在保便说是行货,当真正需要保修时,他们拆开你的机器发现不对后会告诉你,你的机器是翻新的,不能保修。所以想鉴定是否为正品的方法只有拆开机器看,商家知道买家舍不得拆新买的手机,而且并不是所有人都有这个手艺和工具,就算你真敢拆开看,商家大不了就说他们也是从别家拿货同是受害者,顶多垫个运费帮你退货,你还给不了差评。所以商家都会很有自信告诉你他的东西是正品,信不信就由你了。第二种问题的发生是基于翻新机器,所以当你的DEFY搜星信号不好,通常只能搜到一颗时,你也可以怀疑一下自己的机器。拆离后被运输的主板通常得不到良好的保护,在运输过程中边角和突起都容易发生磕碰刮拽,而GPS天线偏偏在这么一个地方:

    图中红圈里面是主板上GPS天线的触点,与黄圈中的GPS天线连接,这个触点在主板的边缘,由薄铁皮制成,受到磕碰挤压后极其容易变形,变形后的触点不能与GPS天线接触,造成GPS信号弱且不能定位,此时只要用镊子将其掰正便可修复。拆机方法可以自行google,有视频

    这是触点的斜视与拆出来的GPS天线。这些都弄好后的出星时间在4秒左右,6秒的时候就能定位了。

    最后是在夜幕中的DEFY,MIUI系统。



时代通SDT-999S的互通之出厂频率与频道

    手头有LT 6100 PLUS和SDT-999S两部对讲机,想实现互通就需要使用一致的频率,LT 6100 PLUS可以设置频率,而SDT-999S的频率是随频道而固定的,具体数值不曾知道。想得到一部对讲机频道和频率的对应关系基本上有四种方式,网上搜、测试、扫描和读频:SDT-999S频率网上没找到,频率测试仪手头没有,扫描这个办法很愚蠢,所以只能读频,而读频也是最直观的方法。有热情淘宝卖家告诉我SDT-999S与建伍TK-3207方案相同,其写频软件为KPG-87D,对应写频线为KEN-2,KEN-2对讲机接头如下图:

    如果图省事儿Vout和电阻R1可以不要,也就是GND接2.5mm插头的末端,Txd接2.5mm插头中间,Rxd接3.5mm插头末端。这个线的通讯电平是5V TTL电平,即+5v表示1,0V表示0,如果使用计算机的串口,需要将串口的电平通过MAX3232之类的芯片转换为5V TTL电平,或者使用支持5V TTL的USB转串口,为什么强调5V,是因为LT 6100 PLUS和SDT-S999的写频线相同,LT 6100 PLUS支持3.3V TTL电平写频,我自制的3.3V写频线连接LT 6100 PLUS正常,却无论如何也不能连接999s,我便以为是软件配置错误,结果浪费了很多时间。
读出来的频率如下图所示:

为了预防图片不能正常打开,我抄一遍:
CH01 432.55000
CH02 437.27500
CH03 442.22500
CH04 455.20000
CH05 440.22500
CH06 400.17500
CH07 435.10000
CH08 469.98750
CH09 435.15000
CH10 436.27500
CH11 445.02500
CH12 446.27500
CH13 447.55000
CH14 450.02500
CH15 451.27500
CH16 455.67500
    本来这点儿事儿没想写出来,毕竟使用SDT-999S的人不在多数,但是偶然间发现SDT-999S的默认频率能与很多对讲机互通,所以列出频率,方便大家尝试。