Android MTK开发时区修改 联系客服

发布时间 : 星期四 文章Android MTK开发时区修改更新完毕开始阅读b50be76159eef8c75fbfb3e3

[FAQ06455] 【Zone】如何添加一个新的时区

问题描述:有些项目需要出货到海外,比如非洲的一些国家,目前的版本中这些国家没有单独的时区,而是使用的如非洲东部时间,非洲标准时间等,为了提高当地用户体验,需要在setting菜单中增加一个时区,比如为出货到尼日尼亚的手机增加时区 尼日尼亚拉各斯。

解决方案:以加入Nigeria时区为例,应该如下修改: 1.找到该国家在zoneinfo中的时区信息。

时区信息的文件可以从ftp://munnari.oz.au/pub/下载到最新的,解压tzdata201x*.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表示不同的语言和区域),添加下面的内容:

3.修改framework/base/core/res/res/xml/time_zones_by_country.xml,添加下面的内容

这是添加一个时区的步骤,如果要添加多个时区,请重复或批量执行以上步骤。

[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{\ }

2)修改metaZoneinfo

添加meta信息,这样就可以通过显示规则名称Europe_Amsterdam得到meta信息Europe:Amsterdam。 \ {

\} }

3. 修改zone/nl.txt文件

不同的txt文件代表的是不同语言,语言和区域代码可通过查询ISO-3166-1和ISO-639标准确定。 定义在界面显示的字串,这样根据之前得到的meta信息可以得到要显示的字串。 同样的,名称是按照字母排序的,所以在Europe_Central前面添加,如下: \ 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所需文件

将第一步生成的external\\icu4c\\icubuild\\data\\out\\tmp\\icudt48l.dat复制到external\\icu4c\\stubdata下并改名为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 执行完没有任何提示说明配置成功。

执行完没有任何提示说明配置成功,有提示说明配置出错。需要重新配置