Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 如何漢化和制作第三方recovery

如何漢化和制作第三方recovery

編輯:關於Android編程

漢化recovery很簡單,recovery不顯示中文就是因為它不帶中文字庫,所以顯示不了。所以我們只要加入中文字庫,然後在顯示的時候進行一次中英文判斷就好了。
首先進入cm10.1/bootable/recovery/minui目錄下:
把我們自己的字庫名字改成font_10x18.h替換掉原來的font_10x18.h(字庫可以自己制作,各種字體都行,現在我也忘了怎麼制作了,在網上下載了個)

然後編輯graphics.c文件
加入一個全局變量
const unsigned cw_en=10; //因為那我們制作的字體是10X18的,後移一次的時候就是10

然後把函數int gr_text(int x, int y, const char *s)
int gr_text(int x, int y, const char *s)
{
...

while((off = *s++)) {
if (off < 0x80) //小於0x80是可見的字符
{
off -= 32;
if (off < 96) {
if ((x + cw_en) >= gr_fb_width()) return x;
gl->texCoord2i(gl, (off * font->cwidth) - x, 0 - y);
gl->recti(gl, x, y, x + cw_en, y + font->cheight);
}
x += cw_en;
}
//add begin by dwq for show 20130328
else
{
if ((off & 0xF0) == 0xE0)
{
off2 = *s++;
off3 = *s++;
unicode = (off & 0x1F) << 12;
unicode |= (off2 & 0x3F) << 6;
unicode |= (off3 & 0x3F);
id = getUNICharID(unicode);

if (id >= 0) {
if ((x + font->cwidth) >= gr_fb_width()) return x;
gl->texCoord2i(gl, ((id % 96) * font->cwidth) - x, (id / 96 + 1) * font->cheight - y);
gl->recti(gl, x, y, x + font->cwidth, y + font->cheight);
x += font->cwidth;
} else {
x += font->cwidth;
}
} else {
x += cw_en;
}
}
//add end by dwq for show 20130318
...

}

在這個函數裡面還調用了一個 id = getUNICharID(unicode);
所以我們還要加入這個函數
int getUNICharID(unsigned short unicode)
{
int i;
for (i = 0; i < UNICODE_NUM; i++) {
if (unicode == unicodemap[i]) return i;
}
return -1;
}

之後我們就可以把英文字符串直接修改成中文就可以了顯示出來了。
小提示:
不要使用sourch insight修改成中文,否則顯示出來的效果會是亂碼,之前被這個問題坑了我好久,原理一點問題都沒有,就是顯示不出來,真心是讓我無解了一段時間。後來我是直接在vim裡面修改的。
 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved