android设置系统默认开机时间
1.设置RTC时间,该时间是如果RCT时钟断电以后使用的默认时间
Android L之前:
\alps\mediatek\custom\[project]\preloader\ inc\cust_rtc.h
\alps\mediatek\custom\[project]\kernel\rtc\rtc\rtc-mt65XX.h
Android L或M:
bootable\bootloader\preloader\custom\ [project] \inc\ cust_rtc.h
#define RTC_DEFAULT_YEA 2019
#define RTC_DEFAULT_MTH 7
#define RTC_DEFAULT_DOM 1
2、修改默认日期:
framework\services\java\com\android\server\NetworkTimeUpdateService.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | /** Initialize the receivers and initiate the first NTP request */ public void systemReady() { registerForTelephonyIntents(); registerForAlarms(); registerForConnectivityIntents(); mThread = new HandlerThread(TAG); mThread.start(); mHandler = new MyHandler(mThread.getLooper()); // Check the network time on the new thread mHandler.obtainMessage(EVENT_POLL_NETWORK_TIME).sendToTarget(); mSettingsObserver = new SettingsObserver(mHandler, EVENT_AUTO_TIME_CHANGED); mSettingsObserver.observe(mContext); /// M: comment @{ add GPS Time Sync Service Log.d(TAG, "add GPS time sync handler and looper" ); mGpsThread = new HandlerThread(TAG); mGpsThread.start(); mGpsHandler = new MyHandler(mGpsThread.getLooper()); mGpsTimeSyncObserver = new GpsTimeSyncObserver(mGpsHandler, EVENT_GPS_TIME_SYNC_CHANGED); mGpsTimeSyncObserver.observe(mContext); /// @} /// M: Configure default date/time to current year after factory reset or first bootup @{ String icsString = SystemProperties.get(ICS_BOOT_SYS_PROPERTY, "" ); boolean isIcsVersion = (icsString != null && "" .equals(icsString)) ? false : true ; if (isIcsVersion){ return ; } mDefaultYear = mContext.getResources().getInteger(com.mediatek.internal.R.integer.default_restore_year); mIsOverMobile = mContext.getResources().getBoolean(com.mediatek.internal.R.bool.config_ntp_by_mobile); String tempString = SystemProperties.get(BOOT_SYS_PROPERTY, "" ); boolean isFirstBoot = (tempString != null && "" .equals(tempString)) ? true : false ; if (isFirstBoot){ tempString = SystemProperties.get( "ro.kernel.qemu" , "" ); boolean isEmulator = "1" .equals(tempString) ? true : false ; if (isEmulator){ Log.d(TAG, "isEmulator:" + tempString); return ; } String decryptState = SystemProperties.get( "vold.decrypt" , "" ); Log.d(TAG, "decryptState:" + decryptState); if ( "" .equals(decryptState) || DECRYPT_STATE.equals(decryptState)){ Time today = new Time(Time.getCurrentTimezone()); today.setToNow(); Log.d(TAG, "First boot:" + tempString + " with date:" + today); //today.set(today.monthDay, today.month, mDefaultYear); today.set( 1 , 7 , mDefaultYear); //2019.7.1 Log.d(TAG, "Set the year to " + mDefaultYear); SystemProperties.set(BOOT_SYS_PROPERTY, "false" ); SystemClock.setCurrentTimeMillis(today.toMillis( false )); } } ///@} } |
在mediatek\frameworks\base\res\res\values\config.xml里修改
<integer name="default_restore_year">2019</integer>
分类:
android开发
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)