Android手机开发时间日期模块的总结
程序员要不断写代码和学习才能跟上步伐。现在的我几乎不写代码,跟兄弟们都不是一条路上的人了,所以导致现在app几乎什么都不知道了。由于目前公司做的是手机,下面我就介绍下我的日常工作和负责的模块。每天九点半上班,吃个早餐上个厕所到工作就快十一点了。每天做着没有什么技术含量琐碎的工作,对于我这个菜鸟,有个问题设计到底层的就苦逼了。每个公司都有每个公司的套路,时间久了就好了。公司一般用的是MTK平台的源码支持。现在就以MTK平台为例。不过和其他平台的都大同小异。
在手机的设置-时间日期界面会有如下显示:
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(传感器),等熟悉了在总结。