Loading api/system-current.txt +2 −0 Original line number Original line Diff line number Diff line Loading @@ -71,6 +71,7 @@ package android { field public static final java.lang.String CAPTURE_VIDEO_OUTPUT = "android.permission.CAPTURE_VIDEO_OUTPUT"; field public static final java.lang.String CAPTURE_VIDEO_OUTPUT = "android.permission.CAPTURE_VIDEO_OUTPUT"; field public static final java.lang.String CHANGE_COMPONENT_ENABLED_STATE = "android.permission.CHANGE_COMPONENT_ENABLED_STATE"; field public static final java.lang.String CHANGE_COMPONENT_ENABLED_STATE = "android.permission.CHANGE_COMPONENT_ENABLED_STATE"; field public static final java.lang.String CHANGE_CONFIGURATION = "android.permission.CHANGE_CONFIGURATION"; field public static final java.lang.String CHANGE_CONFIGURATION = "android.permission.CHANGE_CONFIGURATION"; field public static final java.lang.String CHANGE_DEVICE_IDLE_TEMP_WHITELIST = "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST"; field public static final java.lang.String CHANGE_NETWORK_STATE = "android.permission.CHANGE_NETWORK_STATE"; field public static final java.lang.String CHANGE_NETWORK_STATE = "android.permission.CHANGE_NETWORK_STATE"; field public static final java.lang.String CHANGE_WIFI_MULTICAST_STATE = "android.permission.CHANGE_WIFI_MULTICAST_STATE"; field public static final java.lang.String CHANGE_WIFI_MULTICAST_STATE = "android.permission.CHANGE_WIFI_MULTICAST_STATE"; field public static final java.lang.String CHANGE_WIFI_STATE = "android.permission.CHANGE_WIFI_STATE"; field public static final java.lang.String CHANGE_WIFI_STATE = "android.permission.CHANGE_WIFI_STATE"; Loading Loading @@ -6332,6 +6333,7 @@ package android.app.usage { method public java.util.List<android.app.usage.ConfigurationStats> queryConfigurations(int, long, long); method public java.util.List<android.app.usage.ConfigurationStats> queryConfigurations(int, long, long); method public android.app.usage.UsageEvents queryEvents(long, long); method public android.app.usage.UsageEvents queryEvents(long, long); method public java.util.List<android.app.usage.UsageStats> queryUsageStats(int, long, long); method public java.util.List<android.app.usage.UsageStats> queryUsageStats(int, long, long); method public void whitelistAppTemporarily(java.lang.String, long, android.os.UserHandle); field public static final int INTERVAL_BEST = 4; // 0x4 field public static final int INTERVAL_BEST = 4; // 0x4 field public static final int INTERVAL_DAILY = 0; // 0x0 field public static final int INTERVAL_DAILY = 0; // 0x0 field public static final int INTERVAL_MONTHLY = 2; // 0x2 field public static final int INTERVAL_MONTHLY = 2; // 0x2 core/java/android/app/usage/IUsageStatsManager.aidl +1 −0 Original line number Original line Diff line number Diff line Loading @@ -32,4 +32,5 @@ interface IUsageStatsManager { UsageEvents queryEvents(long beginTime, long endTime, String callingPackage); UsageEvents queryEvents(long beginTime, long endTime, String callingPackage); void setAppInactive(String packageName, boolean inactive, int userId); void setAppInactive(String packageName, boolean inactive, int userId); boolean isAppInactive(String packageName, int userId); boolean isAppInactive(String packageName, int userId); void whitelistAppTemporarily(String packageName, long duration, int userId); } } core/java/android/app/usage/UsageStatsManager.java +22 −0 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.app.usage; package android.app.usage; import android.annotation.SystemApi; import android.content.Context; import android.content.Context; import android.content.pm.ParceledListSlice; import android.content.pm.ParceledListSlice; import android.os.RemoteException; import android.os.RemoteException; Loading Loading @@ -245,4 +246,25 @@ public final class UsageStatsManager { // fall through // fall through } } } } /** * {@hide} * Temporarily whitelist the specified app for a short duration. This is to allow an app * receiving a high priority message to be able to access the network and acquire wakelocks * even if the device is in power-save mode or the app is currently considered inactive. * The caller must hold the CHANGE_DEVICE_IDLE_TEMP_WHITELIST permission. * @param packageName The package name of the app to whitelist. * @param duration Duration to whitelist the app for, in milliseconds. It is recommended that * this be limited to 10s of seconds. Requested duration will be clamped to a few minutes. * @param user The user for whom the package should be whitelisted. Passing in a user that is * not the same as the caller's process will require the INTERACT_ACROSS_USERS permission. * @see #isAppInactive(String) */ @SystemApi public void whitelistAppTemporarily(String packageName, long duration, UserHandle user) { try { mService.whitelistAppTemporarily(packageName, duration, user.getIdentifier()); } catch (RemoteException re) { } } } } core/java/android/os/IDeviceIdleController.aidl +4 −0 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,8 @@ package android.os; package android.os; import android.os.UserHandle; /** @hide */ /** @hide */ interface IDeviceIdleController { interface IDeviceIdleController { void addPowerSaveWhitelistApp(String name); void addPowerSaveWhitelistApp(String name); Loading @@ -23,5 +25,7 @@ interface IDeviceIdleController { String[] getSystemPowerWhitelist(); String[] getSystemPowerWhitelist(); String[] getFullPowerWhitelist(); String[] getFullPowerWhitelist(); int[] getAppIdWhitelist(); int[] getAppIdWhitelist(); int[] getAppIdTempWhitelist(); boolean isPowerSaveWhitelistApp(String name); boolean isPowerSaveWhitelistApp(String name); void addPowerSaveTempWhitelistApp(String name, long duration, int userId); } } core/java/android/os/PowerManager.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -927,6 +927,14 @@ public final class PowerManager { public static final String ACTION_POWER_SAVE_WHITELIST_CHANGED public static final String ACTION_POWER_SAVE_WHITELIST_CHANGED = "android.os.action.POWER_SAVE_WHITELIST_CHANGED"; = "android.os.action.POWER_SAVE_WHITELIST_CHANGED"; /** * @hide Intent that is broadcast when the set of temporarily whitelisted apps has changed. * This broadcast is only sent to registered receivers. */ @SdkConstant(SdkConstant.SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_POWER_SAVE_TEMP_WHITELIST_CHANGED = "android.os.action.POWER_SAVE_TEMP_WHITELIST_CHANGED"; /** /** * Intent that is broadcast when the state of {@link #isPowerSaveMode()} is about to change. * Intent that is broadcast when the state of {@link #isPowerSaveMode()} is about to change. * This broadcast is only sent to registered receivers. * This broadcast is only sent to registered receivers. Loading Loading
api/system-current.txt +2 −0 Original line number Original line Diff line number Diff line Loading @@ -71,6 +71,7 @@ package android { field public static final java.lang.String CAPTURE_VIDEO_OUTPUT = "android.permission.CAPTURE_VIDEO_OUTPUT"; field public static final java.lang.String CAPTURE_VIDEO_OUTPUT = "android.permission.CAPTURE_VIDEO_OUTPUT"; field public static final java.lang.String CHANGE_COMPONENT_ENABLED_STATE = "android.permission.CHANGE_COMPONENT_ENABLED_STATE"; field public static final java.lang.String CHANGE_COMPONENT_ENABLED_STATE = "android.permission.CHANGE_COMPONENT_ENABLED_STATE"; field public static final java.lang.String CHANGE_CONFIGURATION = "android.permission.CHANGE_CONFIGURATION"; field public static final java.lang.String CHANGE_CONFIGURATION = "android.permission.CHANGE_CONFIGURATION"; field public static final java.lang.String CHANGE_DEVICE_IDLE_TEMP_WHITELIST = "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST"; field public static final java.lang.String CHANGE_NETWORK_STATE = "android.permission.CHANGE_NETWORK_STATE"; field public static final java.lang.String CHANGE_NETWORK_STATE = "android.permission.CHANGE_NETWORK_STATE"; field public static final java.lang.String CHANGE_WIFI_MULTICAST_STATE = "android.permission.CHANGE_WIFI_MULTICAST_STATE"; field public static final java.lang.String CHANGE_WIFI_MULTICAST_STATE = "android.permission.CHANGE_WIFI_MULTICAST_STATE"; field public static final java.lang.String CHANGE_WIFI_STATE = "android.permission.CHANGE_WIFI_STATE"; field public static final java.lang.String CHANGE_WIFI_STATE = "android.permission.CHANGE_WIFI_STATE"; Loading Loading @@ -6332,6 +6333,7 @@ package android.app.usage { method public java.util.List<android.app.usage.ConfigurationStats> queryConfigurations(int, long, long); method public java.util.List<android.app.usage.ConfigurationStats> queryConfigurations(int, long, long); method public android.app.usage.UsageEvents queryEvents(long, long); method public android.app.usage.UsageEvents queryEvents(long, long); method public java.util.List<android.app.usage.UsageStats> queryUsageStats(int, long, long); method public java.util.List<android.app.usage.UsageStats> queryUsageStats(int, long, long); method public void whitelistAppTemporarily(java.lang.String, long, android.os.UserHandle); field public static final int INTERVAL_BEST = 4; // 0x4 field public static final int INTERVAL_BEST = 4; // 0x4 field public static final int INTERVAL_DAILY = 0; // 0x0 field public static final int INTERVAL_DAILY = 0; // 0x0 field public static final int INTERVAL_MONTHLY = 2; // 0x2 field public static final int INTERVAL_MONTHLY = 2; // 0x2
core/java/android/app/usage/IUsageStatsManager.aidl +1 −0 Original line number Original line Diff line number Diff line Loading @@ -32,4 +32,5 @@ interface IUsageStatsManager { UsageEvents queryEvents(long beginTime, long endTime, String callingPackage); UsageEvents queryEvents(long beginTime, long endTime, String callingPackage); void setAppInactive(String packageName, boolean inactive, int userId); void setAppInactive(String packageName, boolean inactive, int userId); boolean isAppInactive(String packageName, int userId); boolean isAppInactive(String packageName, int userId); void whitelistAppTemporarily(String packageName, long duration, int userId); } }
core/java/android/app/usage/UsageStatsManager.java +22 −0 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.app.usage; package android.app.usage; import android.annotation.SystemApi; import android.content.Context; import android.content.Context; import android.content.pm.ParceledListSlice; import android.content.pm.ParceledListSlice; import android.os.RemoteException; import android.os.RemoteException; Loading Loading @@ -245,4 +246,25 @@ public final class UsageStatsManager { // fall through // fall through } } } } /** * {@hide} * Temporarily whitelist the specified app for a short duration. This is to allow an app * receiving a high priority message to be able to access the network and acquire wakelocks * even if the device is in power-save mode or the app is currently considered inactive. * The caller must hold the CHANGE_DEVICE_IDLE_TEMP_WHITELIST permission. * @param packageName The package name of the app to whitelist. * @param duration Duration to whitelist the app for, in milliseconds. It is recommended that * this be limited to 10s of seconds. Requested duration will be clamped to a few minutes. * @param user The user for whom the package should be whitelisted. Passing in a user that is * not the same as the caller's process will require the INTERACT_ACROSS_USERS permission. * @see #isAppInactive(String) */ @SystemApi public void whitelistAppTemporarily(String packageName, long duration, UserHandle user) { try { mService.whitelistAppTemporarily(packageName, duration, user.getIdentifier()); } catch (RemoteException re) { } } } }
core/java/android/os/IDeviceIdleController.aidl +4 −0 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,8 @@ package android.os; package android.os; import android.os.UserHandle; /** @hide */ /** @hide */ interface IDeviceIdleController { interface IDeviceIdleController { void addPowerSaveWhitelistApp(String name); void addPowerSaveWhitelistApp(String name); Loading @@ -23,5 +25,7 @@ interface IDeviceIdleController { String[] getSystemPowerWhitelist(); String[] getSystemPowerWhitelist(); String[] getFullPowerWhitelist(); String[] getFullPowerWhitelist(); int[] getAppIdWhitelist(); int[] getAppIdWhitelist(); int[] getAppIdTempWhitelist(); boolean isPowerSaveWhitelistApp(String name); boolean isPowerSaveWhitelistApp(String name); void addPowerSaveTempWhitelistApp(String name, long duration, int userId); } }
core/java/android/os/PowerManager.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -927,6 +927,14 @@ public final class PowerManager { public static final String ACTION_POWER_SAVE_WHITELIST_CHANGED public static final String ACTION_POWER_SAVE_WHITELIST_CHANGED = "android.os.action.POWER_SAVE_WHITELIST_CHANGED"; = "android.os.action.POWER_SAVE_WHITELIST_CHANGED"; /** * @hide Intent that is broadcast when the set of temporarily whitelisted apps has changed. * This broadcast is only sent to registered receivers. */ @SdkConstant(SdkConstant.SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_POWER_SAVE_TEMP_WHITELIST_CHANGED = "android.os.action.POWER_SAVE_TEMP_WHITELIST_CHANGED"; /** /** * Intent that is broadcast when the state of {@link #isPowerSaveMode()} is about to change. * Intent that is broadcast when the state of {@link #isPowerSaveMode()} is about to change. * This broadcast is only sent to registered receivers. * This broadcast is only sent to registered receivers. Loading