Android MTK开发时区修改_第1页
Android MTK开发时区修改_第2页
Android MTK开发时区修改_第3页
Android MTK开发时区修改_第4页
Android MTK开发时区修改_第5页
已阅读5页,还剩4页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

[FAQ06455]【Zone】如何添加一个新的时区问题描述:有些项目需要出货到海外,比如非洲的一些国家,目前的版本中这些国家没有单独的时区,而是使用的如非洲东部时间,非洲标准时间等,为了提高当地用户体验,需要在setting菜单中增加一个时区,比如为出货到尼日尼亚的手机增加时区尼日尼亚拉各斯。解决方案:以加入Nigeria时区为例,应该如下修改:找到该国家在zoneinfo中的时区信息。时区信息的文件可以从ftp://munnari.oz.au/pub/下载到最新的,解压tzdata201x*.tar.gz后,在每个地区的txt文件中有城市的时区信息,搜索是否有您要添加的城市,则该时区可以添加;如果没有搜索到相关的国家或城市,则需要考虑使用别的城市的时区。比如在africa.txt中搜索Nigeria,可以找到下面的内容:NigeriaZoneNAMEGMTOFFRULESFORMAT[UNTIL]ZoneAfrica/Lagos0:13:36-LMT1919Sep1:00-WAT这样可以看到,尼日利亚只有一个城市可以作为时区ID,这个ID就是Africa/Lagos。修改packages/apps/Settings/res/xml-xx-xx/timezones.xml(xx-xx表示不同的语言和区域),添加下面的内容:<!--timezones.xml用于在setting中增加一个时区设置项--><timezoneid=〃Africa/Lagos〃>Lagos</timezone>修改framework/base/core/res/res/xml/time_zones_by_country.xml,添力口下面的内容<!--time_zones_by_country.xml这个用于自动匹配时区时使用,通过countrycode找一个时区--><!--Nigeria,1:00--><timezonecode=〃ng〃>Africa/Lagos</timezone><!--这里的code=〃ri〃表示国家代码,比如中国对应cn,美国对应us,不清楚可以维基百科查询ISO_3166-1-->这是添加一个时区的步骤,如果要添加多个时区,请重复或批量执行以上步骤。[FAQ08718]如何在icu中自定义某个时区的显示名称[Description】:目前对于有些地区,很多国家会使用一个时区,显示的名称也是一样,比如对于欧洲,很多城市使用“欧洲中部时间”“中欧夏令时”,非洲国家也是类似的。对于有些客户,可能有定制显示需求,对于某些时区,不显示“xx中部时间”,而是显示“xx时间”,比如下面会以荷兰阿姆斯特丹为例,目前在手机Setting中选择“Amsterdam,Berlin”后在Date&Time界面会显示“CentralEuropeanSummerTime”,下面是修改荷兰语下这个显示为自定义名称的过程。[Solution】:时区Europe/Amsterdam目前显示出来的时间是“欧洲中部时间”或“欧洲中部时间”,如果要修改荷兰语下显示为“阿姆斯特丹时间”或其他自定义的显示,请follow下面的修改:找到时区ID时区id并不是城市名称,手机显示到时区列表上的时区名称与时区id有映射关系,可以通过查看Settings中的timezones.xml来确定,package/apps/Settings/res/xml-zh/timezones.xml是中文。这样可以找到0Amsterdam,Berlin的时区id是Europe/Amsterdam修改metaZones.txt文件1)修改mapTimezones修改的目的是把时区添加到自己定义的显示规则中,这样通过时区IDEurope/Amsterdam就可以得到该显示规则Europe_Amsterdam。这个步骤分2步:定义自己的显示规则名称比如我定义了新的规则Europe_Amsterdam,需要在mapTimezones中添加进去,mapTimezones中顺序是按字母排序的,所以Europe_Amsterdam这个规则要添加到Europe_Central的前面,如下:Europe_Amsterdam(}将要修改的时区从原规则中删除,添加到自定义的规则中找到要修改的时区,比如Europe/Amsterdam在Europe_Central中,剪切NL{"Europe/Amsterdam”},粘贴到自定义的时区显示规则中,如下所示:Europe_Amsterdam(NL{〃Europe/Amsterdam〃}

2)修改metaZoneinfo添加meta信息,这样就可以通过显示规则名称Europe_Amsterdam得到meta信息Europe:Amsterdam。〃Europe:Amsterdam〃{(〃Europe_Amsterdam〃}}修改zone/nl.txt文件不同的txt文件代表的是不同语言,语言和区域代码可通过查询ISO-3166-1和ISO-639标准确定。定义在界面显示的字串,这样根据之前得到的meta信息可以得到要显示的字串。同样的,名称是按照字母排序的,所以在Europe_Central前面添加,如下:"meta:Europe_Amsterdam"(ld{"夏令时间显示名称"}ls{"标准时间显示名称"}}编译ICU资源请参考FAQ04011进行编译和测试[FAQ04011]如何编译ICU资源如果只是测试修改后效果,执行步骤A即可;如果需要build后生效,则需要执行全部步骤在临时目录中编译ICU资源在external/icu4c下新建临时目录icubuild,进入icubuild目录$mkdirexternal/icu4c/icuBuild$cdexternal/icu4c/icuBuild执行icuConfigureRunLinux命令,生成make文件$.././runConfigureICULinux执行make-j2命令$make-j2将生成的external/icu4c/icuBuild/data/out/tmp/icudt48l.datpush到手机测试$adbremount$adbpushexternal/icu4c/icuBuild/out/data/tmp/icudt48l.datsystem/usr/icu/$adbreboot(千万记得重启手机才看得到修改后的效果)注:JB及以上是icudt48l.datCOPY所需文件将第一步生成的external\icu4c\icubuild\data\out\tmp\icudt48l.dat复制到external\icu4c\stubdata下并改名为icudt48l-all.dat,覆盖原来的同名文件注:JB及以上是icudt48l.dat和icudt48l-all.dat配置环境变量重新配置环境变量(如果不配置正确会导致执行脚本出错)。以我的系统为例,配置过程如下:在终端中进入/work/pro/c70_u10_y320/mt6572_jb3目录即:$cd/work/pro/c70_u10_y320/mt6572_jb3然后执行脚本(等价于./build/envsetup.sh):$sourcebuild/envsetup.sh配置环境变量(注意“二”前后不要有空格)。$exportANDROID_BUILD_TOP=/home/ckt/work/pro/c70_u10_y320/mt6572_jb3执行完没有任何提示说明配置成功。执行完没有任何提示说明配置成功,有提示说明配置出错。需要重新配置

执行脚本,重新生成.dat文件执行脚本,如果遇到文档印尼语错误请用附件(或MTK)提供的脚本(icu_dat_generator.rar)替换后再执行,如下所示:进入/work/pro/c70_u10_y320/mt6572_jb3/external/icu4c/studdata目录$cdexternal/icu4c/stubdata执行脚本$./icu_dat_generator.py如果该脚本执行成功,external\icu4c\stubdata\icudt48l-default.dat会更新,如果看到文件的修改时间变成了最新的时间,就说明已经重新生成,真正最后起作用的是icudt48l-default.dat这个文件。注:JB及以上是icudt48l-default.dat重新编译工程修改后重新编译工程来测试效果,使用./mkckt72_we_jb3new命令上传.dat文件到SVN如果你使用svn或类似软件进代码管理,那么就要将你修改的结果上传到服务器上,使服务器new或build之后可以看到修改效果。需要上传那些文件呢?请将studdata目录下的icudt48l-default.dat文件上传。说明:实际上脚本的作用就是将icudt48l-all.dat解压后,根据txt文件内容重新生成icudt48l-default.dat文件,在build的时候Android.mk文件会直接将icudt48l-default.dat文件改名后复制到最终out目录中,所以上传到服务器只需要将生成的这些.dat文件传上去,其它在本机修改的都不用(如果传上去可能会build出错)。根据上面的FAQ文档做了两个实验实验一。在ICU中添加某个时区并显示自定义名称,同时开机向导中也显示此修改的自定义名称【问题描述】添加时区Abidjan步骤:在frameworks/base/core/res/res/xml/time_zones_by_country.xml中搜索是否存在有关Abidjan的时区ID。<!--COTED'IVOIRE,0:00--><timezonecode="ci">Africa/Abidjan</timezone>//时区ID在packages/apps/Settings/res/xml/timezones.xml中搜索时区ID是否存在时区设置项(Settings->Date&time->Selecttimezone对应的名称。如果没有可以按照timezones.xml其它时区编写规则添加:<timezoneid="Africa/Abidjan">Abidjan</timezone>在external/icu4c/data/misc/metaZones.txt中搜索是否有匹配时区idAfrica/Abidjan的mapTimezones。搜索结果:GMT{001("Atlantic/Reykjavik"}BF{"Africa/Ouagadougou"}CI{"Africa/Abidjan"}〃在这里GB{"Europe/London"}GH{"Africa/Accra"}GM{"Africa/Banjul"}GN{"Africa/Conakry"}IE{"Europe/Dublin"}LR{"Africa/Monrovia"}ML{"Africa/Bamako"}MR{"Africa/Nouakchott"}SH{"Atlantic/St_Helena"}SL{"Africa/Freetown"}SN{"Africa/Dakar"}ST{"Africa/Sao_Tome"}TG{"Africa/Lome"}}由结果可知该时区ID会显示格林治标准时区,如何修改为自定义的时区呢?删除CI{"Africa/Abidjan"}这项mapTimezones中自定义时区规则,由于mapTimezones中顺序是按字母排序的,所以将Africa_Abidjan这个规则添加在Afghanistan{001{〃Asia/Kabul〃}}规则之后。Africa_Abidjan(001{〃Africa/Abidjan〃}metazoneInfo添加meta信息(按字母排序)"Africa:Abidjan"{{"Africa_Abidjan",}}在external/icu4c/data/zone/en.txt中添加显示字符串(按字母排序)"meta:Africa_Abidjan"(ls("AbidjanTime"}//自定义字符串}到此修改就结束了,修改完后可以按照[FAQ04011]如何编译ICU资源编译验证,如果要设置开机向导显示自定义时区,即设置默认时区需要在mediatek/config/ckt72_we_jb3/ProjectConfig_ckt.mk中设置TIMEZONE=Africa/Abidjan验证图片:1.开机向导显示添加时区Date&timeAbidjanTimeJCurrentdate01/01/2014Currenttime12:02AM4►2.自定义字符串国A**8 4■12:04amDate&timeAutomaticdate&timeUsenetwork-providedtimeAutomatictimezone/Usenetwork-providedtimezone01/01/2014Settime12:04AMGMT+00:00,AbidjanTimeUse24-hourformat1:00PMChoosedateformat31/12/20143添加时区选项国A**A 4■12:04amSelecttimezoneAbidjanGMT+0:00Amsterdam,BerlinGMT+l:00BelgradeGMT+l:00BrusselsGMT+l:00SarajevoGMT+l:00W.AfricaTimeGMT+l:00WindhoekGMT+2:00

实验二。添加一个新时区【问题描述】添加新时区乌鲁木齐Urumqi+8:00先上图国A学W9A■12:05am国A学W8A■8:05amSelecttime

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论