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

 找回密码
 注册register

扫一扫,访问微社区

查看: 2210|回复: 14

[凯立德] 给凯立德C4009-C7P07增加back键功能

[复制链接]
发表于 2018-12-19 22:52 | 显示全部楼层 |阅读模式
分享到:
综合发帖模板
发帖目的: 发布资源/OEM/补丁
地图品牌: 凯立德
测试机型: -
适用系统(可多选): Android2.0/2.2 Android2.3 Android3.0 Android4.0 
地图国别: -
支持分辨率(可多选): 自适应 
资源分类(可多选): 改进主程序 

反编译以后,修改smali\cld\navi\MainActivity.smali文件



红色、蓝色、绿色框内是增加的代码

其中蓝色、绿色框内的代码,两者取其一

蓝色:按下back键,返回到桌面,就和按下home键是一个效果

绿色:按下back键,返回到上一个界面。比如你在桌面上点击图标启动凯立德,那么就是返回到桌面,如果你在应用管理器中启动凯立德,那么就是返回到应用管理器,又或者你是在DSA中启动凯立德,那么就是返回到DSA。


.method public dispatchKeyEvent(Landroid/view/KeyEvent;)Z

红色框内代码
    if-eq v7, v3, :cond_100

蓝色框内代码
    :cond_100
    invoke-virtual {p0}, Lcld/navi/MainActivity;->StartHomeIntent()V
    goto :goto_0

绿色框内代码
    :cond_100
    const/4 v3, 0x5
    invoke-virtual {p0, v3}, Lcld/navi/MainActivity;->removeMessage(I)V

    const/4 v3, 0x6
    invoke-virtual {p0, v3}, Lcld/navi/MainActivity;->removeMessage(I)V

    const/4 v3, 0x1
    invoke-virtual {p0, v3}, Landroid/app/Activity;->moveTaskToBack(Z)Z
    goto :goto_0



请自己折腾,不要问我要改好的主程序

本帖子中包含更多资源

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

x

评分

1

查看全部评分

发表于 2018-12-19 23:00 | 显示全部楼层
真厉害,真需要,可是我只能看看!还是谢谢!
回复 支持 反对

使用道具 举报

发表于 2018-12-20 07:15 小胖熊手机版 | 显示全部楼层
此版没有最短路径规划
回复 支持 反对

使用道具 举报

发表于 2018-12-20 08:12 | 显示全部楼层
不明觉厉,熊坛就需要你这样的人才!
回复 支持 反对

使用道具 举报

发表于 2018-12-20 08:58 | 显示全部楼层
受教了!感谢分享!!!
回复 支持 反对

使用道具 举报

发表于 2018-12-20 09:22 | 显示全部楼层
百度了半天,可以回编译不了,什么情况?

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 2018-12-20 10:31 | 显示全部楼层
老大,我测试了绿色方案,感觉就像HOME差不多,有没有办法设置成,比如我在凯立德-关于 界面,然后我按BACK键,他会一级一级向上返回到凯立德首页?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-20 19:48 | 显示全部楼层
安卓版的凯立德,比如2739、3551、4009,在使用的时候,按键、触摸等事件,都是由MainActivity中的mainThreadEventHandler(III[B)I这个函数来处理的,而这个函数,是封装在libcldnavi.so文件中

通过简单的修改,只能做到back键返回到桌面、或者上一个app界面,如果要在凯立德内部实现逐级返回,那就要更改libcldnavi.so文件了,这个就不是我的强项了

点评

明白,还是非常感谢!  详情 回复 发表于 2018-12-20 19:54
回复 支持 反对

使用道具 举报

发表于 2018-12-20 19:54 | 显示全部楼层
开在边缘 发表于 2018-12-20 19:48
安卓版的凯立德,比如2739、3551、4009,在使用的时候,按键、触摸等事件,都是由MainActivity中的mainThre ...

明白,还是非常感谢!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-20 23:04 | 显示全部楼层
本帖最后由 开在边缘 于 2018-12-20 23:23 编辑

我大概跟踪了一下,之前我说的那个mainThreadEventHandler(III[B)I这个函数,发现函数是会读取NaviConfig.dll这个参数文件的

也就是说,这个back键功能,是根据NaviConfig.dll这个参数文件来判断的,只不过4009的NaviConfig.dll把这个参数给设置成关闭状态了

我试了一下,用3551的NaviConfig.dll代替进去,不出意料,4009就有3551的back键功能了

我比较了一下两个版本的NaviConfig.dll,有4、5个地方不一样,但是都不在KLD_CfgDiy可以配置的范围内。所以我也不知道这4、5个不一样的地方,到底是哪几个字节属于back键功能的判断

不过NaviConfig.dll这个参数文件,会直接影响到某些功能,这4、5个不一样的地方,具体会影响什么功能,我就不是很清楚了。我大概试了试,除了恢复了back键功能以外,原本的组队功能图标没有了,变灰了,还有就是多了一个路况简图。有兴趣的可以自己折腾折腾。



回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-21 00:46 | 显示全部楼层

最终完美的解决方法如下:
1、打开KLD_CfgDiy(用于修改NaviConfig.dll这个参数文件,没有这个软件的,请自行搜索下载)

2、右键菜单中选择“增加新的条目”


3、输入偏移值:05DC;数据宽度:02;数据类型:I;数据描述:安卓back键对应键码


4、确定后,记得右键菜单中选择“保存条目框架文件”


5、打开NaviConfig.dll,找到刚才新增的条目,将值修改为4,然后保存即可

本帖子中包含更多资源

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

x

点评

谢谢老大,按此方法已完美使用!再次感谢大神!  详情 回复 发表于 2018-12-21 09:01

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2018-12-21 07:14 | 显示全部楼层
开在边缘 发表于 2018-12-21 00:46
最终完美的解决方法如下:
1、打开KLD_CfgDiy(用于修改NaviConfig.dll这个参数文件,没有这个软件的,请 ...

也就是说不需要增加之前的代码,直接修改这个就可以达到目的?晚一点试下!谢谢!
回复 支持 反对

使用道具 举报

发表于 2018-12-21 09:01 | 显示全部楼层
开在边缘 发表于 2018-12-21 00:46
最终完美的解决方法如下:
1、打开KLD_CfgDiy(用于修改NaviConfig.dll这个参数文件,没有这个软件的,请 ...

谢谢老大,按此方法已完美使用!再次感谢大神!
回复 支持 反对

使用道具 举报

发表于 2018-12-21 10:27 | 显示全部楼层
开在边缘 发表于 2018-12-21 00:46
最终完美的解决方法如下:
1、打开KLD_CfgDiy(用于修改NaviConfig.dll这个参数文件,没有这个软件的,请 ...

找到具体地址了?太好了。马上改一改。
回复 支持 反对

使用道具 举报

发表于 2018-12-21 12:41 | 显示全部楼层
非常好的方法,留档备用。谢谢分享。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2019-11-20 19:25 , Processed in 0.235791 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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