Loading core/java/android/os/BatteryConsumer.java +3 −0 Original line number Diff line number Diff line Loading @@ -197,6 +197,9 @@ public abstract class BatteryConsumer { POWER_COMPONENT_MOBILE_RADIO, POWER_COMPONENT_WIFI, POWER_COMPONENT_BLUETOOTH, POWER_COMPONENT_AUDIO, POWER_COMPONENT_VIDEO, POWER_COMPONENT_FLASHLIGHT, }; static final int COLUMN_INDEX_BATTERY_CONSUMER_TYPE = 0; Loading core/java/com/android/internal/os/BatteryStatsHistory.java +30 −0 Original line number Diff line number Diff line Loading @@ -1513,6 +1513,36 @@ public class BatteryStatsHistory { } } /** * Records an event when some state2 flag changes to true. */ public void recordState2StartEvent(long elapsedRealtimeMs, long uptimeMs, int stateFlags, int uid, String name) { synchronized (this) { mHistoryCur.states2 |= stateFlags; mHistoryCur.eventCode = EVENT_STATE_CHANGE | EVENT_FLAG_START; mHistoryCur.eventTag = mHistoryCur.localEventTag; mHistoryCur.eventTag.uid = uid; mHistoryCur.eventTag.string = name; writeHistoryItem(elapsedRealtimeMs, uptimeMs); } } /** * Records an event when some state2 flag changes to false. */ public void recordState2StopEvent(long elapsedRealtimeMs, long uptimeMs, int stateFlags, int uid, String name) { synchronized (this) { mHistoryCur.states2 &= ~stateFlags; mHistoryCur.eventCode = EVENT_STATE_CHANGE | EVENT_FLAG_FINISH; mHistoryCur.eventTag = mHistoryCur.localEventTag; mHistoryCur.eventTag.uid = uid; mHistoryCur.eventTag.string = name; writeHistoryItem(elapsedRealtimeMs, uptimeMs); } } /** * Records an event when some state2 flag changes to false. */ Loading services/core/java/com/android/server/am/BatteryStatsService.java +58 −2 Original line number Diff line number Diff line Loading @@ -122,12 +122,14 @@ import com.android.server.net.BaseNetworkObserver; import com.android.server.pm.UserManagerInternal; import com.android.server.power.optimization.Flags; import com.android.server.power.stats.AggregatedPowerStatsConfig; import com.android.server.power.stats.AudioPowerStatsProcessor; import com.android.server.power.stats.BatteryExternalStatsWorker; import com.android.server.power.stats.BatteryStatsDumpHelperImpl; import com.android.server.power.stats.BatteryStatsImpl; import com.android.server.power.stats.BatteryUsageStatsProvider; import com.android.server.power.stats.BluetoothPowerStatsProcessor; import com.android.server.power.stats.CpuPowerStatsProcessor; import com.android.server.power.stats.FlashlightPowerStatsProcessor; import com.android.server.power.stats.MobileRadioPowerStatsProcessor; import com.android.server.power.stats.PhoneCallPowerStatsProcessor; import com.android.server.power.stats.PowerStatsAggregator; Loading @@ -136,6 +138,7 @@ import com.android.server.power.stats.PowerStatsScheduler; import com.android.server.power.stats.PowerStatsStore; import com.android.server.power.stats.PowerStatsUidResolver; import com.android.server.power.stats.SystemServerCpuThreadReader.SystemServiceCpuThreadTimes; import com.android.server.power.stats.VideoPowerStatsProcessor; import com.android.server.power.stats.WifiPowerStatsProcessor; import com.android.server.power.stats.wakeups.CpuWakeupStats; Loading Loading @@ -194,7 +197,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub private final BatteryUsageStatsProvider mBatteryUsageStatsProvider; private final AtomicFile mConfigFile; private final BatteryStats.BatteryStatsDumpHelper mDumpHelper; private final PowerStatsUidResolver mPowerStatsUidResolver; private final PowerStatsUidResolver mPowerStatsUidResolver = new PowerStatsUidResolver(); private final AggregatedPowerStatsConfig mAggregatedPowerStatsConfig; private volatile boolean mMonitorEnabled = true; Loading Loading @@ -422,7 +425,6 @@ public final class BatteryStatsService extends IBatteryStats.Stub setPowerStatsThrottlePeriods(batteryStatsConfigBuilder, context.getResources().getString( com.android.internal.R.string.config_powerStatsThrottlePeriods)); mBatteryStatsConfig = batteryStatsConfigBuilder.build(); mPowerStatsUidResolver = new PowerStatsUidResolver(); mStats = new BatteryStatsImpl(mBatteryStatsConfig, Clock.SYSTEM_CLOCK, mMonotonicClock, systemDir, mHandler, this, this, mUserManagerUserInfoProvider, mPowerProfile, mCpuScalingPolicies, mPowerStatsUidResolver); Loading Loading @@ -516,6 +518,42 @@ public final class BatteryStatsService extends IBatteryStats.Stub AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new BluetoothPowerStatsProcessor(mPowerProfile)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_AUDIO) .trackDeviceStates( AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN) .trackUidStates( AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new AudioPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_VIDEO) .trackDeviceStates( AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN) .trackUidStates( AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new VideoPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_FLASHLIGHT) .trackDeviceStates( AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN) .trackUidStates( AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new FlashlightPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); return config; } Loading Loading @@ -583,6 +621,24 @@ public final class BatteryStatsService extends IBatteryStats.Stub BatteryConsumer.POWER_COMPONENT_BLUETOOTH, Flags.streamlinedConnectivityBatteryStats()); mStats.setPowerStatsCollectorEnabled(BatteryConsumer.POWER_COMPONENT_AUDIO, Flags.streamlinedMiscBatteryStats()); mBatteryUsageStatsProvider.setPowerStatsExporterEnabled( BatteryConsumer.POWER_COMPONENT_AUDIO, Flags.streamlinedMiscBatteryStats()); mStats.setPowerStatsCollectorEnabled(BatteryConsumer.POWER_COMPONENT_VIDEO, Flags.streamlinedMiscBatteryStats()); mBatteryUsageStatsProvider.setPowerStatsExporterEnabled( BatteryConsumer.POWER_COMPONENT_VIDEO, Flags.streamlinedMiscBatteryStats()); mStats.setPowerStatsCollectorEnabled(BatteryConsumer.POWER_COMPONENT_FLASHLIGHT, Flags.streamlinedMiscBatteryStats()); mBatteryUsageStatsProvider.setPowerStatsExporterEnabled( BatteryConsumer.POWER_COMPONENT_FLASHLIGHT, Flags.streamlinedMiscBatteryStats()); mWorker.systemServicesReady(); mStats.systemServicesReady(mContext); mCpuWakeupStats.systemServicesReady(); Loading services/core/java/com/android/server/power/stats/AudioPowerStatsProcessor.java 0 → 100644 +37 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 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 com.android.server.power.stats; import android.os.BatteryConsumer; import android.os.BatteryStats; import com.android.internal.os.PowerProfile; public class AudioPowerStatsProcessor extends BinaryStatePowerStatsProcessor { public AudioPowerStatsProcessor(PowerProfile powerProfile, PowerStatsUidResolver uidResolver) { super(BatteryConsumer.POWER_COMPONENT_AUDIO, uidResolver, powerProfile.getAveragePower(PowerProfile.POWER_AUDIO)); } @Override protected @BinaryState int getBinaryState(BatteryStats.HistoryItem item) { return (item.states & BatteryStats.HistoryItem.STATE_AUDIO_ON_FLAG) != 0 ? STATE_ON : STATE_OFF; } } services/core/java/com/android/server/power/stats/BatteryStatsImpl.java +30 −18 Original line number Diff line number Diff line Loading @@ -6490,13 +6490,15 @@ public class BatteryStatsImpl extends BatteryStats { uid = mapUid(uid); if (mAudioOnNesting == 0) { mHistory.recordStateStartEvent(elapsedRealtimeMs, uptimeMs, HistoryItem.STATE_AUDIO_ON_FLAG); HistoryItem.STATE_AUDIO_ON_FLAG, uid, "audio"); mAudioOnTimer.startRunningLocked(elapsedRealtimeMs); } mAudioOnNesting++; if (!mPowerStatsCollectorEnabled.get(BatteryConsumer.POWER_COMPONENT_AUDIO)) { getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs) .noteAudioTurnedOnLocked(elapsedRealtimeMs); } } @GuardedBy("this") public void noteAudioOffLocked(int uid, long elapsedRealtimeMs, long uptimeMs) { Loading @@ -6506,25 +6508,29 @@ public class BatteryStatsImpl extends BatteryStats { uid = mapUid(uid); if (--mAudioOnNesting == 0) { mHistory.recordStateStopEvent(elapsedRealtimeMs, uptimeMs, HistoryItem.STATE_AUDIO_ON_FLAG); HistoryItem.STATE_AUDIO_ON_FLAG, uid, "audio"); mAudioOnTimer.stopRunningLocked(elapsedRealtimeMs); } if (!mPowerStatsCollectorEnabled.get(BatteryConsumer.POWER_COMPONENT_AUDIO)) { getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs) .noteAudioTurnedOffLocked(elapsedRealtimeMs); } } @GuardedBy("this") public void noteVideoOnLocked(int uid, long elapsedRealtimeMs, long uptimeMs) { uid = mapUid(uid); if (mVideoOnNesting == 0) { mHistory.recordState2StartEvent(elapsedRealtimeMs, uptimeMs, HistoryItem.STATE2_VIDEO_ON_FLAG); HistoryItem.STATE2_VIDEO_ON_FLAG, uid, "video"); mVideoOnTimer.startRunningLocked(elapsedRealtimeMs); } mVideoOnNesting++; if (!mPowerStatsCollectorEnabled.get(BatteryConsumer.POWER_COMPONENT_VIDEO)) { getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs) .noteVideoTurnedOnLocked(elapsedRealtimeMs); } } @GuardedBy("this") public void noteVideoOffLocked(int uid, long elapsedRealtimeMs, long uptimeMs) { Loading @@ -6534,12 +6540,14 @@ public class BatteryStatsImpl extends BatteryStats { uid = mapUid(uid); if (--mVideoOnNesting == 0) { mHistory.recordState2StopEvent(elapsedRealtimeMs, uptimeMs, HistoryItem.STATE2_VIDEO_ON_FLAG); HistoryItem.STATE2_VIDEO_ON_FLAG, uid, "video"); mVideoOnTimer.stopRunningLocked(elapsedRealtimeMs); } if (!mPowerStatsCollectorEnabled.get(BatteryConsumer.POWER_COMPONENT_VIDEO)) { getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs) .noteVideoTurnedOffLocked(elapsedRealtimeMs); } } @GuardedBy("this") public void noteResetAudioLocked(long elapsedRealtimeMs, long uptimeMs) { Loading Loading @@ -6613,12 +6621,14 @@ public class BatteryStatsImpl extends BatteryStats { uid = mapUid(uid); if (mFlashlightOnNesting++ == 0) { mHistory.recordState2StartEvent(elapsedRealtimeMs, uptimeMs, HistoryItem.STATE2_FLASHLIGHT_FLAG); HistoryItem.STATE2_FLASHLIGHT_FLAG, uid, "flashlight"); mFlashlightOnTimer.startRunningLocked(elapsedRealtimeMs); } if (!mPowerStatsCollectorEnabled.get(BatteryConsumer.POWER_COMPONENT_FLASHLIGHT)) { getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs) .noteFlashlightTurnedOnLocked(elapsedRealtimeMs); } } @GuardedBy("this") public void noteFlashlightOffLocked(int uid, long elapsedRealtimeMs, long uptimeMs) { Loading @@ -6628,12 +6638,14 @@ public class BatteryStatsImpl extends BatteryStats { uid = mapUid(uid); if (--mFlashlightOnNesting == 0) { mHistory.recordState2StopEvent(elapsedRealtimeMs, uptimeMs, HistoryItem.STATE2_FLASHLIGHT_FLAG); HistoryItem.STATE2_FLASHLIGHT_FLAG, uid, "flashlight"); mFlashlightOnTimer.stopRunningLocked(elapsedRealtimeMs); } if (!mPowerStatsCollectorEnabled.get(BatteryConsumer.POWER_COMPONENT_FLASHLIGHT)) { getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs) .noteFlashlightTurnedOffLocked(elapsedRealtimeMs); } } @GuardedBy("this") public void noteCameraOnLocked(int uid, long elapsedRealtimeMs, long uptimeMs) { Loading Loading
core/java/android/os/BatteryConsumer.java +3 −0 Original line number Diff line number Diff line Loading @@ -197,6 +197,9 @@ public abstract class BatteryConsumer { POWER_COMPONENT_MOBILE_RADIO, POWER_COMPONENT_WIFI, POWER_COMPONENT_BLUETOOTH, POWER_COMPONENT_AUDIO, POWER_COMPONENT_VIDEO, POWER_COMPONENT_FLASHLIGHT, }; static final int COLUMN_INDEX_BATTERY_CONSUMER_TYPE = 0; Loading
core/java/com/android/internal/os/BatteryStatsHistory.java +30 −0 Original line number Diff line number Diff line Loading @@ -1513,6 +1513,36 @@ public class BatteryStatsHistory { } } /** * Records an event when some state2 flag changes to true. */ public void recordState2StartEvent(long elapsedRealtimeMs, long uptimeMs, int stateFlags, int uid, String name) { synchronized (this) { mHistoryCur.states2 |= stateFlags; mHistoryCur.eventCode = EVENT_STATE_CHANGE | EVENT_FLAG_START; mHistoryCur.eventTag = mHistoryCur.localEventTag; mHistoryCur.eventTag.uid = uid; mHistoryCur.eventTag.string = name; writeHistoryItem(elapsedRealtimeMs, uptimeMs); } } /** * Records an event when some state2 flag changes to false. */ public void recordState2StopEvent(long elapsedRealtimeMs, long uptimeMs, int stateFlags, int uid, String name) { synchronized (this) { mHistoryCur.states2 &= ~stateFlags; mHistoryCur.eventCode = EVENT_STATE_CHANGE | EVENT_FLAG_FINISH; mHistoryCur.eventTag = mHistoryCur.localEventTag; mHistoryCur.eventTag.uid = uid; mHistoryCur.eventTag.string = name; writeHistoryItem(elapsedRealtimeMs, uptimeMs); } } /** * Records an event when some state2 flag changes to false. */ Loading
services/core/java/com/android/server/am/BatteryStatsService.java +58 −2 Original line number Diff line number Diff line Loading @@ -122,12 +122,14 @@ import com.android.server.net.BaseNetworkObserver; import com.android.server.pm.UserManagerInternal; import com.android.server.power.optimization.Flags; import com.android.server.power.stats.AggregatedPowerStatsConfig; import com.android.server.power.stats.AudioPowerStatsProcessor; import com.android.server.power.stats.BatteryExternalStatsWorker; import com.android.server.power.stats.BatteryStatsDumpHelperImpl; import com.android.server.power.stats.BatteryStatsImpl; import com.android.server.power.stats.BatteryUsageStatsProvider; import com.android.server.power.stats.BluetoothPowerStatsProcessor; import com.android.server.power.stats.CpuPowerStatsProcessor; import com.android.server.power.stats.FlashlightPowerStatsProcessor; import com.android.server.power.stats.MobileRadioPowerStatsProcessor; import com.android.server.power.stats.PhoneCallPowerStatsProcessor; import com.android.server.power.stats.PowerStatsAggregator; Loading @@ -136,6 +138,7 @@ import com.android.server.power.stats.PowerStatsScheduler; import com.android.server.power.stats.PowerStatsStore; import com.android.server.power.stats.PowerStatsUidResolver; import com.android.server.power.stats.SystemServerCpuThreadReader.SystemServiceCpuThreadTimes; import com.android.server.power.stats.VideoPowerStatsProcessor; import com.android.server.power.stats.WifiPowerStatsProcessor; import com.android.server.power.stats.wakeups.CpuWakeupStats; Loading Loading @@ -194,7 +197,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub private final BatteryUsageStatsProvider mBatteryUsageStatsProvider; private final AtomicFile mConfigFile; private final BatteryStats.BatteryStatsDumpHelper mDumpHelper; private final PowerStatsUidResolver mPowerStatsUidResolver; private final PowerStatsUidResolver mPowerStatsUidResolver = new PowerStatsUidResolver(); private final AggregatedPowerStatsConfig mAggregatedPowerStatsConfig; private volatile boolean mMonitorEnabled = true; Loading Loading @@ -422,7 +425,6 @@ public final class BatteryStatsService extends IBatteryStats.Stub setPowerStatsThrottlePeriods(batteryStatsConfigBuilder, context.getResources().getString( com.android.internal.R.string.config_powerStatsThrottlePeriods)); mBatteryStatsConfig = batteryStatsConfigBuilder.build(); mPowerStatsUidResolver = new PowerStatsUidResolver(); mStats = new BatteryStatsImpl(mBatteryStatsConfig, Clock.SYSTEM_CLOCK, mMonotonicClock, systemDir, mHandler, this, this, mUserManagerUserInfoProvider, mPowerProfile, mCpuScalingPolicies, mPowerStatsUidResolver); Loading Loading @@ -516,6 +518,42 @@ public final class BatteryStatsService extends IBatteryStats.Stub AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new BluetoothPowerStatsProcessor(mPowerProfile)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_AUDIO) .trackDeviceStates( AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN) .trackUidStates( AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new AudioPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_VIDEO) .trackDeviceStates( AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN) .trackUidStates( AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new VideoPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_FLASHLIGHT) .trackDeviceStates( AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN) .trackUidStates( AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new FlashlightPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); return config; } Loading Loading @@ -583,6 +621,24 @@ public final class BatteryStatsService extends IBatteryStats.Stub BatteryConsumer.POWER_COMPONENT_BLUETOOTH, Flags.streamlinedConnectivityBatteryStats()); mStats.setPowerStatsCollectorEnabled(BatteryConsumer.POWER_COMPONENT_AUDIO, Flags.streamlinedMiscBatteryStats()); mBatteryUsageStatsProvider.setPowerStatsExporterEnabled( BatteryConsumer.POWER_COMPONENT_AUDIO, Flags.streamlinedMiscBatteryStats()); mStats.setPowerStatsCollectorEnabled(BatteryConsumer.POWER_COMPONENT_VIDEO, Flags.streamlinedMiscBatteryStats()); mBatteryUsageStatsProvider.setPowerStatsExporterEnabled( BatteryConsumer.POWER_COMPONENT_VIDEO, Flags.streamlinedMiscBatteryStats()); mStats.setPowerStatsCollectorEnabled(BatteryConsumer.POWER_COMPONENT_FLASHLIGHT, Flags.streamlinedMiscBatteryStats()); mBatteryUsageStatsProvider.setPowerStatsExporterEnabled( BatteryConsumer.POWER_COMPONENT_FLASHLIGHT, Flags.streamlinedMiscBatteryStats()); mWorker.systemServicesReady(); mStats.systemServicesReady(mContext); mCpuWakeupStats.systemServicesReady(); Loading
services/core/java/com/android/server/power/stats/AudioPowerStatsProcessor.java 0 → 100644 +37 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 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 com.android.server.power.stats; import android.os.BatteryConsumer; import android.os.BatteryStats; import com.android.internal.os.PowerProfile; public class AudioPowerStatsProcessor extends BinaryStatePowerStatsProcessor { public AudioPowerStatsProcessor(PowerProfile powerProfile, PowerStatsUidResolver uidResolver) { super(BatteryConsumer.POWER_COMPONENT_AUDIO, uidResolver, powerProfile.getAveragePower(PowerProfile.POWER_AUDIO)); } @Override protected @BinaryState int getBinaryState(BatteryStats.HistoryItem item) { return (item.states & BatteryStats.HistoryItem.STATE_AUDIO_ON_FLAG) != 0 ? STATE_ON : STATE_OFF; } }
services/core/java/com/android/server/power/stats/BatteryStatsImpl.java +30 −18 Original line number Diff line number Diff line Loading @@ -6490,13 +6490,15 @@ public class BatteryStatsImpl extends BatteryStats { uid = mapUid(uid); if (mAudioOnNesting == 0) { mHistory.recordStateStartEvent(elapsedRealtimeMs, uptimeMs, HistoryItem.STATE_AUDIO_ON_FLAG); HistoryItem.STATE_AUDIO_ON_FLAG, uid, "audio"); mAudioOnTimer.startRunningLocked(elapsedRealtimeMs); } mAudioOnNesting++; if (!mPowerStatsCollectorEnabled.get(BatteryConsumer.POWER_COMPONENT_AUDIO)) { getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs) .noteAudioTurnedOnLocked(elapsedRealtimeMs); } } @GuardedBy("this") public void noteAudioOffLocked(int uid, long elapsedRealtimeMs, long uptimeMs) { Loading @@ -6506,25 +6508,29 @@ public class BatteryStatsImpl extends BatteryStats { uid = mapUid(uid); if (--mAudioOnNesting == 0) { mHistory.recordStateStopEvent(elapsedRealtimeMs, uptimeMs, HistoryItem.STATE_AUDIO_ON_FLAG); HistoryItem.STATE_AUDIO_ON_FLAG, uid, "audio"); mAudioOnTimer.stopRunningLocked(elapsedRealtimeMs); } if (!mPowerStatsCollectorEnabled.get(BatteryConsumer.POWER_COMPONENT_AUDIO)) { getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs) .noteAudioTurnedOffLocked(elapsedRealtimeMs); } } @GuardedBy("this") public void noteVideoOnLocked(int uid, long elapsedRealtimeMs, long uptimeMs) { uid = mapUid(uid); if (mVideoOnNesting == 0) { mHistory.recordState2StartEvent(elapsedRealtimeMs, uptimeMs, HistoryItem.STATE2_VIDEO_ON_FLAG); HistoryItem.STATE2_VIDEO_ON_FLAG, uid, "video"); mVideoOnTimer.startRunningLocked(elapsedRealtimeMs); } mVideoOnNesting++; if (!mPowerStatsCollectorEnabled.get(BatteryConsumer.POWER_COMPONENT_VIDEO)) { getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs) .noteVideoTurnedOnLocked(elapsedRealtimeMs); } } @GuardedBy("this") public void noteVideoOffLocked(int uid, long elapsedRealtimeMs, long uptimeMs) { Loading @@ -6534,12 +6540,14 @@ public class BatteryStatsImpl extends BatteryStats { uid = mapUid(uid); if (--mVideoOnNesting == 0) { mHistory.recordState2StopEvent(elapsedRealtimeMs, uptimeMs, HistoryItem.STATE2_VIDEO_ON_FLAG); HistoryItem.STATE2_VIDEO_ON_FLAG, uid, "video"); mVideoOnTimer.stopRunningLocked(elapsedRealtimeMs); } if (!mPowerStatsCollectorEnabled.get(BatteryConsumer.POWER_COMPONENT_VIDEO)) { getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs) .noteVideoTurnedOffLocked(elapsedRealtimeMs); } } @GuardedBy("this") public void noteResetAudioLocked(long elapsedRealtimeMs, long uptimeMs) { Loading Loading @@ -6613,12 +6621,14 @@ public class BatteryStatsImpl extends BatteryStats { uid = mapUid(uid); if (mFlashlightOnNesting++ == 0) { mHistory.recordState2StartEvent(elapsedRealtimeMs, uptimeMs, HistoryItem.STATE2_FLASHLIGHT_FLAG); HistoryItem.STATE2_FLASHLIGHT_FLAG, uid, "flashlight"); mFlashlightOnTimer.startRunningLocked(elapsedRealtimeMs); } if (!mPowerStatsCollectorEnabled.get(BatteryConsumer.POWER_COMPONENT_FLASHLIGHT)) { getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs) .noteFlashlightTurnedOnLocked(elapsedRealtimeMs); } } @GuardedBy("this") public void noteFlashlightOffLocked(int uid, long elapsedRealtimeMs, long uptimeMs) { Loading @@ -6628,12 +6638,14 @@ public class BatteryStatsImpl extends BatteryStats { uid = mapUid(uid); if (--mFlashlightOnNesting == 0) { mHistory.recordState2StopEvent(elapsedRealtimeMs, uptimeMs, HistoryItem.STATE2_FLASHLIGHT_FLAG); HistoryItem.STATE2_FLASHLIGHT_FLAG, uid, "flashlight"); mFlashlightOnTimer.stopRunningLocked(elapsedRealtimeMs); } if (!mPowerStatsCollectorEnabled.get(BatteryConsumer.POWER_COMPONENT_FLASHLIGHT)) { getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs) .noteFlashlightTurnedOffLocked(elapsedRealtimeMs); } } @GuardedBy("this") public void noteCameraOnLocked(int uid, long elapsedRealtimeMs, long uptimeMs) { Loading