Loading api/system-current.txt +42 −0 Original line number Diff line number Diff line Loading @@ -1394,6 +1394,7 @@ package android.content { method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public void startActivityAsUser(@RequiresPermission @NonNull android.content.Intent, @NonNull android.os.UserHandle); field public static final String APP_PREDICTION_SERVICE = "app_prediction"; field public static final String BACKUP_SERVICE = "backup"; field public static final String BATTERY_STATS_SERVICE = "batterystats"; field public static final String BUGREPORT_SERVICE = "bugreport"; field public static final String CONTENT_SUGGESTIONS_SERVICE = "content_suggestions"; field public static final String CONTEXTHUB_SERVICE = "contexthub"; Loading Loading @@ -5212,6 +5213,23 @@ package android.os { method @NonNull public android.os.BatterySaverPolicyConfig.Builder setLocationMode(int); } public class BatteryStatsManager { method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) @NonNull public android.os.connectivity.WifiBatteryStats getWifiBatteryStats(); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteFullWifiLockAcquiredFromSource(@NonNull android.os.WorkSource); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteFullWifiLockReleasedFromSource(@NonNull android.os.WorkSource); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiBatchedScanStartedFromSource(@NonNull android.os.WorkSource, @IntRange(from=0) int); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiBatchedScanStoppedFromSource(@NonNull android.os.WorkSource); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiMulticastDisabled(int); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiMulticastEnabled(int); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiOff(); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiOn(); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiRssiChanged(@IntRange(from=0xffffff81, to=0) int); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiScanStartedFromSource(@NonNull android.os.WorkSource); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiScanStoppedFromSource(@NonNull android.os.WorkSource); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiState(int, @Nullable String); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiSupplicantStateChanged(int, boolean); } public class Binder implements android.os.IBinder { method public static void setProxyTransactListener(@Nullable android.os.Binder.ProxyTransactListener); } Loading Loading @@ -5700,6 +5718,30 @@ package android.os { } package android.os.connectivity { public final class WifiBatteryStats implements android.os.Parcelable { method public int describeContents(); method public long getEnergyConsumedMaMillis(); method public long getIdleTimeMillis(); method public long getKernelActiveTimeMillis(); method public long getLoggingDurationMillis(); method public long getMonitoredRailChargeConsumedMaMillis(); method public long getNumAppScanRequest(); method public long getNumBytesRx(); method public long getNumBytesTx(); method public long getNumPacketsRx(); method public long getNumPacketsTx(); method public long getRxTimeMillis(); method public long getScanTimeMillis(); method public long getSleepTimeMillis(); method public long getTxTimeMillis(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.os.connectivity.WifiBatteryStats> CREATOR; } } package android.os.image { public class DynamicSystemClient { Loading core/java/android/app/SystemServiceRegistry.java +11 −0 Original line number Diff line number Diff line Loading @@ -125,6 +125,7 @@ import android.net.wifi.rtt.WifiRttManager; import android.nfc.NfcManager; import android.os.BatteryManager; import android.os.BatteryStats; import android.os.BatteryStatsManager; import android.os.BugreportManager; import android.os.Build; import android.os.DropBoxManager; Loading Loading @@ -1286,6 +1287,16 @@ public final class SystemServiceRegistry { return new DynamicSystemManager( IDynamicSystemService.Stub.asInterface(b)); }}); registerService(Context.BATTERY_STATS_SERVICE, BatteryStatsManager.class, new CachedServiceFetcher<BatteryStatsManager>() { @Override public BatteryStatsManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow( Context.BATTERY_STATS_SERVICE); return new BatteryStatsManager( IBatteryStats.Stub.asInterface(b)); }}); //CHECKSTYLE:ON IndentationCheck } Loading core/java/android/content/Context.java +8 −0 Original line number Diff line number Diff line Loading @@ -4744,6 +4744,14 @@ public abstract class Context { @SystemApi public static final String TELEPHONY_REGISTRY_SERVICE = "telephony_registry"; /** * Use with {@link #getSystemService(String)} to retrieve an * {@link android.os.BatteryStatsManager}. * @hide */ @SystemApi public static final String BATTERY_STATS_SERVICE = "batterystats"; /** * Determine whether the given permission is allowed for a particular * process and user ID running in the system. Loading core/java/android/os/BatteryStats.java +56 −10 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.os; import static android.app.ActivityManager.PROCESS_STATE_BOUND_TOP; import static android.app.ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE_LOCATION; import android.annotation.IntDef; import android.annotation.UnsupportedAppUsage; import android.app.ActivityManager; import android.content.Context; Loading Loading @@ -48,6 +49,8 @@ import com.android.internal.util.Preconditions; import java.io.FileDescriptor; import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Collections; Loading Loading @@ -76,7 +79,7 @@ public abstract class BatteryStats implements Parcelable { protected static final boolean SCREEN_OFF_RPM_STATS_ENABLED = false; /** @hide */ public static final String SERVICE_NAME = "batterystats"; public static final String SERVICE_NAME = Context.BATTERY_STATS_SERVICE; /** * A constant indicating a partial wake lock timer. Loading Loading @@ -223,6 +226,15 @@ public abstract class BatteryStats implements Parcelable { @Deprecated public static final int STATS_SINCE_UNPLUGGED = 2; /** @hide */ @IntDef(flag = true, prefix = { "STATS_" }, value = { STATS_SINCE_CHARGED, STATS_CURRENT, STATS_SINCE_UNPLUGGED }) @Retention(RetentionPolicy.SOURCE) public @interface StatName {} // NOTE: Update this list if you add/change any stats above. // These characters are supposed to represent "total", "last", "current", // and "unplugged". They were shortened for efficiency sake. Loading Loading @@ -2490,6 +2502,25 @@ public abstract class BatteryStats implements Parcelable { public static final int NUM_WIFI_SUPPL_STATES = WIFI_SUPPL_STATE_UNINITIALIZED+1; /** @hide */ @IntDef(flag = true, prefix = { "WIFI_SUPPL_STATE_" }, value = { WIFI_SUPPL_STATE_INVALID, WIFI_SUPPL_STATE_DISCONNECTED, WIFI_SUPPL_STATE_INTERFACE_DISABLED, WIFI_SUPPL_STATE_INACTIVE, WIFI_SUPPL_STATE_SCANNING, WIFI_SUPPL_STATE_AUTHENTICATING, WIFI_SUPPL_STATE_ASSOCIATING, WIFI_SUPPL_STATE_ASSOCIATED, WIFI_SUPPL_STATE_FOUR_WAY_HANDSHAKE, WIFI_SUPPL_STATE_GROUP_HANDSHAKE, WIFI_SUPPL_STATE_COMPLETED, WIFI_SUPPL_STATE_DORMANT, WIFI_SUPPL_STATE_UNINITIALIZED, }) @Retention(RetentionPolicy.SOURCE) public @interface WifiSupplState {} static final String[] WIFI_SUPPL_STATE_NAMES = { "invalid", "disconn", "disabled", "inactive", "scanning", "authenticating", "associating", "associated", "4-way-handshake", Loading Loading @@ -2641,34 +2672,48 @@ public abstract class BatteryStats implements Parcelable { public static final int WIFI_STATE_ON_CONNECTED_STA_P2P = 6; public static final int WIFI_STATE_SOFT_AP = 7; public static final int NUM_WIFI_STATES = WIFI_STATE_SOFT_AP + 1; /** @hide */ @IntDef(flag = true, prefix = { "WIFI_STATE_" }, value = { WIFI_STATE_OFF, WIFI_STATE_OFF_SCANNING, WIFI_STATE_ON_NO_NETWORKS, WIFI_STATE_ON_DISCONNECTED, WIFI_STATE_ON_CONNECTED_STA, WIFI_STATE_ON_CONNECTED_P2P, WIFI_STATE_ON_CONNECTED_STA_P2P, WIFI_STATE_SOFT_AP }) @Retention(RetentionPolicy.SOURCE) public @interface WifiState {} static final String[] WIFI_STATE_NAMES = { "off", "scanning", "no_net", "disconn", "sta", "p2p", "sta_p2p", "soft_ap" }; public static final int NUM_WIFI_STATES = WIFI_STATE_SOFT_AP+1; /** * Returns the time in microseconds that WiFi has been running in the given state. * * {@hide} */ public abstract long getWifiStateTime(int wifiState, long elapsedRealtimeUs, int which); public abstract long getWifiStateTime(@WifiState int wifiState, long elapsedRealtimeUs, @StatName int which); /** * Returns the number of times that WiFi has entered the given state. * * {@hide} */ public abstract int getWifiStateCount(int wifiState, int which); public abstract int getWifiStateCount(@WifiState int wifiState, @StatName int which); /** * Returns the {@link Timer} object that tracks the given WiFi state. * * {@hide} */ public abstract Timer getWifiStateTimer(int wifiState); public abstract Timer getWifiStateTimer(@WifiState int wifiState); /** * Returns the time in microseconds that the wifi supplicant has been Loading @@ -2676,7 +2721,8 @@ public abstract class BatteryStats implements Parcelable { * * {@hide} */ public abstract long getWifiSupplStateTime(int state, long elapsedRealtimeUs, int which); public abstract long getWifiSupplStateTime(@WifiSupplState int state, long elapsedRealtimeUs, @StatName int which); /** * Returns the number of times that the wifi supplicant has transitioned Loading @@ -2684,14 +2730,14 @@ public abstract class BatteryStats implements Parcelable { * * {@hide} */ public abstract int getWifiSupplStateCount(int state, int which); public abstract int getWifiSupplStateCount(@WifiSupplState int state, @StatName int which); /** * Returns the {@link Timer} object that tracks the given wifi supplicant state. * * {@hide} */ public abstract Timer getWifiSupplStateTimer(int state); public abstract Timer getWifiSupplStateTimer(@WifiSupplState int state); public static final int NUM_WIFI_SIGNAL_STRENGTH_BINS = 5; Loading core/java/android/os/BatteryStatsManager.java 0 → 100644 +247 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.os; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.annotation.SystemService; import android.content.Context; import android.os.connectivity.WifiBatteryStats; import com.android.internal.app.IBatteryStats; /** * This class provides an API surface for internal system components to report events that are * needed for battery usage/estimation and battery blaming for apps. * * Note: This internally uses the same {@link IBatteryStats} binder service as the public * {@link BatteryManager}. * @hide */ @SystemApi @SystemService(Context.BATTERY_STATS_SERVICE) public class BatteryStatsManager { private final IBatteryStats mBatteryStats; /** @hide */ public BatteryStatsManager(IBatteryStats batteryStats) { mBatteryStats = batteryStats; } /** * Indicates that the wifi connection RSSI has changed. * * @param newRssi The new RSSI value. */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiRssiChanged(@IntRange(from = -127, to = 0) int newRssi) { try { mBatteryStats.noteWifiRssiChanged(newRssi); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Indicates that wifi was toggled on. */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiOn() { try { mBatteryStats.noteWifiOn(); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Indicates that wifi was toggled off. */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiOff() { try { mBatteryStats.noteWifiOff(); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Indicates that wifi state has changed. * * @param newWifiState The new wifi State. * @param accessPoint SSID of the network if wifi is connected to STA, else null. */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiState(@BatteryStats.WifiState int newWifiState, @Nullable String accessPoint) { try { mBatteryStats.noteWifiState(newWifiState, accessPoint); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Indicates that a new wifi scan has started. * * @param ws Worksource (to be used for battery blaming). */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiScanStartedFromSource(@NonNull WorkSource ws) { try { mBatteryStats.noteWifiScanStartedFromSource(ws); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Indicates that an ongoing wifi scan has stopped. * * @param ws Worksource (to be used for battery blaming). */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiScanStoppedFromSource(@NonNull WorkSource ws) { try { mBatteryStats.noteWifiScanStoppedFromSource(ws); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Indicates that a new wifi batched scan has started. * * @param ws Worksource (to be used for battery blaming). * @param csph Channels scanned per hour. */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiBatchedScanStartedFromSource(@NonNull WorkSource ws, @IntRange(from = 0) int csph) { try { mBatteryStats.noteWifiBatchedScanStartedFromSource(ws, csph); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Indicates that an ongoing wifi batched scan has stopped. * * @param ws Worksource (to be used for battery blaming). */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiBatchedScanStoppedFromSource(@NonNull WorkSource ws) { try { mBatteryStats.noteWifiBatchedScanStoppedFromSource(ws); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Retrieves all the wifi related battery stats. * * @return Instance of {@link WifiBatteryStats}. */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public @NonNull WifiBatteryStats getWifiBatteryStats() { try { return mBatteryStats.getWifiBatteryStats(); } catch (RemoteException e) { e.rethrowFromSystemServer(); return null; } } /** * Indicates an app acquiring full wifi lock. * * @param ws Worksource (to be used for battery blaming). */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteFullWifiLockAcquiredFromSource(@NonNull WorkSource ws) { try { mBatteryStats.noteFullWifiLockAcquiredFromSource(ws); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Indicates an app releasing full wifi lock. * * @param ws Worksource (to be used for battery blaming). */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteFullWifiLockReleasedFromSource(@NonNull WorkSource ws) { try { mBatteryStats.noteFullWifiLockReleasedFromSource(ws); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Indicates that supplicant state has changed. * * @param newSupplState The new Supplicant state. * @param failedAuth Boolean indicating whether there was a connection failure due to * authentication failure. */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiSupplicantStateChanged(@BatteryStats.WifiSupplState int newSupplState, boolean failedAuth) { try { mBatteryStats.noteWifiSupplicantStateChanged(newSupplState, failedAuth); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Indicates that an app has acquired the wifi multicast lock. * * @param uid UID of the app that acquired the wifi lock (to be used for battery blaming). */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiMulticastEnabled(int uid) { try { mBatteryStats.noteWifiMulticastEnabled(uid); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Indicates that an app has released the wifi multicast lock. * * @param uid UID of the app that released the wifi lock (to be used for battery blaming). */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiMulticastDisabled(int uid) { try { mBatteryStats.noteWifiMulticastDisabled(uid); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } } Loading
api/system-current.txt +42 −0 Original line number Diff line number Diff line Loading @@ -1394,6 +1394,7 @@ package android.content { method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public void startActivityAsUser(@RequiresPermission @NonNull android.content.Intent, @NonNull android.os.UserHandle); field public static final String APP_PREDICTION_SERVICE = "app_prediction"; field public static final String BACKUP_SERVICE = "backup"; field public static final String BATTERY_STATS_SERVICE = "batterystats"; field public static final String BUGREPORT_SERVICE = "bugreport"; field public static final String CONTENT_SUGGESTIONS_SERVICE = "content_suggestions"; field public static final String CONTEXTHUB_SERVICE = "contexthub"; Loading Loading @@ -5212,6 +5213,23 @@ package android.os { method @NonNull public android.os.BatterySaverPolicyConfig.Builder setLocationMode(int); } public class BatteryStatsManager { method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) @NonNull public android.os.connectivity.WifiBatteryStats getWifiBatteryStats(); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteFullWifiLockAcquiredFromSource(@NonNull android.os.WorkSource); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteFullWifiLockReleasedFromSource(@NonNull android.os.WorkSource); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiBatchedScanStartedFromSource(@NonNull android.os.WorkSource, @IntRange(from=0) int); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiBatchedScanStoppedFromSource(@NonNull android.os.WorkSource); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiMulticastDisabled(int); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiMulticastEnabled(int); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiOff(); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiOn(); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiRssiChanged(@IntRange(from=0xffffff81, to=0) int); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiScanStartedFromSource(@NonNull android.os.WorkSource); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiScanStoppedFromSource(@NonNull android.os.WorkSource); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiState(int, @Nullable String); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiSupplicantStateChanged(int, boolean); } public class Binder implements android.os.IBinder { method public static void setProxyTransactListener(@Nullable android.os.Binder.ProxyTransactListener); } Loading Loading @@ -5700,6 +5718,30 @@ package android.os { } package android.os.connectivity { public final class WifiBatteryStats implements android.os.Parcelable { method public int describeContents(); method public long getEnergyConsumedMaMillis(); method public long getIdleTimeMillis(); method public long getKernelActiveTimeMillis(); method public long getLoggingDurationMillis(); method public long getMonitoredRailChargeConsumedMaMillis(); method public long getNumAppScanRequest(); method public long getNumBytesRx(); method public long getNumBytesTx(); method public long getNumPacketsRx(); method public long getNumPacketsTx(); method public long getRxTimeMillis(); method public long getScanTimeMillis(); method public long getSleepTimeMillis(); method public long getTxTimeMillis(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.os.connectivity.WifiBatteryStats> CREATOR; } } package android.os.image { public class DynamicSystemClient { Loading
core/java/android/app/SystemServiceRegistry.java +11 −0 Original line number Diff line number Diff line Loading @@ -125,6 +125,7 @@ import android.net.wifi.rtt.WifiRttManager; import android.nfc.NfcManager; import android.os.BatteryManager; import android.os.BatteryStats; import android.os.BatteryStatsManager; import android.os.BugreportManager; import android.os.Build; import android.os.DropBoxManager; Loading Loading @@ -1286,6 +1287,16 @@ public final class SystemServiceRegistry { return new DynamicSystemManager( IDynamicSystemService.Stub.asInterface(b)); }}); registerService(Context.BATTERY_STATS_SERVICE, BatteryStatsManager.class, new CachedServiceFetcher<BatteryStatsManager>() { @Override public BatteryStatsManager createService(ContextImpl ctx) throws ServiceNotFoundException { IBinder b = ServiceManager.getServiceOrThrow( Context.BATTERY_STATS_SERVICE); return new BatteryStatsManager( IBatteryStats.Stub.asInterface(b)); }}); //CHECKSTYLE:ON IndentationCheck } Loading
core/java/android/content/Context.java +8 −0 Original line number Diff line number Diff line Loading @@ -4744,6 +4744,14 @@ public abstract class Context { @SystemApi public static final String TELEPHONY_REGISTRY_SERVICE = "telephony_registry"; /** * Use with {@link #getSystemService(String)} to retrieve an * {@link android.os.BatteryStatsManager}. * @hide */ @SystemApi public static final String BATTERY_STATS_SERVICE = "batterystats"; /** * Determine whether the given permission is allowed for a particular * process and user ID running in the system. Loading
core/java/android/os/BatteryStats.java +56 −10 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.os; import static android.app.ActivityManager.PROCESS_STATE_BOUND_TOP; import static android.app.ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE_LOCATION; import android.annotation.IntDef; import android.annotation.UnsupportedAppUsage; import android.app.ActivityManager; import android.content.Context; Loading Loading @@ -48,6 +49,8 @@ import com.android.internal.util.Preconditions; import java.io.FileDescriptor; import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Collections; Loading Loading @@ -76,7 +79,7 @@ public abstract class BatteryStats implements Parcelable { protected static final boolean SCREEN_OFF_RPM_STATS_ENABLED = false; /** @hide */ public static final String SERVICE_NAME = "batterystats"; public static final String SERVICE_NAME = Context.BATTERY_STATS_SERVICE; /** * A constant indicating a partial wake lock timer. Loading Loading @@ -223,6 +226,15 @@ public abstract class BatteryStats implements Parcelable { @Deprecated public static final int STATS_SINCE_UNPLUGGED = 2; /** @hide */ @IntDef(flag = true, prefix = { "STATS_" }, value = { STATS_SINCE_CHARGED, STATS_CURRENT, STATS_SINCE_UNPLUGGED }) @Retention(RetentionPolicy.SOURCE) public @interface StatName {} // NOTE: Update this list if you add/change any stats above. // These characters are supposed to represent "total", "last", "current", // and "unplugged". They were shortened for efficiency sake. Loading Loading @@ -2490,6 +2502,25 @@ public abstract class BatteryStats implements Parcelable { public static final int NUM_WIFI_SUPPL_STATES = WIFI_SUPPL_STATE_UNINITIALIZED+1; /** @hide */ @IntDef(flag = true, prefix = { "WIFI_SUPPL_STATE_" }, value = { WIFI_SUPPL_STATE_INVALID, WIFI_SUPPL_STATE_DISCONNECTED, WIFI_SUPPL_STATE_INTERFACE_DISABLED, WIFI_SUPPL_STATE_INACTIVE, WIFI_SUPPL_STATE_SCANNING, WIFI_SUPPL_STATE_AUTHENTICATING, WIFI_SUPPL_STATE_ASSOCIATING, WIFI_SUPPL_STATE_ASSOCIATED, WIFI_SUPPL_STATE_FOUR_WAY_HANDSHAKE, WIFI_SUPPL_STATE_GROUP_HANDSHAKE, WIFI_SUPPL_STATE_COMPLETED, WIFI_SUPPL_STATE_DORMANT, WIFI_SUPPL_STATE_UNINITIALIZED, }) @Retention(RetentionPolicy.SOURCE) public @interface WifiSupplState {} static final String[] WIFI_SUPPL_STATE_NAMES = { "invalid", "disconn", "disabled", "inactive", "scanning", "authenticating", "associating", "associated", "4-way-handshake", Loading Loading @@ -2641,34 +2672,48 @@ public abstract class BatteryStats implements Parcelable { public static final int WIFI_STATE_ON_CONNECTED_STA_P2P = 6; public static final int WIFI_STATE_SOFT_AP = 7; public static final int NUM_WIFI_STATES = WIFI_STATE_SOFT_AP + 1; /** @hide */ @IntDef(flag = true, prefix = { "WIFI_STATE_" }, value = { WIFI_STATE_OFF, WIFI_STATE_OFF_SCANNING, WIFI_STATE_ON_NO_NETWORKS, WIFI_STATE_ON_DISCONNECTED, WIFI_STATE_ON_CONNECTED_STA, WIFI_STATE_ON_CONNECTED_P2P, WIFI_STATE_ON_CONNECTED_STA_P2P, WIFI_STATE_SOFT_AP }) @Retention(RetentionPolicy.SOURCE) public @interface WifiState {} static final String[] WIFI_STATE_NAMES = { "off", "scanning", "no_net", "disconn", "sta", "p2p", "sta_p2p", "soft_ap" }; public static final int NUM_WIFI_STATES = WIFI_STATE_SOFT_AP+1; /** * Returns the time in microseconds that WiFi has been running in the given state. * * {@hide} */ public abstract long getWifiStateTime(int wifiState, long elapsedRealtimeUs, int which); public abstract long getWifiStateTime(@WifiState int wifiState, long elapsedRealtimeUs, @StatName int which); /** * Returns the number of times that WiFi has entered the given state. * * {@hide} */ public abstract int getWifiStateCount(int wifiState, int which); public abstract int getWifiStateCount(@WifiState int wifiState, @StatName int which); /** * Returns the {@link Timer} object that tracks the given WiFi state. * * {@hide} */ public abstract Timer getWifiStateTimer(int wifiState); public abstract Timer getWifiStateTimer(@WifiState int wifiState); /** * Returns the time in microseconds that the wifi supplicant has been Loading @@ -2676,7 +2721,8 @@ public abstract class BatteryStats implements Parcelable { * * {@hide} */ public abstract long getWifiSupplStateTime(int state, long elapsedRealtimeUs, int which); public abstract long getWifiSupplStateTime(@WifiSupplState int state, long elapsedRealtimeUs, @StatName int which); /** * Returns the number of times that the wifi supplicant has transitioned Loading @@ -2684,14 +2730,14 @@ public abstract class BatteryStats implements Parcelable { * * {@hide} */ public abstract int getWifiSupplStateCount(int state, int which); public abstract int getWifiSupplStateCount(@WifiSupplState int state, @StatName int which); /** * Returns the {@link Timer} object that tracks the given wifi supplicant state. * * {@hide} */ public abstract Timer getWifiSupplStateTimer(int state); public abstract Timer getWifiSupplStateTimer(@WifiSupplState int state); public static final int NUM_WIFI_SIGNAL_STRENGTH_BINS = 5; Loading
core/java/android/os/BatteryStatsManager.java 0 → 100644 +247 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.os; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.annotation.SystemService; import android.content.Context; import android.os.connectivity.WifiBatteryStats; import com.android.internal.app.IBatteryStats; /** * This class provides an API surface for internal system components to report events that are * needed for battery usage/estimation and battery blaming for apps. * * Note: This internally uses the same {@link IBatteryStats} binder service as the public * {@link BatteryManager}. * @hide */ @SystemApi @SystemService(Context.BATTERY_STATS_SERVICE) public class BatteryStatsManager { private final IBatteryStats mBatteryStats; /** @hide */ public BatteryStatsManager(IBatteryStats batteryStats) { mBatteryStats = batteryStats; } /** * Indicates that the wifi connection RSSI has changed. * * @param newRssi The new RSSI value. */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiRssiChanged(@IntRange(from = -127, to = 0) int newRssi) { try { mBatteryStats.noteWifiRssiChanged(newRssi); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Indicates that wifi was toggled on. */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiOn() { try { mBatteryStats.noteWifiOn(); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Indicates that wifi was toggled off. */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiOff() { try { mBatteryStats.noteWifiOff(); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Indicates that wifi state has changed. * * @param newWifiState The new wifi State. * @param accessPoint SSID of the network if wifi is connected to STA, else null. */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiState(@BatteryStats.WifiState int newWifiState, @Nullable String accessPoint) { try { mBatteryStats.noteWifiState(newWifiState, accessPoint); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Indicates that a new wifi scan has started. * * @param ws Worksource (to be used for battery blaming). */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiScanStartedFromSource(@NonNull WorkSource ws) { try { mBatteryStats.noteWifiScanStartedFromSource(ws); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Indicates that an ongoing wifi scan has stopped. * * @param ws Worksource (to be used for battery blaming). */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiScanStoppedFromSource(@NonNull WorkSource ws) { try { mBatteryStats.noteWifiScanStoppedFromSource(ws); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Indicates that a new wifi batched scan has started. * * @param ws Worksource (to be used for battery blaming). * @param csph Channels scanned per hour. */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiBatchedScanStartedFromSource(@NonNull WorkSource ws, @IntRange(from = 0) int csph) { try { mBatteryStats.noteWifiBatchedScanStartedFromSource(ws, csph); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Indicates that an ongoing wifi batched scan has stopped. * * @param ws Worksource (to be used for battery blaming). */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiBatchedScanStoppedFromSource(@NonNull WorkSource ws) { try { mBatteryStats.noteWifiBatchedScanStoppedFromSource(ws); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Retrieves all the wifi related battery stats. * * @return Instance of {@link WifiBatteryStats}. */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public @NonNull WifiBatteryStats getWifiBatteryStats() { try { return mBatteryStats.getWifiBatteryStats(); } catch (RemoteException e) { e.rethrowFromSystemServer(); return null; } } /** * Indicates an app acquiring full wifi lock. * * @param ws Worksource (to be used for battery blaming). */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteFullWifiLockAcquiredFromSource(@NonNull WorkSource ws) { try { mBatteryStats.noteFullWifiLockAcquiredFromSource(ws); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Indicates an app releasing full wifi lock. * * @param ws Worksource (to be used for battery blaming). */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteFullWifiLockReleasedFromSource(@NonNull WorkSource ws) { try { mBatteryStats.noteFullWifiLockReleasedFromSource(ws); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Indicates that supplicant state has changed. * * @param newSupplState The new Supplicant state. * @param failedAuth Boolean indicating whether there was a connection failure due to * authentication failure. */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiSupplicantStateChanged(@BatteryStats.WifiSupplState int newSupplState, boolean failedAuth) { try { mBatteryStats.noteWifiSupplicantStateChanged(newSupplState, failedAuth); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Indicates that an app has acquired the wifi multicast lock. * * @param uid UID of the app that acquired the wifi lock (to be used for battery blaming). */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiMulticastEnabled(int uid) { try { mBatteryStats.noteWifiMulticastEnabled(uid); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } /** * Indicates that an app has released the wifi multicast lock. * * @param uid UID of the app that released the wifi lock (to be used for battery blaming). */ @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void noteWifiMulticastDisabled(int uid) { try { mBatteryStats.noteWifiMulticastDisabled(uid); } catch (RemoteException e) { e.rethrowFromSystemServer(); } } }