Android手机开发时间日期模块的总结

在手机的设置-时间日期界面会有如下显示:

Android手机开发时间日期模块的总结_第1张图片

  1、自动更新时间会有两种协议NITZ和NTP。

         NITZ是一种GSM/WCDMA基地台方式,必须插入SIM卡,且需要operator支持;可以提供时间和时区信息。NTP在无SIM卡或operator不支持NITZ时使用,单纯通过网络(GPRS/WIFI)获取时间,只提供时间信息,没有时区信息(因此在不支持NITZ的地区,自动获取时区功能实际上是无效的)。

2、关于时区的更新

      到网站ftp://ftp.iana.org/tz/releases/下载tzdata*.tar.gz。时区的相关修改一般都是通过更新一个tzdata包来决定的,这个包是MTK提供的。一般需求都可以满足,因为时区一般都是全球统一的。这个tzdata包解压出来是每个大洲的文件,里面包含每个国家对应的时区显示规则。将获得的tzdata放到源码下的固定文件夹下,然后执行一个提供好的脚本编译,在编译过程中可能需要好多文件的权限。最终会生成tzdata二进制文件。将这个文件放到手机里就好ok了。(编译规则不正确可能导致手机无法开机)。

3、时间日期中资源icu

      个人理解:icu就是全球化标准化的资源文件,是国际的开源工程。http://site.icu-project.org/里面包含时间日期格式,锁屏界面,电池电量等各个模块各个语言下的显示字符,按照一定规则显示出来。icu也是通过脚本编译出来的二进制文件,将直接放到手机里可以查看效果,编译的步骤只是前期需要。下面我总结了androidL和androidM平台的编译方式:

A. (KK,L)需要建立临时目录,并且在临时目录中编译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/icudtxxl.dat push到手机测试

$adb remount

$adb push external/icu4c/icuBuild/data/out/tmp/ icuxxl.dat system/usr/icu/

$adb reboot

KK:icudt51l.dat

Android L:icudt53l.dat

(M)无需建立临时目录

1.进入到$AOSP/external/icu/icu4c/source/目录下的

2.在该目录下执行 .runConfigureICU Linux命令生成MAKE文件

3.执行make INCLUDE_UNI_CORE_DATA=1

B. COPY所需文件

(KK ,L)将第一步生成的external\icu4c\icubuild\data\out\tmp\icudtxxl.dat复制到external\icu4c\stubdata下并改名为icudtxxl-all.dat,覆盖原来的同名文件。

KK版本是icudt5l.dat和icudt5l-all.dat

注意:Android L是没有icudt53l-all.dat文件的,直接把icudt53l.dat拷贝过来替换原来的文件即可。


总结的比较模糊。最近刚分了个模块,Sensor(传感器),等熟悉了在总结。

你可能感兴趣的:(Android手机开发时间日期模块的总结)