如何修改Android系统默认时间
2017-09-23 17:06
1031 查看
相信很多人看到过Android手机或平板显示XXXX-01-01这个奇怪的日期,没错,这就是Android设备的默认日期。当Android设备没有联网,无法获取当前真实时间的时候,就会使用系统默认时间。大部分时候,系统默认时间是Epoch时间(即1970-01-01 00:00:00 UTC),也有OEM厂商会修改此默认时间。
进入正题,如何修改默认时间呢,很简单,修改SystemServer.java中EARLIEST_SUPPORTED_TIME常量的值。如下:
好了,知道了修改EARLIEST_SUPPORTED_TIME可以改变系统默认时间,还得知道怎么样修改EARLIEST_SUPPORTED_TIME呀。如果我需要把默认时间改为2016-01-01 00:00 UTC,那EARLIEST_SUPPORTED_TIME应该为什么数呢?
EARLIEST_SUPPORTED_TIME表示的是从Epoch开始所经历的毫秒数,回想一下,UNIX时间戳表示的是从Epoch开始所经历的秒数。也就是说,我们只需要把某个具体时间转换为UNIX时间戳,进而就可以转换为EARLIEST_SUPPORTED_TIME值了。
怎么把某个时间转换为UNIX时间戳呢,不少人编程去做,其实大可不必如此麻烦,Linux的date命令就可以完成这个转换。如下:
反之,也可以把某个UNIX时间戳转换为具体日期,如下:
注:frameworks/base/services/java/com/android/server/SystemServer.java
进入正题,如何修改默认时间呢,很简单,修改SystemServer.java中EARLIEST_SUPPORTED_TIME常量的值。如下:
private void run() { try { traceBeginAndSlog("InitBeforeStartServices"); // If a device's clock is before 1970 (before 0), a lot of // APIs crash dealing with negative numbers, notably // java.io.File#setLastModified, so instead we fake it and // hope that time from cell towers or NTP fixes it shortly. if (System.currentTimeMillis() < EARLIEST_SUPPORTED_TIME) { Slog.w(TAG, "System clock is before 1970; setting to 1970."); SystemClock.setCurrentTimeMillis(EARLIEST_SUPPORTED_TIME); } // ...... }
好了,知道了修改EARLIEST_SUPPORTED_TIME可以改变系统默认时间,还得知道怎么样修改EARLIEST_SUPPORTED_TIME呀。如果我需要把默认时间改为2016-01-01 00:00 UTC,那EARLIEST_SUPPORTED_TIME应该为什么数呢?
EARLIEST_SUPPORTED_TIME表示的是从Epoch开始所经历的毫秒数,回想一下,UNIX时间戳表示的是从Epoch开始所经历的秒数。也就是说,我们只需要把某个具体时间转换为UNIX时间戳,进而就可以转换为EARLIEST_SUPPORTED_TIME值了。
怎么把某个时间转换为UNIX时间戳呢,不少人编程去做,其实大可不必如此麻烦,Linux的date命令就可以完成这个转换。如下:
$ date +%s --date 19700101 --utc // 1970-01-01 00:00 UTC 0 $ date +%s --date 20120101 --utc // 2012-01-01 00:00 UTC 1325376000 $ date +%s --date 20160101 --utc // 2016-01-01 00:00 UTC 1451606400
反之,也可以把某个UNIX时间戳转换为具体日期,如下:
$ date --date=@86400 --utc // Android默认EARLIEST_SUPPORTED_TIME值为86400×1000 1970年 01月 02日 星期五 00:00:00 UTC $ date --date=@1451606400 --utc 2016年 01月 01日 星期五 00:00:00 UTC $ date --date=@1451606400 2016年 01月 01日 星期五 08:00:00 CST
注:frameworks/base/services/java/com/android/server/SystemServer.java
相关文章推荐
- Android系统移植与调试之------->如何修改Android设备的默认休眠时间
- 如何修改系统默认时间
- Android中如何修改系统时间(应用程序获得系统权限)
- android.uid.system Android中如何修改系统时间(应用程序获得系统权限)
- android 中对 gps 默认关闭+语言默认中文的设置+时区设置+修改系统名字+修改系统默认时间+修改屏幕休眠时间
- android 中对 gps 默认关闭+语言默认中文的设置+时区设置+修改系统名字+修改系统默认时间+修改屏幕休眠时间+修改usb debug默认关闭+mtk修改默认字体大小
- Android中如何修改系统时间
- Android中如何修改系统时间(应用程序获得系统权限)
- android 如何修改默认时间格式
- Android中如何修改系统时间(应用程序获得系统权限)
- Android中如何修改系统时间(应用程序获得系统权限)
- Android中如何修改系统时间(应用程序获得系统权限)
- Android系统移植与调试之------->如何修改Android的默认语言、默认时区
- Android中如何修改系统时间(应用程序获得系统权限)
- Android中如何修改系统时间(应用程序获得系统权限)
- 如何在Android系统上修改系统默认的字体大小
- Android中如何修改系统时间(应用程序获得系统权限)
- Android中如何修改系统时间(应用程序获得系统权限)
- android 如何修改默认时间格式 .
- Android中如何修改系统时间