Note: The Listed platform will permanently shut down December 31, 2026. Your data published on Listed will still be available in your personal Standard Notes account. Learn more

小记触摸版CWM Recovery的制作

众所周知,坑爹的CWM Touch木有开放源代码……

但是我不甘心,我要给米1做触摸Recovery。

于是在Github上寻找,一直没有找到开源的。

无意间在深度OS的GITHUB上找到了一部分的触摸源代码。

看这个commit:https://github.com/ShenduOS/android_bootable_recovery/commit/19866163c49297d1e6e6348d2db2aa38cac7ce55

cherry-pick过来,编译,发现只能支持触摸按键操作,而且还不能触摸。

经过一番调试,把触摸消息事件号改为50,终于可以正常触摸了。可是感觉很不爽,只能用触摸按键操作。

但是既然触摸按键可以了,为什么全屏触摸不可以呢?

首先,要做一个全触摸的recovery,需要增大菜单项距离。

于是添加了一个EXT_HEIGHT常量,定义为3倍字符高度。

编译,发现顶部空白巨大。

我认为这只是菜单需要一个偏移量。

于是新增常量:

#define MENU_OFFSET -2

然后在drawscreenlocked函数中修改,在绘制菜单项的代码行中,所有坐标都加上一个MENUOFFSET,得以解决。

但是又有一个问题,底部日志会超过限制高度。这个好办,MAX
ROWS一改搞定。

接下来还有一个重大BUG,选择ZIP界面的菜单会超出屏幕距离。

这个就要搜索赋值maxmenurows变量的地方(是变量,不是常量),然后强制赋值即可。

接下来可以增加触摸选择菜单的代码了。

然后要在ui.c的触摸部分加入一段代码,用于判断触摸区域是否在菜单内,菜单区域的代码可以在绘制函数中找到。

至此,触摸Recovery基本完美,你还可以自己制作一个滑动翻页功能,这里不再多说。


You'll only receive email when they publish something new.

More from Typeblog
All posts