diff options
| author | 2022-01-27 23:45:41 +0000 | |
|---|---|---|
| committer | 2022-01-28 17:16:50 +0000 | |
| commit | 5166da866403bb3e8ec1215b28a800fc2475858b (patch) | |
| tree | f0be9365ef38433df7c2d0051777b85442170350 | |
| parent | 86d5713de2ca2a3a6c0c3de89289b4150eac70e3 (diff) | |
Moving bt stats logging to BatteryStats.
Tag: #feature
Bug: 211851706
Test: manual
Change-Id: I7e40b64eaa334792dd409837fb9f512714f65eec
| -rw-r--r-- | core/api/system-current.txt | 2 | ||||
| -rw-r--r-- | core/java/android/os/BatteryStatsManager.java | 38 | ||||
| -rw-r--r-- | core/java/com/android/internal/app/IBatteryStats.aidl | 2 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/BatteryStatsService.java | 26 |
4 files changed, 68 insertions, 0 deletions
diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 171ee9a0a95b..ba5873766d2f 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -8918,6 +8918,8 @@ package android.os { method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportBleScanResults(@NonNull android.os.WorkSource, int); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportBleScanStarted(@NonNull android.os.WorkSource, boolean); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportBleScanStopped(@NonNull android.os.WorkSource, boolean); + method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public void reportBluetoothOff(int, int, @NonNull String); + method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public void reportBluetoothOn(int, int, @NonNull String); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportFullWifiLockAcquiredFromSource(@NonNull android.os.WorkSource); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportFullWifiLockReleasedFromSource(@NonNull android.os.WorkSource); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void reportMobileRadioPowerState(boolean, int); diff --git a/core/java/android/os/BatteryStatsManager.java b/core/java/android/os/BatteryStatsManager.java index 2a609b8f6ae4..f16bbc66e6cd 100644 --- a/core/java/android/os/BatteryStatsManager.java +++ b/core/java/android/os/BatteryStatsManager.java @@ -24,6 +24,8 @@ import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.annotation.SystemService; import android.annotation.TestApi; +import android.bluetooth.annotations.RequiresBluetoothConnectPermission; +import android.bluetooth.annotations.RequiresLegacyBluetoothAdminPermission; import android.content.Context; import android.net.NetworkStack; import android.os.connectivity.CellularBatteryStats; @@ -515,6 +517,42 @@ public final class BatteryStatsManager { } /** + * Indicates that Bluetooth was toggled on. + * + * @param uid calling package uid + * @param reason why Bluetooth has been turned on + * @param packageName package responsible for this change + */ + @RequiresLegacyBluetoothAdminPermission + @RequiresBluetoothConnectPermission + @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) + public void reportBluetoothOn(int uid, int reason, @NonNull String packageName) { + try { + mBatteryStats.noteBluetoothOn(uid, reason, packageName); + } catch (RemoteException e) { + e.rethrowFromSystemServer(); + } + } + + /** + * Indicates that Bluetooth was toggled off. + * + * @param uid calling package uid + * @param reason why Bluetooth has been turned on + * @param packageName package responsible for this change + */ + @RequiresLegacyBluetoothAdminPermission + @RequiresBluetoothConnectPermission + @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) + public void reportBluetoothOff(int uid, int reason, @NonNull String packageName) { + try { + mBatteryStats.noteBluetoothOff(uid, reason, packageName); + } catch (RemoteException e) { + e.rethrowFromSystemServer(); + } + } + + /** * Indicates that a new Bluetooth LE scan has started. * * @param ws worksource (to be used for battery blaming). diff --git a/core/java/com/android/internal/app/IBatteryStats.aidl b/core/java/com/android/internal/app/IBatteryStats.aidl index 9648008274ef..07cb48eb1a0a 100644 --- a/core/java/com/android/internal/app/IBatteryStats.aidl +++ b/core/java/com/android/internal/app/IBatteryStats.aidl @@ -145,6 +145,8 @@ interface IBatteryStats { long getAwakeTimeBattery(); long getAwakeTimePlugged(); + void noteBluetoothOn(int uid, int reason, String packageName); + void noteBluetoothOff(int uid, int reason, String packageName); void noteBleScanStarted(in WorkSource ws, boolean isUnoptimized); void noteBleScanStopped(in WorkSource ws, boolean isUnoptimized); void noteBleScanReset(); diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java index c8ad0e88e995..8dfb7dd21b4e 100644 --- a/services/core/java/com/android/server/am/BatteryStatsService.java +++ b/services/core/java/com/android/server/am/BatteryStatsService.java @@ -1962,6 +1962,32 @@ public final class BatteryStatsService extends IBatteryStats.Stub } } + /** + * Bluetooth on stat logging + */ + public void noteBluetoothOn(int uid, int reason, String packageName) { + if (Binder.getCallingPid() != Process.myPid()) { + mContext.enforcePermission(android.Manifest.permission.BLUETOOTH_CONNECT, + Binder.getCallingPid(), uid, null); + } + FrameworkStatsLog.write_non_chained(FrameworkStatsLog.BLUETOOTH_ENABLED_STATE_CHANGED, + uid, null, FrameworkStatsLog.BLUETOOTH_ENABLED_STATE_CHANGED__STATE__ENABLED, + reason, packageName); + } + + /** + * Bluetooth off stat logging + */ + public void noteBluetoothOff(int uid, int reason, String packageName) { + if (Binder.getCallingPid() != Process.myPid()) { + mContext.enforcePermission(android.Manifest.permission.BLUETOOTH_CONNECT, + Binder.getCallingPid(), uid, null); + } + FrameworkStatsLog.write_non_chained(FrameworkStatsLog.BLUETOOTH_ENABLED_STATE_CHANGED, + uid, null, FrameworkStatsLog.BLUETOOTH_ENABLED_STATE_CHANGED__STATE__DISABLED, + reason, packageName); + } + @Override public void noteBleScanStarted(final WorkSource ws, final boolean isUnoptimized) { enforceCallingPermission(); |