标签归档:MTK
如何为MTK平台添加新模块
包含源码的第三方库 以添加一个TTS模块为例,可以按如下步骤添加: 把TTS的源码包复制到你的MTK软件系统根目录下,以让TTS的源码都在TTS目录中 在make目录下新增一个tts目录,在tts目录下添加4个新文件,分别是,tts.def、tts.inc、tts.lis、tts.pth。tts.def文件的内容需要根据内容来修改,其他3个文件中加上源文件及其目录、头文件目录即可。 在REL_CR_MMI_<project>.mak 中加上如下语句 CUS_REL_SRC_COMP += tts 把MTK工程remake一下,若没有错误,tts模块就成功加上去了。 如果要为Modis模拟器添加该模块,须进入到Modis目录,在createMoDIS.ini文件中,[GLOBAL_SETTINGS]下,追加 enable_libs += tts createMoDIS.ini会在createMoDIS.pl中加载 不包括源码的第三库 添加一个无源码的库,如xxx.lib,可按照下面步骤: 在MTK软件系统根目录中新建一个xxx文件夹,把xxx.lib放在里面 在make\\Option.mak里增加下面几行,ifeq语句不是必要。 ifeq ($(strip $(XXX_SUPPORT)),TRUE) COMPOBJS += xxx\\xxx.lib CUS_REL_OBJ_LIST += xxx\\xxx.lib endif 有 头文件,要将头文件路径加入,用CUSTOM_COMMINC如: CUSTOM_COMMINC += ..\..\inc 如果加了XXX_SUPPORT判断,须在<customer>_<project>.mak文件中添加,并初始化为 TRUE: XXX_SUPPORT = TRUE; 修改完成后,remake就可以将新模块添加到工程里了。 … 继续阅读
从GBK到Unicode的中文字符映射
前言 最近在做MTK开发,需要在程序中将GBK编码的文本文件实时转换为unicode编码,因为MTK只认Unicode。经尝试网上提供的mmi_chset_convert函数在我手上的SDK里没有用,很奇怪这个函数的只是调用了memcpy。无奈之下只能自己动手实现转换,也好趁这个机会摸清以前一直一知半解的字符编码。 说到字符编码,第一误解就是字符集(character set)和字符编码(character encoding)的混淆。以前经常把所有名词都当成字符编码(encoding),比如我就把GB2312叫成编码,实际上GB2312应该是字符集, 而它用的编码方式应该叫做EUC-CN。对于字符集跟字符编码的区别还是很难理解的(可看维基百科这里、这里跟这里),我也模糊,再说下我的理解,比如说思密达们用的字符集是KS X 1001,而他们的编码方式也是EUC,不过是叫做EUC-KR。关于EUC编码方式,实际上就是对于ASCII字符用一个字节(8bit)表示,高位(第一位)为0来表示它是 ASCII字符,而其他字符用两个字节表示(16bit),且每个字节加上0xA0(16进制),也就将它们的高位置为1,以跟ASCII字符区分开来(后面在我的程序里就可以看到这个应用)。关于这个问题可再参考Blogjava上的两篇系列文章,[1]、[2]。 当然如今把GB2312等同于编码了也不会有任何问题了。Html文档头经常出现的 charset=utf-8 对此贡献不少,这里的charset应该是指encoding,再比如说charset=gb2312实际上指的就是“EUC-CN”(强调一下utf-8、iso-8859-1都是字符编码,unicode才是字符集)。所以关于标题《从GBK到Unicode的中文字符映射》,实际上应该叫做《GBK到UTF-16(UCS2)的中文字符映射》, GBK GBK即汉字内码扩展规范,是“国家标准扩展”三个词的拼音缩写。具体可参考维基百科。 GBK既是字符集也是字符编码(够讨厌的吧…)[2]。不过这不重要,解决问题的关键是摸清GBK的编码方式,才能找到GBK到Unicode的映射规律。在此贴下维基百科上的图片: 由上表可见,GBK编码主要将字符分为五个区域。 其中GBK/1、GBK/2就是GB2312的字符集,其编码跟GB2312的编码是一致的,所以说GBK是向下兼容GB2312。GBK/3、GBK4就是GBK新增的汉字,许多繁体字、偏僻字都集中在此。但GBK/4中并不是全都是汉字,或者是不存在Unicode字符集中的汉字,经我统计实际上只有8059个汉字是在Unicode中存在的。剩下的GBK/5跟GBK/1一样存放都是特殊符号。 Unicode