首页 > 技术文章 > android设置系统默认开机时间

suxiaoqi 2019-07-15 15:18 原文

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

/** 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>

 

推荐阅读