android版本如何修改时间,如何修改Android系统默认时间
相信很多人看到過Android手機或平板顯示XXXX-01-01這個奇怪的日期,沒錯,這就是Android設備的默認日期。當Android設備沒有聯網,無法獲取當前真實時間的時候,就會使用系統默認時間。大部分時候,系統默認時間是Epoch時間(即1970-01-01 00:00:00 UTC),也有OEM廠商會修改此默認時間。
進入正題,如何修改默認時間呢,很簡單,修改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系统默认时间的全部內容,希望文章能夠幫你解決所遇到的問題。