Add a new key to Settings.Global to obtain the number of boot.
BUG=26212981
Change-Id: I5ca51ca624a30dc2d96e547a85a712e273af1931
diff --git a/api/current.txt b/api/current.txt
index e5e1248..b94a4ff 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -32207,6 +32207,7 @@
field public static final java.lang.String AUTO_TIME = "auto_time";
field public static final java.lang.String AUTO_TIME_ZONE = "auto_time_zone";
field public static final java.lang.String BLUETOOTH_ON = "bluetooth_on";
+ field public static final java.lang.String BOOT_COUNT = "boot_count";
field public static final java.lang.String CONTACT_METADATA_SYNC = "contact_metadata_sync";
field public static final android.net.Uri CONTENT_URI;
field public static final java.lang.String DATA_ROAMING = "data_roaming";
diff --git a/api/system-current.txt b/api/system-current.txt
index 7d94199..6b835be 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -34694,6 +34694,7 @@
field public static final java.lang.String AUTO_TIME = "auto_time";
field public static final java.lang.String AUTO_TIME_ZONE = "auto_time_zone";
field public static final java.lang.String BLUETOOTH_ON = "bluetooth_on";
+ field public static final java.lang.String BOOT_COUNT = "boot_count";
field public static final java.lang.String CONTACT_METADATA_SYNC = "contact_metadata_sync";
field public static final android.net.Uri CONTENT_URI;
field public static final java.lang.String DATA_ROAMING = "data_roaming";
diff --git a/api/test-current.txt b/api/test-current.txt
index d1ed20c..8007a46 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -32222,6 +32222,7 @@
field public static final java.lang.String AUTO_TIME = "auto_time";
field public static final java.lang.String AUTO_TIME_ZONE = "auto_time_zone";
field public static final java.lang.String BLUETOOTH_ON = "bluetooth_on";
+ field public static final java.lang.String BOOT_COUNT = "boot_count";
field public static final java.lang.String CONTACT_METADATA_SYNC = "contact_metadata_sync";
field public static final android.net.Uri CONTENT_URI;
field public static final java.lang.String DATA_ROAMING = "data_roaming";
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index a40cf96..9b22c21 100755
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -8260,6 +8260,13 @@
"allow_user_switching_when_system_user_locked";
/**
+ * Boot count since the device starts running APK level 24.
+ * <p>
+ * Type: int
+ */
+ public static final String BOOT_COUNT = "boot_count";
+
+ /**
* Settings to backup. This is here so that it's in the same place as the settings
* keys and easy to update.
*
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index 6218c4e..91d8671 100644
--- a/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -50,6 +50,7 @@
import android.os.WorkSource;
import android.provider.Settings;
import android.provider.Settings.Secure;
+import android.provider.Settings.SettingNotFoundException;
import android.service.dreams.DreamManagerInternal;
import android.util.EventLog;
import android.util.Slog;
@@ -57,6 +58,7 @@
import android.util.TimeUtils;
import android.view.Display;
import android.view.WindowManagerPolicy;
+
import com.android.internal.app.IAppOpsService;
import com.android.internal.app.IBatteryStats;
import com.android.internal.os.BackgroundThread;
@@ -537,6 +539,8 @@
}
}
mBootCompletedRunnables = null;
+
+ incrementBootCount();
}
}
}
@@ -772,7 +776,7 @@
}
}
- void updateLowPowerModeLocked() {
+ private void updateLowPowerModeLocked() {
if (mIsPowered && mLowPowerModeSetting) {
if (DEBUG_SPEW) {
Slog.d(TAG, "updateLowPowerModeLocked: powered, turning setting off");
@@ -2912,6 +2916,20 @@
return suspendBlocker;
}
+ private void incrementBootCount() {
+ synchronized (mLock) {
+ int count;
+ try {
+ count = Settings.Global.getInt(
+ getContext().getContentResolver(), Settings.Global.BOOT_COUNT);
+ } catch (SettingNotFoundException e) {
+ count = 0;
+ }
+ Settings.Global.putInt(
+ getContext().getContentResolver(), Settings.Global.BOOT_COUNT, count + 1);
+ }
+ }
+
private static WorkSource copyWorkSource(WorkSource workSource) {
return workSource != null ? new WorkSource(workSource) : null;
}