小胖熊酷数码GPS论坛 www.sosaw.com

 找回密码
 注册register
查看: 1176|回复: 36

[电子狗] 给安卓版的DSA增加速度补偿功能

[复制链接]
发表于 2018-10-8 11:44 | 显示全部楼层 |阅读模式
分享到:
综合发帖模板
发帖目的: 功能讨论
地图品牌: 电子狗 » DSA
测试机型: -
适用系统(可多选): Android2.0/2.2 Android2.3 Android3.0 Android4.0 
地图国别: -
支持分辨率(可多选):  
资源分类(可多选): 改进主程序 
本帖最后由 开在边缘 于 2018-10-8 18:47 编辑

WinCE版的DSA是有速度补偿功能的,可以调整DSA的速度,下面我们就给安卓版的DSA也加上这个功能

先用ApkToolBox反编译DSA.apk,然后打开smali\com\dsa\y.smali这个文件

查找getSpeed,然后如下图,红框中的代码是我们需要添加进去的


代码说明:
    调用安卓系统提供的getSpeed函数,获取当前的GPS速度
    invoke-virtual {p1}, Landroid/location/Location;->getSpeed()F

    将之前获取的GPS速度放到v0寄存器
    move-result v0

    将v0寄存器中的GPS速度,从单精度数值转换为双精度数值,然后重新放回v0寄存器
    float-to-double v0, v0

    定义一个数值3.6放到v2寄存器
    const-wide v2, 0x400ccccccccccccdL    # 3.6

    将v0寄存器中的GPS速度,乘以v2寄存器中的3.6,然后重新放回v0寄存器
    因为getSpeed函数,返回的GPS速度单位是米/秒,乘以3.6后,转换为公里/小时
    mul-double/2addr v0, v2

    将v0寄存器中的GPS速度,从双精度数值转换为整数,然后放到v3寄存器
    double-to-int v3, v0

    原程序到此为止,v3寄存器中就是GPS速度了,接下来是我们添加的速度补偿程序

    定义一个数值20(20的十六进制就是14)放到v5寄存器
    这是低速判断数值,你可以自行更改,记得是十六进制
    const v5, 0x14

    将v3寄存器中的GPS速度,和v5寄存器中的低速判断数值20进行比较
    如果GPS速度小于20,则跳过速度补偿程序,继续运行原来的程序
    一般来说,只有GPS速度大于某个数值时,才需要补偿
    if-lt v3, v5, :cond_0

    定义一个数值2(2的十六进制就是2)放到v5寄存器
    这是速度补偿数值,你可以自行更改,记得是十六进制
    const v5, 0x2

    将v3寄存器中的GPS速度,加上v5寄存器中的速度补偿数值2,然后重新放回v3寄存器
    一般来说,GPS速度都是小于车辆码表速度的,所以需要加上速度补偿数值
    如果你要减去速度补偿数值,则把add改成sub就可以了
    add-int/2addr v3, v5

    速度补偿程序结束,继续运行原来的程序
    :cond_0


添加的速度补偿程序,用到了v5寄存器和cond_0跳转点,这2个在原程序中并没有用到,而且原程序中定义了0-14寄存器

DSA和ApkToolBox可以到这篇帖子中下载http://www.sosaw.com/forum.php?m ... 4590&extra=page%3D1

4楼已有改好的apk提供下载

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册register

x

点评

因为无论是ce还是安卓,速度都是依靠传感器和gps坐标来计算出来的,总会有那么一点误差,所以需要纠正  发表于 2018-10-10 12:03
老师为什么正常的速度值不用,而要去补偿呢?{:6_259:}  发表于 2018-10-10 10:06

评分

2

查看全部评分

发表于 2018-10-8 14:16 | 显示全部楼层
腻害腻害。
回复

使用道具 举报

发表于 2018-10-8 14:26 | 显示全部楼层
学习  谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-8 18:44 | 显示全部楼层
在之前的基础上(去除启动声音、关闭蓝牙雷达、关闭蓝牙提示、修复手势报错)增加了速度补偿功能

在系统设置中,原来用于设置雷达工作模式的地方,现在改为速度补偿设置,设置范围是-20km/h到+20km/h

当GPS速度大于等于20km/h时,DSA会进行补偿。如果GPS速度小于20km/h,则不做补偿


关闭速度补偿,DSA显示正常的GPS速度




速度补偿设置为+3km/h,DSA显示+3后的GPS速度




速度补偿设置为-2km/h,DSA显示-2后的GPS速度





DSA_1.2_速度补偿
链接:https://pan.baidu.com/s/12LtVLzazQqk6NRkVIjep2Q  密码:ixu9

DSA_1.2_速度补偿_大音量
链接:https://pan.baidu.com/s/1193TVSkmmSPPwn4FSEj2CA  密码:a2wg

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册register

x

点评

2244X1080分辨率能用吗  详情 回复 发表于 2018-10-29 10:27
回复 支持 反对

使用道具 举报

发表于 2018-10-9 00:33 | 显示全部楼层
学习一下,多谢分享
回复 支持 反对

使用道具 举报

发表于 2018-10-9 09:00 | 显示全部楼层
辛苦,辛苦。。。
回复

使用道具 举报

发表于 2018-10-9 10:53 | 显示全部楼层
能否做一个大屏幕的1920×1080。我这个是三星能用的。
链接: https://pan.baidu.com/s/1_WV3p30pFeIiTczorXGBzA 提取码: 2676

点评

你可以用ApkToolBox反编译后,把图片和layout目录覆盖过来就可以了 你提供的链接是什么?打不开  详情 回复 发表于 2018-10-9 11:31
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-9 11:31 | 显示全部楼层
zyfwhx 发表于 2018-10-9 10:53
能否做一个大屏幕的1920×1080。我这个是三星能用的。
链接: https://pan.baidu.com/s/1_WV3p30pFeIiTczorX ...

你可以用ApkToolBox反编译后,把图片和layout目录覆盖过来就可以了
你提供的链接是什么?打不开


回复 支持 反对

使用道具 举报

发表于 2018-10-9 11:37 | 显示全部楼层
可能的话请把这个程序修改成分辨率自适应,可以使用专业电子眼数据的程序。那就是功莫大焉!哈哈

点评

电子眼文件是没办法更改的,因为你不知道这个文件是以什么格式存放的 DSA的界面布局采用了绝对坐标的方式,绝对坐标的好处就是布局精准,一丝不差,缺点就是不适应其他分辨率,如果想要在其他分辨率下运行,那么就  详情 回复 发表于 2018-10-9 13:39
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-9 13:39 | 显示全部楼层
wangcht200 发表于 2018-10-9 11:37
可能的话请把这个程序修改成分辨率自适应,可以使用专业电子眼数据的程序。那就是功莫大焉!哈哈 ...

电子眼文件是没办法更改的,因为你不知道这个文件是以什么格式存放的

DSA的界面布局采用了绝对坐标的方式,绝对坐标的好处就是布局精准,一丝不差,缺点就是不适应其他分辨率,如果想要在其他分辨率下运行,那么就要重新调整布局

反编译后,res\layout-横向分辨率x纵向分辨率,这个目录就是存放一个特定分辨率下的布局,程序运行的时候,会按照设备的分辨率,去查找对应的layout目录,如果找不到,那就使用layout目录下的布局

举个例子,设备的分辨率是1024*700,那么你就把layout-1024x600目录改名为layout-1024x700,然后修改其中的XML文件,我们以main.xml文件为例,做个简单的说明


<AbsoluteLayout android:layout_gravity="center_horizontal" android:background="@drawable/ditu" android:layout_width="1001.0px" android:layout_height="fill_parent"

<AbsoluteLayout
采用绝对坐标来布局界面

android:layout_gravity="center_horizontal"
横向居中

android:background="@drawable/ditu"
采用drawable-hdpi-v4\ditu.png做为底图

android:layout_width="1001.0px"
图片的宽度为1001个像素

android:layout_height="fill_parent"
图片的高度和屏幕高度一致


<ImageView android:id="@id/GPSDingWei" android:background="#00000000" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/gps_3" android:layout_x="0.0px" android:layout_y="0.0px" />

android:id="@id/GPSDingWei"
图片的ID是GPSDingWei,就是界面左上角那个GPS卫星的天线图标

android:background="#00000000"
图片底色为透明

android:layout_width="wrap_content"
采用图片本身的宽度

android:layout_height="wrap_content"
采用图片本身的高度

android:src="@drawable/gps_3"
采用drawable-hdpi-v4\gps_3.png做为底图

android:layout_x="0.0px"
android:layout_y="0.0px" />
图片的起始坐标是(0, 0)


<TextView android:textSize="11.0sp" android:textColor="#ffffffff" android:gravity="center" android:id="@id/WeiXingCount" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="77.0px" android:layout_y="5.0px" />

android:textSize="11.0sp"
文字大小是11.0sp

android:textColor="#ffffffff"
文字的颜色代码是ffffffff,也就是白色

android:gravity="center"
文字居中显示

android:id="@id/WeiXingCount"
文字的ID是WeiXingCount,就是GPS卫星的天线图标右边那个收到的卫星总数

android:layout_width="wrap_content"
采用文字本身的宽度

android:layout_height="wrap_content"
采用文字本身的高度

android:layout_x="77.0px"
android:layout_y="5.0px" />
文字的起始坐标是(77, 5)


回复 支持 反对

使用道具 举报

发表于 2018-10-9 17:05 | 显示全部楼层
技术贴,顶一个支持!
回复 支持 反对

使用道具 举报

发表于 2018-10-10 08:40 | 显示全部楼层
这个贴很专业哟,顶顶顶
回复 支持 反对

使用道具 举报

发表于 2018-10-10 11:23 | 显示全部楼层
很久没用DSA了,看看这个有特色,赞一个
回复 支持 反对

使用道具 举报

发表于 2018-10-10 21:30 | 显示全部楼层
本帖最后由 yanlong 于 2018-10-10 21:32 编辑

一直想要这个功能,可自己搞不来,今天终于有了,感谢。楼主:如何把音乐播放功能去掉?

点评

去掉?那就把程序中的播放功能删除掉就可以了。 不过这个意义不大啊,你不点播放不就行了  详情 回复 发表于 2018-10-10 23:08
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-10 23:08 | 显示全部楼层
yanlong 发表于 2018-10-10 21:30
一直想要这个功能,可自己搞不来,今天终于有了,感谢。楼主:如何把音乐播放功能去掉? ...


去掉?那就把程序中的播放功能删除掉就可以了。
不过这个意义不大啊,你不点播放不就行了

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册register

本版积分规则

百度SITEMAP|小黑屋|Archiver|手机版|小胖熊酷数码GPS论坛 www.sosaw.com ( 沪ICP备16050520号-1 )|网站地图 

GMT+8, 2018-12-11 12:44 , Processed in 0.198139 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表