设为首页收藏本站

移动叔叔

搜索
查看: 1262|回复: 0
打印 上一主题 下一主题

[软件] 4.2如何用凯立德,程序-地图包-解决方案

[复制链接]
跳转到指定楼层
楼主
发表于 2013-5-9 14:59:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
4.2不能运行凯立德,一直都有这个困扰。
百度求解竟然发现机锋已经有大神解决了。
原帖地址:
http://bbs.gfan.com/android-5703460-1-1.html


4.2.1下可运行的凯立德导航apk(下载后请解压,里面有Apk文件)下载地址:本帖隐藏的内容http://pan.baidu.com/share/link?shareid=240865&uk=2063770163


地图下载:本帖隐藏的内容http://bbs.gfan.com/forum.php?mod=viewthread&tid=5651268


若下载不了,用这个地图地址本帖隐藏的内容http://kuai.xunlei.com/d/KBFOWQVYGEPN?p=124870



/////////////////////////////////新增无破音版//////////////////////////////////////////////////
基础版本:2012夏季C2433-A7A07-2921J0B语音豪华旗舰安卓版
更新方法:1、下载以上地图包,若已下好则略过。
2、下载补丁包本帖隐藏的内容http://kuai.xunlei.com/d/KRATLIFJMNUY?p=124870

,解压后覆盖原地图目录。
3、下载Apk,卸载原来的重装。apk地址:本帖隐藏的内容http://pan.baidu.com/share/link?shareid=242751&uk=2063770163


说明: 更新之后初步测试无破音,无手写漂移,已无语音识别,可控制音量,但GPS搜星未测。若有问题,请返回之前版本。

破音解决参考自本帖隐藏的内容http://bbs.gfan.com/android-5293773-1-1.html

////////////////////////////////////////////////////////////////////////////////////////////////////

注意:若遇到破音、声音小或其他问题,这是原始凯立德版本的问题,与本人修改的无关。本人只是修复了4.2.1下地图加载出错而FC的问题。可以使用以下方法修复别的版本的凯立德apk。

声明:
此程序仅提供手机学习测试,不承担任何技术及版权问题,非法传播或用于商业用途,自负法律责任。请在下载后24小时内删除,请支持购买正版。

自从刷了mike1986的4.2.1,凯立德不能用了,开车不能用不爽。

自己研究了下,搞了一个能运行的版本,目前加载地图正常,GPS搜星正常。

不能运行的的原因初探,
“Buffer not large enough for pixels at android.graphics.Bitmap.copyPixelsFromBuffer”这是问题是因为Android以前的版本copyPixelsFromBuffer不会改变buffer位置所以都是固定从位置0开始但现在Android 4.2 copyPixelsFromBuffer做完会将buffer位置更新所以就发生悲剧了... 解法就是把buffer移回来啰: buffer.position(0)。引用自本帖隐藏的内容http://tw.m.wretch.yahoo.com/blog/JohnDX/15769572?current_page=1&pageSize=20



以此为依据,以下是反编译修改方法,抛砖引玉。

原始apk实用doapk反编译,记事本打开“\smali\cld\navi\mainframe\MainView.smali”, 找到copyFromBuffer方法,原始应该这样:
  • .method public copyFromBuffer(Ljava/nio/Buffer;)I
  • .locals 1
  • .parameter "buffer"
  • .prologue
  • .line 138
  • iget-object v0, p0, Lcld/navi/mainframe/MainView;->mDrawBitmapandroid/graphics/Bitmap;
  • invoke-virtual {v0, p1}, Landroid/graphics/Bitmap;->copyPixelsFromBuffer(Ljava/nio/Buffer;)V
  • .line 139
  • const/4 v0, 0x0
  • return v0
  • .end method

复制代码

用以下字符串覆盖所有的copyFromBuffer方法
  • .method public copyFromBuffer(Ljava/nio/Buffer;)I
  • .locals 1
  • .parameter "buffer"
  • .prologue
  • .line 138
  • iget-object v0, p0, Lcld/navi/mainframe/MainView;->mDrawBitmapandroid/graphics/Bitmap;
  • invoke-virtual {v0, p1}, Landroid/graphics/Bitmap;->copyPixelsFromBuffer(Ljava/nio/Buffer;)V
  • .line 138
  • const/4 p0, 0x0
  • invoke-virtual {p1, p0}, Ljava/nio/Buffer;->position(I)Ljava/nio/Buffer;
  • .line 139
  • const/4 v0, 0x0
  • return v0
  • .end method

复制代码

保存后重新编译签名即可。
其他版本的凯立德应该都可以这样修改。若有需求,请按以上方法修改


从java源码来看,原始的为:
  • public int copyFromBuffer(Buffer paramBuffer)
  • {
  • this.mDrawBitmap.copyPixelsFromBuffer(paramBuffer);
  • return 0;
  • }

复制代码

加一行,修改为:
  • public int copyFromBuffer(Buffer paramBuffer)
  • {
  • this.mDrawBitmap.copyPixelsFromBuffer(paramBuffer);
  • paramBuffer.position(0);
  • return 0;
  • }

复制代码

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

© 2008-2025 移动叔叔. 版权所有,专业的网络售后平台 ( 闽ICP备18006692号-3 )

商务合作点击这里给我发消息|Email:service@mobileuncle.com|手机版|移动叔叔     

GMT+8, 2025-1-9 16:02 , Processed in 0.201459 second(s), 12 queries , Gzip On, Memcache On.

返回顶部