怎么修改android系统默认时区

怎么修改android系统默认时区,第1张

android平台,经常会遇到产品需要更改系统默认时区日期时间的问题。android更改时区相对比较容易实现,网上也有很多资料,直接设置一个属性即可,例如设置上海东八区,persistsystimezone=Asia/Shanghai。但是如何实现更改默认系统时间呢?

在android中,Linux内核中、rtc时钟,默认的起始日期都是1970年1月1日,那么如何把默认日期指到2012-01-01呢?笔者在实践中发现,在RTC驱动中可以很容易实现。在RTC驱动加载的时候,一般都有个probe函数需要先执行,因此在probe函数里下手最直接有效。RTC从1970-01-01开始,那当然很容易把默认值设置到2012-01-01,所需要设置的seconds也就是从1970-01-01所差的秒数,以秒为单位。因此,一旦读出来的RTC值小于我们预想的值比如2012-01-01(1325402913)小,我们就把它设置到这个时间点。

 

seconds = rtc_read_time();

printk("init PMU/RTC time to %ld \n", seconds);

if(seconds <= 1325402913) {

seconds = 1325402913;/2012-01-01/

ret = rtc_set_time(seconds);

RTC_DBG("Init Set time: %ld, ret =0x%x\n", seconds, ret);

}

笔者通过结果显示,在android平台上是可行的。要设置到哪天几点几分,只要算好具体1970-01-01 00:00差的秒数即可,简单明了。这样客户、用户使用起来更方便一些。

这个todayset方法有6个参数的重载,可以精确到秒,具体使用方法请自行查询API,所以在这里设

置系统默认时间就可以了。

如果要设置出厂默认年份需要修改

1) mediatek\frameworks\base\res\res\values\configxml将

default_restore_year 修改成 2013

<!-- default year for first power on-->

<integer name="default_restore_year">2013</integer>

2)

frameworks\base\services\java\com\android\server\NetworkTimeUpdateService

java

if(todayyear <= 2010){ //删除此行判断条件

todayset(todaymonthDay, todaymonth, 2013);

Logd(TAG, "Set the year to 2013");

SystemPropertiesset(BOOT_SYS_PROPERTY, "false");

SystemClocksetCurrentTimeMillis(todaytoMillis(false));}

修改后的表现可通过Setting菜单->时间日期设置):

[DESCRIPTION]

如何修改为出厂时区为指定的时区和默认的日期?

[Solution]

时间信息预设信息都是0, 在rtc 初试化 时候设置的

由于RTC 基本上不会断电,所以它的初试化只做一次,即使重新download bin 档

用FlashTool 执行Format, 再执行download (不要用format -->download button), 或

者RTC断电一段时间,就可以观察到日期恢复到出厂值。

修改RTC默认日期:

修改文件

\alps\mediatek\custom\[project]\preloader\ inc\cust_rtch

\alps\mediatek\custom\[project]\kernel\rtc\rtc\rtc-mt65XXh

#define RTC_DEFAULT_YEA 2012

#define RTC_DEFAULT_MTH 2

#define RTC_DEFAULT_DOM 1

修改默认日期:

在JB之前,进行以上修改即可,如果是JB以后,还需要进行以下修改:

(如果下面的修改还是无效,请参考FAQ08916,FAQ08719,FAQ07606)

[File]

framework\services\java\com\android\server\NetworkTimeUpdateServicejava

[Function]

systemReady()

[Code]

if(isFirstBoot){

Time today = new Time(TimegetCurrentTimezone());

todaysetToNow(); // 将时间恢复到RTC时间

todayset(1, 0, mDefaultYear ); //设立出厂默认日期,mDefaultYear是默认年份

如果想恢复出厂设置后,系统时间不变,可使用todaysetToNow();

如果想恢复出厂设置后,系统时间也恢复成出厂时间,可使用todayset(1, 0, mDefaultYear );

这个todayset方法有6个参数的重载,可以精确到秒,具体使用方法请自行查询API,所以在这里设

置系统默认时间就可以了。

如果要设置出厂默认年份需要修改

1) mediatek\frameworks\base\res\res\values\configxml将

default_restore_year 修改成 2013

<!-- default year for first power on-->

<integer name="default_restore_year">2013</integer>

2)

frameworks\base\services\java\com\android\server\NetworkTimeUpdateService

java

if(todayyear <= 2010){ //删除此行判断条件

todayset(todaymonthDay, todaymonth, 2013);

Logd(TAG, "Set the year to 2013");

SystemPropertiesset(BOOT_SYS_PROPERTY, "false");

SystemClocksetCurrentTimeMillis(todaytoMillis(false));}

修改后的表现可通过Setting菜单->时间日期设置):

修改默认时区:

在系统属性中增加下面字段(假设改为Moscow)

路径:\alps\mediatek\config\[project]\systemprop

persistsystimezone = Europe/Moscow

注意:默认时区的修改会影响默认时间的值,会根据与格林尼治标准时间差来更新时间,这是正常

现象。如当前设置为中国标准时间GMT+8:00,则手机的出厂时间会变为8:00。

手机会通过网络获得正确的时间,并根据您所在的时区来更新时间。如果您使用的是华为手机,您可以根据需要,手动调整日期、时间、时区。

进入设置 > 系统和更新 > 日期和时间,按需设置。

1、自动获取或手动设置日期和时间

开启自动设置开关,手机将与当前网络上的时间同步。

或关闭自动设置开关手动调整日期和时间。

2、修改时区

开启自动设置开关,手机将与当前网络上的时区同步。

关闭自动设置开关您可以手动修改时区。

3、设置 12 小时制或 24 小时制

开启24小时制开关,时间将以 24 小时格式显示。

关闭24小时制开关,时间将以 12 小时格式显示。

安卓开发app有时候存在时区的设置,可能有时候这样设置时区

AlarmManager mAlarmManager = (AlarmManager) getSystemService(ContextALARM_SERVICE);

mAlarmManagersetTimeZone("GMT+08:00");

导致其他应用时间发生错乱,可以修改这样设置时区,或许可以解决问题

TimeZone chinaTimeZone = TimeZonegetTimeZone("GMT+8");

TimeZonesetDefault(chinaTimeZone);

以上就是关于怎么修改android系统默认时区全部的内容,包括:怎么修改android系统默认时区、问:怎么修改android系统默认时区、android 怎么修改出厂默认日期和默认时区等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9754614.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存