的用户android系统时间设置吗,Android源码分析(九)-----如何修改Android系统默认时间...

一 : 修改Android系统默认时间

源码路径:frameworks/base/services/java/com/android/server/SystemServer.java

主要变量EARLIEST_SUPPORTED_TIME

// The earliest supported time. We pick one day into 1970, to

// give any timezone code room without going into negative time.

private static final long EARLIEST_SUPPORTED_TIME = 1514764800000L;//20180101 00:00:00

通过SystemClock.setCurrentTimeMillis(EARLIEST_SUPPORTED_TIME)设置系统时间,只需要修改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);

}

设置系统默认时间这段代码请放在startOtherServices()之后,否则无效。

// Start services.

try {

traceBeginAndSlog("StartServices");

startBootstrapServices();

startCoreServices();

startOtherServices();

//add by jasun@180730 for default time start

if (System.currentTimeMillis() < EARLIEST_SUPPORTED_TIME) {

Slog.w(TAG, "System clock is before 2018.; setting to 2018.");

SystemClock.setCurrentTimeMillis(EARLIEST_SUPPORTED_TIME);

}

//add by jasun@180730 for default time end

SystemServerInitThreadPool.shutdown();

} catch (Throwable ex) {

Slog.e("System", "******************************************");

Slog.e("System", "************ Failure starting system services", ex);

throw ex;

} finally {

traceEnd();

}

二 : 时间转换为UNIX时间戳

EARLIEST_SUPPORTED_TIME变量值如何获取?

Linux命令转换时间戳,如下:

$ 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值