ADD_APPLICATION_ 加载资源参数说明

来源:互联网 发布:php根据ip获取地区 编辑:程序博客网 时间:2024/05/18 21:38

1、   字串资源解析

ADD_APPLICATION_STRING(stringId, string)

ADD_APPLICATION_STRING2(stringId, string, string)

ADD_APPLICATION_STRING3(stringId, tmp, string, display)

其中,stringId是字串资源的唯一标示符

string 是字串内容,此处只能使用ASCII码,在解析的时候,内容会被直接展开为UNICODE码,也就是说,此处填写汉字是没有意义的,会被展开成乱码。

display 是描述字串,这个字串仅仅会被打印出来,目前的版本中,对最终代码没有任何影响,也许MTK以后会使用的。

tmp 是用来描述这个字串资源的标示符,枚举中定义的唯一标示符都会被预编译成一个数字,而这个将这个标示符的名称转换成UNICODE码并保存下来。用处,不是很清楚。

 

字串资源解析与0952没有差别

 

2、  图片资源解析

ADD_APPLICATION_IMAGE(ImageId, ImgFileName)

ADD_APPLICATION_IMAGE2(ImageId, filename, display)

ADD_APPLICATION_IMAGE3(ImageId, filename, display)

ADD_APPLICATION_IMAGE4(ImageId, tmp, path, filename,display, isMB)

ADD_APPLICATION_IMAGE_TYPE(ImageId, filename, display,isMB, type)

ADD_NFB_IMAGE(args) 这个不是很清楚

ImageId 是图片资源的唯一标示符

ImgFileNamefilename 是文件名,这个路径是基于plutommi/Customer/Images

display 是描述符, 这个字串仅仅会被打印出来,目前的版本中,对最终代码没有任何影响,也许MTK以后会使用的。

path 是文件的路径,如果使用这个值,那么filename最终的文件名是路径+文件名,其总长度,不能超过149个字符。仅支持ascii

tmp  是用来描述这个图片资源的标示符的名称,枚举中定义的唯一标示符都会被预编译成一个数字。目前这个参数仅仅会被打印出来,对最终代码没有影响,也许MTK以后会使用的。

isMB 不是很清楚这个参数的意义,从后面流程来看,这个参数是标示这个图片资源是否是系统支持的资源类型,系统可以对这个资源进行检查,对于支持或不支持的资源,会被放到不同的地方。使用不同的索引。

 

0952没有差别

3、  视频资源解析

ADD_APPLICATION_MEDIA(ImageId, ImgFileName)

ADD_APPLICATION_MEDIA2(ImageId, filename, display)

ADD_APPLICATION_MEDIA3(ImageId, filename, display)

ADD_APPLICATION_MEDIA4(ImageId, tmp, path, filename,display, isMB)

参数意义与图片资源完全一样,解析过程也是一样

4、  音频资源解析

ADD_APPLICATION_AUDIO2(AudioId, filename, display)

ADD_APPLICATION_AUDIO3(AudioId, filename, display)

ADD_APPLICATION_AUDIO_TYPE(AudioId, filename, display,isMB, type) 这个是10a新增加的

AudioId是图片资源的唯一标示符

filename 是文件名,这个路径是基于plutommi/Customer/Audio

display 是描述符, 这个字串仅仅会被打印出来,目前的版本中,对最终代码没有任何影响,也许MTK以后会使用的。

isMB 不是很清楚这个参数的意义,从后面流程来看,这个参数是标示这个音频资源是否是系统支持的资源类型,对于支持或不支持的资源,会被放到不同的地方。使用不同的索引。

type 不清楚这个参数的意义。

 

5、  菜单资源解析过程

ADD_APPLICATION_MENUITEM(args)

ADD_APPLICATION_MENUITEM2(args)

ADD_APPLICATION_MENUITEM5(args) 这个是10a新增加的,但是与ADD_APPLICATION_MENUITEM完全一样,解析过程没有区别。

ADD_APPLICATION_MENUITEM_HILITE_HANDLER(MenuID,HiliteHandler)

ADD_APPLICATION_MENUITEM_HINT_HANDLER(MenuID,HintHandler)

这儿需要注意的是,采用此种方法注册的高亮函数,是将相应的数据放入一张const的表中,而通过08B及其以前的版本中的SetHiliteHandler是将相应的数据放入到RAM中的一张表中。这样利用加长编译时间来提高运行效率。而且我们需要注意的是,这两张表,在开机时,并不是同一时间初始化的,也就是说放在RAM中的表,初始化较晚,而对于某些需要使用handler表中数据的应用而言,这时候得到的表是不完整的。这也是08B上代码移植至0952后,快捷功能异常的最主要原因之一(当然,与MTK调整开机初始化顺序也有不可推卸的原因),值得庆幸的是,10A中快捷功能已经不是默认打开了。

6、  其它

ADD_APPLICATION(nId, pName, nMinId, nMaxId) 暂时没有看出用处。

 

总结,这里面列出来的加载方式,在0952及其之前的版本中,是需要手动添加的;而在10A中,修改资源,需要去修改一个伪xml格式的资源文件,在编译的时候,其解析器会将这个资源文件解析成0952中资源的形式,然后再执行同0952相同的过程。

所有的ADD_APPLICATION_{}(),都是一个宏,主要将添加的记录输出到一个文件中,同时将解析结果添加至各种数组中。最后再对数组进行处理,生成相应的数据而已。

 

首发于[http://blog.csdn.net/sdoat/archive/2011/01/19/6152361.aspx],转载请注明。