目的是把设置中使用默认语言区域关掉,并把使用24小时制打开
如下图为原始的:
修改后变成这样
定位源码
查找Android SDK xml配置文件中的关键字def_time_12_24
find vendor/ -name "*.xml" | xargs grep def_time_12_24
xargs: unmatched single quote; by default quotes are special to xargs unless you use the -0 option
find device/ -name "*.xml" | xargs grep def_time_12_24
find frameworks/base/ -name "*.xml" | xargs grep def_time_12_24
有一些工程可以直接在
frameworks/base/packages/SettingsProvider/res/values/defaults.xml
找到
<!-- Default for Settings.System.TIME_12_24 -->
<string name="def_time_12_24" translatable="false">12</string>
实现
修改xml
如果能直接在xml中找到,则直接把12改成24就行了
<!-- Default for Settings.System.TIME_12_24 -->
<string name="def_time_12_24" translatable="false">24</string>
如果找不到,需要自行添加,这里要注意,不同的芯片厂添加的位置不一样的。
比如mtk
vendor/mediatek/proprietary/packages/apps/SettingsProvider/res/values/defaults.xml
在最后面加上
<!-- Default for Settings.System.TIME_12_24 -->
<string name="def_time_12_24" translatable="false">24</string>
修改java
frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
如果是mtk,则是
vendor/mediatek/proprietary/packages/apps/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
在private void loadSystemSettings(SQLiteDatabase db)函数中添加这句:
loadStringSetting(stmt, Settings.System.TIME_12_24, R.string.def_time_12_24); // 24小时时间格式
附录
12 小时制与 24 小时制的详细解析
一、基本定义与核心区别
- 12 小时制(12-hour clock)
- 定义:将一天分为上午(AM, Ante Meridiem)和下午 / 晚上(PM, Post Meridiem)两个时段,每个时段 12 小时。
- 表示方式:
上午:1:00 AM - 11:59 AM(午夜 12 点为 12:00 AM)。
下午 / 晚上:1:00 PM - 11:59 PM(中午 12 点为 12:00 PM)。
例:下午 3 点表示为 3:00 PM,午夜 12 点表示为 12:00 AM。
- 24 小时制(24-hour clock)
- 定义:直接用 0:00 到 23:59 表示一天中的每个时刻,无需区分上午 / 下午。
- 表示方式:
凌晨:0:00 - 5:59。
上午:6:00 - 11:59。
下午:12:00 - 17:59。
晚上:18:00 - 23:59。
例:下午 3 点表示为 15:00,午夜 12 点表示为 00:00 或 24:00(部分场景中 24:00 用于表示一天结束)。
二、转换方法与示例
- 12 小时制转 24 小时制
- AM 时段:小时数不变,去掉 AM。
例:9:30 AM → 09:30(或 9:30)。 - PM 时段:小时数 + 12,去掉 PM。
例:3:15 PM → 15:15,12:00 PM → 12:00(中午)。 - 特殊情况:12:00 AM → 00:00(午夜)。
- 24 小时制转 12 小时制
- 0:00-11:59:小时数不变,加 AM(12:00 除外)。
例:8:45 → 8:45 AM,12:00 → 12:00 PM(中午)。 - 12:00-23:59:小时数 - 12,加 PM。
例:16:20 → 4:20 PM,23:00 → 11:00 PM。
特殊情况:24:00 → 12:00 AM(午夜,仅在特定场景使用)。
三、应用场景与文化差异
- 12 小时制的常见地区:
美国、英国、加拿大等英语国家,以及部分拉丁美洲、亚洲国家(如印度)。
场景:日常对话、电视节目、社交媒体(如 “晚上 7 点见”)。 - 24 小时制的常见地区:
中国、欧洲、澳大利亚、俄罗斯等多数国家。
场景:
专业性领域:医院(如用药时间 “14:00”)、航空(航班起飞时间 “06:30”)、军事(“22:00 时发动进攻”)。
公共服务:交通时刻表(火车 “19:45 开”)、公共设施开放时间(“08:00-22:00”)。
文化差异影响:
12 小时制更符合自然语言习惯,但可能因 AM/PM 遗漏导致误解(如 “12 点见面” 可能指中午或午夜)。
24 小时制因无歧义性,更适用于需要精确计时的场景(如科研、工业生产)。
四、延伸知识:特殊计时制与历史背景
- 军事时间(Military Time):本质是 24 小时制,但表述方式不同(如 “1500 小时” 表示 15:00,读作 “fifteen hundred hours”)。
- 历史起源:12 小时制起源于古埃及(将白天和黑夜各分为 12 小时),24 小时制则在工业革命后因标准化需求逐渐普及。
- 技术应用:计算机系统、编程中普遍使用 24 小时制(如 Unix 时间戳以 00:00:00 为起点)。
作者:帅得不敢出门