author | Xindong Xu <xindong.xu@amlogic.com> | 2018-01-12 11:16:15 (GMT) |
---|---|---|
committer | Xindong Xu <xindong.xu@amlogic.com> | 2018-01-12 11:51:43 (GMT) |
commit | fe1bdb48e42a5ffb6f71645916922ca00e7ab357 (patch) | |
tree | aae3f4aca237f5f2450a5f7ea2328b193c12a0f0 | |
parent | bb9fad0ad606abf72086e32ff8ed32d7cae8b965 (diff) | |
download | frameworks-fe1bdb48e42a5ffb6f71645916922ca00e7ab357.zip frameworks-fe1bdb48e42a5ffb6f71645916922ca00e7ab357.tar.gz frameworks-fe1bdb48e42a5ffb6f71645916922ca00e7ab357.tar.bz2 |
frameworks: add DaylightSavingTime.java [1/1]
PD# 157786
add DaylightSavingTime.java
Change-Id: Ic9591b3a817ac75837300bad32333b4d9716a3a7
-rw-r--r-- | core/java/com/droidlogic/app/DaylightSavingTime.java | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/core/java/com/droidlogic/app/DaylightSavingTime.java b/core/java/com/droidlogic/app/DaylightSavingTime.java new file mode 100644 index 0000000..2003aee --- a/dev/null +++ b/core/java/com/droidlogic/app/DaylightSavingTime.java @@ -0,0 +1,118 @@ +package com.droidlogic.app; + +import android.os.SystemClock; +import android.os.ServiceManager; +import android.app.AlarmManager; +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.BroadcastReceiver; +import android.util.Log; +import android.text.TextUtils; +import android.provider.Settings; +import android.provider.Settings.SettingNotFoundException; + +import java.util.Calendar; +import java.util.Date; +import java.util.TimeZone; +import java.lang.String; + +public class DaylightSavingTime { + + private static final String TAG = "DaylightSavingTime"; + + private static final String DAYLIGHT_SAVING_TIME = "persist.sys.daylight.saving"; + private static final String IN_DAYLIGHT_SAVING_TIME = "persist.sys.in.daylight.saving"; + private static final int DAYLIGHT_TIME_AUTO = 0; + private static final int DAYLIGHT_TIME_ON = 1; + private static final int DAYLIGHT_TIME_OFF = 2; + private static final int DEFAULT_DAYLIGHT_TIME = DAYLIGHT_TIME_OFF; + private static final int DEFAULT_IN_DAYLIGHT_TIME = 0; + + private SystemControlManager mSystemControlManager; + private static DaylightSavingTime mDaylightSavingTime = null; + + private DaylightSavingTime() { + mSystemControlManager = new SystemControlManager(null); + } + + public static synchronized DaylightSavingTime getInstance() { + + if (mDaylightSavingTime == null) { + mDaylightSavingTime = new DaylightSavingTime(); + } + + return mDaylightSavingTime; + } + + public void setDaylightSavingTime(int value) { + + Calendar calendar = Calendar.getInstance(); + boolean isInDaylightTimeZone = calendar.getTimeZone(). + inDaylightTime(calendar.getTime()); + boolean hasInDaylightTime = hasInDaylightSavingTime(); + + Log.d(TAG, "setDaylightSavingTime = " + value); + Log.d(TAG, "hasInDaylightTime = " + hasInDaylightTime); + Log.d(TAG, "isInDaylightTimeZone = " + isInDaylightTimeZone); + + if (value == DAYLIGHT_TIME_AUTO) { + if (isInDaylightTimeZone && !hasInDaylightTime) { + updateDaylightSavingTime(calendar, 1); + } else if (!isInDaylightTimeZone && hasInDaylightTime) { + updateDaylightSavingTime(calendar, -1); + } + } else if (value == DAYLIGHT_TIME_ON) { + if (!hasInDaylightTime) { + updateDaylightSavingTime(calendar, 1); + } + } else if (value == DAYLIGHT_TIME_OFF) { + if (hasInDaylightTime) { + updateDaylightSavingTime(calendar, -1); + } + } else { + Log.d(TAG, "setDaylightSavingTime error value!!!"); + return; + } + + mSystemControlManager.setProperty(DAYLIGHT_SAVING_TIME, String.valueOf(value)); + } + + public int getDaylightSavingTime() { + int value = mSystemControlManager.getPropertyInt(DAYLIGHT_SAVING_TIME, + DEFAULT_DAYLIGHT_TIME); + + return value; + } + + public boolean hasInDaylightSavingTime() { + int value = mSystemControlManager.getPropertyInt(IN_DAYLIGHT_SAVING_TIME, + DEFAULT_IN_DAYLIGHT_TIME); + + return (value == 1); + } + + public synchronized void updateDaylightSavingTime(Calendar calendar, int diff) { + + calendar.add(Calendar.HOUR, diff); + //AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); + //alarmManager.setTime(calendar.getTimeInMillis()); + SystemClock.setCurrentTimeMillis(calendar.getTimeInMillis()); + mSystemControlManager.setProperty(IN_DAYLIGHT_SAVING_TIME, + String.valueOf((diff == 1) ? 1 : 0)); + } + + public void updateDaylightSavingTimeForce() { + Log.d(TAG, "updateDaylightSavingTimeForce"); + + int daylightTime = getDaylightSavingTime(); + Calendar calendar = Calendar.getInstance(); + boolean isInDaylightTimeZone = calendar.getTimeZone().inDaylightTime(calendar.getTime()); + + if ((isInDaylightTimeZone && daylightTime == DAYLIGHT_TIME_AUTO) + || daylightTime == DAYLIGHT_TIME_ON) { + updateDaylightSavingTime(calendar, 1); + } + } +} |