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

下载本文档

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

文档简介

FAQ06455 【Zone 】如何添加一个新的时区 问题描述:有些项目需要出货到海外,比如非洲的一些国家,目前的版本中这 些国家没有单独的时区,而是使用的如非洲东部时间,非洲标准时间等,为了 提高当地用户体验,需要在 setting 菜单中增加一个时区,比如为出货到尼日 尼亚的手机增加时区 尼日尼亚拉各斯。 解决方案:以加入 Nigeria 时区为例,应该如下修改: 1.找到该国家在 zoneinfo 中的时区信息。 时区信息的文件可以从 ftp:/munnari.oz.au/pub/下载到最新的,解压 tzdata 201x*.tar.gz 后,在每个地区的 txt 文件中有城市的时区信息,搜索是否有您 要添加的城市,则该时区可以添加;如果没有搜索到相关的国家或城市,则需 要考虑使用别的城市的时区。 比如在 africa.txt 中搜索 Nigeria,可以找到下面的内容: # Nigeria # Zone NAME GMTOFF RULES FORMAT UNTIL Zone Africa/Lagos 0:13:36 - LMT 1919 Sep 1:00 - WAT 这样可以看到,尼日利亚只有一个城市可以作为时区 ID,这个 ID 就是 Africa/ Lagos。 2.修改 packages/apps/Settings/res/xml-xx-xx/timezones.xml (xx-xx 表示 不同的语言和区域),添加下面的内容: Lagos 3.修改 framework/base/core/res/res/xml/time_zones_by_country.xml,添 加下面的内容 Africa/Lagos 这是添加一个时区的步骤,如果要添加多个时区,请重复或批量执行以上步骤 。 FAQ08718如何在 ICU 中自定义某个时区的显示名称 【Description】: 目前对于有些地区,很多国家会使用一个时区,显示的名称也是一样,比如对 于欧洲,很多城市使用“欧洲中部时间”“中欧夏令时”,非洲国家也是类似 的。对于有些客户,可能有定制显示需求,对于某些时区,不显示“xx 中部时 间”,而是显示“xx 时间”,比如下面会以荷兰阿姆斯特丹为例,目前在手机 Setting 中选择“Amsterdam,Berlin”后在 Date&Time 界面会显示“Central European Summer Time”,下面是修改荷兰语下这个显示为自定义名称的过程。 【Solution】: 时区 Europe/Amsterdam 目前显示出来的时间是“欧洲中部时间”或“欧洲中部 时间”,如果要修改荷兰语下显示为“阿姆斯特丹时间”或其他自定义的显示, 请 follow 下面的修改: 1.找到时区 ID 时区 id 并不是城市名称,手机显示到时区列表上的时区名称与时区 id 有映射 关系,可以通过查看 Settings 中的 timezones.xml 来确定, package/apps/Settings/res/xml-zh/timezones.xml 是中文。这样可以找到 Amsterdam,Berlin 的时区 id 是 Europe/Amsterdam。 2.修改 metaZones.txt 文件 1)修改 mapTimezones 修改的目的是把时区添加到自己定义的显示规则中,这样通过时区 ID Europe/Amsterdam 就可以得到该显示规则 Europe_Amsterdam。这个步骤分 2 步: a)定义自己的显示规则名称 比如我定义了新的规则 Europe_Amsterdam, 需要在 mapTimezones 中添加进去,mapTimezones 中顺序是按字母排序的,所以 Europe_Amsterdam 这个规则要添加到 Europe_Central 的前面,如下: Europe_Amsterdam b)将要修改的时区从原规则中删除,添加到自定义的规则中 找到要修改的时区,比如 Europe/Amsterdam 在 Europe_Central 中, 剪切 NL“Europe/Amsterdam”,粘贴到自定义的时区显示规则中,如下所示: Europe_Amsterdam NL“Europe/Amsterdam“ 2)修改 metaZoneinfo 添加 meta 信息,这样就可以通过显示规则名称 Europe_Amsterdam 得到 meta 信 息 Europe:Amsterdam。 “Europe:Amsterdam“ “Europe_Amsterdam“ 3. 修改 zone/nl.txt 文件 不同的 txt 文件代表的是不同语言,语言和区域代码可通过查询 ISO-3166-1 和 ISO-639 标准确定。 定义在界面显示的字串,这样根据之前得到的 meta 信息可以得到要显示的字串。 同样的,名称是按照字母排序的,所以在 Europe_Central 前面添加,如下: “meta: Europe_Amsterdam“ ld“夏令时间显示名称“ ls“标准时间显示名称“ 4. 编译 ICU 资源 请参考 FAQ04011 进行编译和测试 FAQ04011如何编译 ICU 资源 如果只是测试修改后效果,执行步骤 A 即可;如果需要 build 后生效,则需要 执行全部步骤 A.在临时目录中编译 ICU 资源 1.在 external/icu4c 下新建临时目录 icubuild,进入 icubuild 目录 $mkdir external/icu4c/icuBuild $cd external/icu4c/icuBuild 2.执行 icuConfigureRun Linux 命令,生成 make 文件 $/./runConfigureICU Linux 3.执行 make -j2 命令 $make -j2 4.将生成的 external/icu4c/icuBuild/data/out/tmp/icudt48l.dat push 到手 机测试 $adb remount $adb push external/icu4c/icuBuild/out/data/tmp/icudt48l.dat system/usr/icu/ $adb reboot (千万记得重启手机才看得到修改后的效果) 注:JB 及以上是 icudt48l.dat B.COPY 所需文件 将第一步生成的 externalicu4cicubuilddataouttmpicudt48l.dat 复制 到 externalicu4cstubdata 下并改名为 icudt48l-all.dat,覆盖原来的同名 文件 注:JB 及以上是 icudt48l.dat 和 icudt48l-all.dat C.配置环境变量 重新配置环境变量(如果不配置正确会导致执行脚本出错)。以我的系统为例 ,配置过程如下: 1. 在终端中进入/work/pro/c70_u10_y320/mt6572_jb3 目录即: $cd /work/pro/c70_u10_y320/mt6572_jb3 2. 然后执行脚本(等价于./ build/envsetup.sh): $source build/envsetup.sh 3. 配置环境变量(注意“=”前后不要有空格)。 $export ANDROID_BUILD_TOP=/home/ckt/work/pro/c70_u10_y320/mt6572_jb3 执行完没有任何提示说明配置成功。 执行完没有任何提示说明配置成功,有提示说明配置出错。需要重新配置 D. 执行脚本,重新生成.dat 文件 执行脚本,如果遇到文档印尼语错误请用附件(或 MTK)提供的脚本 (icu_dat_generator.rar)替换后再执行,如下所示: 1. 进入/work/pro/c70_u10_y320/mt6572_jb3/ external/icu4c/studdata 目录 $cd external/icu4c/stubdata 2. 执行脚本 $./icu_dat_generator.py 如果该脚本执行成功,externalicu4cstubdataicudt48l- default.dat 会更新,如果看到文件的修改时间变成了最新的时间,就说明已经重新生成, 真正最后起作用的是 icudt48l- default.dat 这个文件。 注:JB 及以上是 icudt48l-default .dat E. 重新编译工程 修改后重新编译工程来测试效果,使用./mk ckt72_we_jb3 new 命令 F. 上传.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 步骤: 1.在 frameworks/base/core/res/res/xml/time_zones_by_country.xml 中搜索是否存在有关 Abidjan 的时区 ID。 Africa/Abidjan /时区 ID 2.在 packages/apps/Settings/res/xml/timezones.xml 中搜索时区 ID 是否存在时区设置项 (Settings-Date&time-Select time zone)对应的名称。 如果没有可以按照 timezones.xml 其它时区编写规则添加: Abidjan 3.在 external/icu4c/data/misc/metaZones.txt 中搜索是否有匹配时区 id Africa/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会显示格林治标准时区,如何修改为自定义的时区呢? (1)删除 CI“Africa/Abidjan“这项 (2)mapTimezones 中自定义时区规则,由于 mapTimezones 中顺序是按字母排序的, 所以将 Africa_Abidjan 这个规则添加在 Afghanistan001“Asia/Kabul“规 则之后。 Africa_Abidjan 001“Africa/Abidjan“ (3)metazoneInfo 添加 meta 信息(按字母排序) “Africa:Abidjan“ “Africa_Abidjan“, 4.在 external/icu4c/data/zone/en.txt 中添加显示字符串 (按字母排序) “meta:Africa_Abidjan“ ls“Abidjan Time“/自定义字符串 到此修改就结束了,修改完后可以按照FAQ04011如何编译ICU资源编译验证, 如果要设置开机向导显示自定义时区,即设置默认时区 需要在mediatek/config/ckt72_we_jb3/ProjectConfig_ckt.mk中设置 TIMEZONE=Africa/Abidjan 验证图片: 1.开机向导显示添加时区 2.自定义字符串 3添加时区选项 实验二。添加一个新时区 【问题描述】添加新时区 乌鲁木齐 Urumqi+8:00 先上图 步骤跟上面添加Abidjan 时区大同小异,举这个例子是想说明:

温馨提示

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

评论

0/150

提交评论