Am/Pm,日期格式,日期字串客制化


一、时间格式

时间的小时制分为12小时制和24小时制。由于一天是24小时,如果是12小时制必须把一天分为2段,为了区分当前时间是哪一段,因此在显示上必须加上一个标记。一般是凌晨开始到中午是一个时间段叫做上午(am),下一个时间段就是下午(pm).比如上午8点、下午2点。

在Android时间显示上每种语言默认时间格式不同,标记时间段的翻译也不同。比如英文默认是24小时制,时间段使用am、pm;中文默认是12小时制,时间段使用上午、下午。

这些都是在ICU里面定义的,具体定义在external\icu4c\data\locales\xx.txt(xx是语言代码,ISO_639-1),找到gregorian部分,如波斯fa.txt中定义
gregorian{
AmPmMarkers{
     "قبل‌ازظهر",----->am
"
بعدازظهر",-----àpm
}
DateTimePatterns{
"H:mm:ss (zzzz)",----àH代表24小时制,h代表12小时制
"H:mm:ss (z)",
"H:mm:ss",
"H:mm",
……

AmPmMarkers这个就是定义时间段字串,H:mm是时间格式显示,对于其他语言比如印尼语显示为H.mm如果要修改时间段、小时制或者显示格式,可以在此处修改。注意修改ICU资源需要单独编译ICU资源,在new整个工程,否则不会其效果。

二、日期格式

日期显示多种多样,有的带有年份,有的没有,有的月份是全称,有的是简写,比如下拉通知栏日期显示为:TUE,JANUARY 1 Setting里面日期显示为:2013 Jan 1,Tue

如何控制这些显示模式、以及这些子串在那定义呢?

一般日期显示会实例化一个Date Format实例,这个实例在format需要三个参数,一个时间,一个是Locale(指定使用那个语言字串串,默认是系统语言),另一个就是显示模式了(format string).

如下例子:

  1. long time = SystemClock.currentThreadTimeMillis();
  2. SimpleDateFormat shortDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm, EE",new Locale(“zh”));
  3. String sDate = shortDateFormat.format(new Date(time));
  4. textView.setText(sDate);

几点说明:

1) 年、月、星期是简写还是全部显示,有对应字母个数决定,如:

  • yyyy年份全称,yy是简写,2010,10
  • MMMM显示全称,MMM简写,MM阿拉伯数字全称,M阿拉伯数字简称January,Jan,01,1
  • EEEE 星期的全称,EE 星期的简称Tuesday, Tue
  • dd 日的全称,d日的简称01, 1

2) 上述这些月、星期的字串也是定义在ICU的locale里面各个语言资源文件中。

Android 4.4 更新说明


【版本】
Android 4.4 / Android Kitkat

【API】
要进一步优化您的应用在运行 Android 4.4 的设备上的性能,应将您的 targetSdkVersion 设置为 "19"

【重要变更】

    • 增加打印框架,允许用户使用通过 WLAN、蓝牙或其他服务连接的打印机打印任何文档。
    • 增加了短信接口,应用可以接收、起草、发送、挂起等操作的短信和彩信。
    • 增加对NFC和红外设备的支持。
    • 改善了多媒体部分的功能,包括,视频的自适应,音频的点播等。
    • 增加了新的动画控制框架和图片处理接口。
    • 改进了文件及存储空间的管理框架,增加了权限管理。
    • 增加了对新传感器的支持和改善传感器支持框架。
    • 增加了全屏模式,透明系统状态栏等新主题样式。
    • 增强的通知侦听器
    • 可绘制的 RTL 布局镜像
    • 无障碍功能

手机时间、夏令时及Android时间更新方式


一、时间

时间是指世界的时间,是对某一时刻的表示。手机系统的时间,通常是在状态栏、锁屏界面等表现给用户,让用户知道现在是什么时间。时间分为标准时间和夏令时时间,标准时间是指正常的时间,夏令时是指满足特定区域的需求,人为的将时间往前调一个小时,如下面的介绍。

二、夏令时

夏时令(Daylight Saving Time:DST),又称“日光节约时制”和“夏令时间”,是一种为节约能源而人为规定地方时间的制度,在这一制度实行期间所采用的统一时间称为“夏令时间”。一般在天亮早的夏季人为将时间提前一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。各个国家具体夏令时规定不同。比如美国芝加哥时区夏时制开始时间:2014-3-9 2:00:00夏时制结束时间:2014-11-2 2:00:00;俄罗斯从2014年10月26日起取消自2011年开始使用的夏令时,转变为“冬季时间”,未来也不再使用冬夏时制转换。

如果发现系统时区和预想的时区或者当地时区相差一个小时原因可能是夏令时制的问题:

可以通过下面2中方法确认:

1、可以网上查询该时区是否有夏令时,然后查看当前的系统时间是否在此时区的夏令时执行时间段内。

2、调整手机系统日期,看看时区时差是否有变化。比如手机时区为芝加哥时区,系统时间为8月15日,显示GMT:-5,如果系统时间调整为12月1日,将会显示GMT:-6。

三、Android时间、时区更新方式

在目前Android版本,通过网络同步时间有两种方式:NITZ和NTP。NITZ是否支持取决于SIM的运行商,目前国内运行商还不支持。NTP是通过网络获取网络时间,只要手机可以正常联网就可以更新时间。

下面是这两种更新方式的对比:

  NITZ NTP
可同步时间 Y Y
可同步时区 Y N
必备条件 插入SIM卡且运行商持 可访问互联网
同步对象 运营商基站 NTP Server

如果勾选Setting里面的自动更新时间没有效果:

说明通过NITZ和NTP方式都无法更新时间,一般来说是在运营商不支持NITZ,或者网络状况有问题时发生,比如手机没有连上WIFI或GPRS,不能访问互联网,或者手机网络访问NTP server延时太大,或者NTP server地址配置不正确等。

1、如何验证运营商是否支持NITZ消息呢?

可以使用该SIM卡在对比机中测试,如果对比机也无法更新时间,说明,此卡运营商不支持nitz消息。

2、如何确认是手机是否可以正常访问互联网

可以打开一个网页,看看是否可以正常打开。

如果sim运行商支持NITZ消息或者手机可以正常联网,还是无法更新时间,需要根据log分析具体的原因,如何分析可以参考问题分析模块

需要注意的是NTP只更新时间,不会更新时区。

各标准的HDMI的差异说明


HDMI 1.1版本

这是第一版HDMI版本,当初推出的HDMI1.1版最高只支持1080i标准的信号,却不能完整的支持1080P高清规格。在前些年还能基本满足用户的需求,时至今日,仅仅支持1080i格式已然不能满足广大影音发烧友的需求。

当初的第一版HDMI1.1已经是非常不错了,虽然在兼容性上有一些问题,支持800×600、1024×768等标准分辨率。即便是现阶段低端平板电视采用的1366×768分辨率,这一最初版本的HDMI借口已然是在兼容性上不能为大家接受了。更有甚者,配备这种借口的液晶电视在播放高清信号时还无法进行点对点输出,所呈现的画面还会出现模糊不清、色彩不准等问题。

HDMI 1.2版本

HDMI1.2版本的推出,很大程度上解决了HDMI 1.1支持的分辨率较低、同电脑设备兼容性较差等问题,HDMI标准组织在05年推出了HDMI 1.2标准。这种基于t-tOMtT2版标准的接口在单链接上达到了165MHz带宽,可以提供4.95Gbps的数据传输率,也就能完整支持1080p的全高清视频信号。

通过修改规范标准,HDMI1.2版本还增强了对PC设备显示接口的兼容性,也就能轻松支持包括1366×768在内的所有显示分辨率,更是能够全面支持显示画面的点对点模式。

HDMI 1.3版本

HDMI1.3版带来最大的变化是将单链接带宽频率提升到340MHz,也就能让这些液晶电视获得10.2Gbps的数据传输量,1.3版的线是有4对传输通道组成,其中1对通道是时钟通道,另外3对是TMDS通道(最小化传输差分信号),他们的传输速度分别为3.4GBPS。那么3对就是3*3.4=10.2GPBS更是能将HDMI1.1、1.2版本所支持的24位色深大幅扩充至30位、36位及48位(RGB或YCbCr)。HDMI 1.3的是支持1080P;一些要求不高的3D也支持(理论上不支持,实际有些可以)。

HDMI 1.4版本

HDMI 1.4已经可以支持4K了,但是受制于带宽10.2Gbps,1080p(1920x1200@30Hz-50Hz)最高只能达到3840×2160分辨率和30FPS帧率。

HDMI 2.0版本

HDMI 2.0则将带宽扩充到了18Gbps,可以支持3840×2160分辨率和50FPS、60FPS帧率。 支持即插即用和热插拔 支持720P,1080i@60Hz,1080p(1920x1200@70Hz)(3840x2160@60fps@24Hz/25Hz/30Hz)高分辨;支持全高清和3D显示,(4Kx2K@50/60fps@24Hz),支持PS3这样超大型游戏的流畅运行。支持Dolby True-HD,DTS-HD Master audio ,同时在音频方面支持最多32个声道,以及最高1536kHz采样率。
其它主要改进:
- 可在同一屏幕上向多个用户同步传输双视频流
- 可向最多四位用户同步传输多个音频流
- 支持21:9超宽屏显示
- 视频和音频流动态同步
- CEC扩展可通过单个控制点更好地掌控消费电子设备
HDMI 2.0并没有定义新的数据线和接头、接口,因此能保持对HDMI 1.x的完美向下兼容,现有的二类数据线可直接使用。至于现在的设备是否可以升级到HDMI 2.0,目前还没有这方面的动向,需要厂商对硬件、固件进行更新才行。HDMI Forum Inc.还特别指出,HDMI 2.0并不会取代HDMI 1.x,而是基于后者的增强,任何设备要想支持HDMI 2.0必须首先保证对HDMI 1.x的基础性支持

HDMI 2.1

HDMI 2.1根据飞利浦撰写的白皮书增加支持“动态元” 简而言之:“HDMI 2.0A涵盖HDR EOTF信令和静态元数据元数据的动态是HDMI 2.1所涵盖。”

- 带宽提升至48Gbps
- 支持4K 120Hz及8K 60Hz
- 支持高动态范围成像(HDR),可以针对场景或帧数进行优化
- 支持eARC功能
- 可针对游戏帧数进行信号同步,减少画面撕裂
- 向后兼容HDMI 2.0、HDMI 1.4