diff options
author | 2022-10-11 09:51:11 +0000 | |
---|---|---|
committer | 2022-10-11 09:51:11 +0000 | |
commit | 856b1367d8fa67dc4a3e8794093e55e33e80ca90 (patch) | |
tree | d94505c0cd6f5e613d4fcb68acb45c67350e56cc | |
parent | dd4fc15c549b441ae68325c1168b9f85bdebb8a2 (diff) | |
parent | d8ad795fee6ebde23f6c2324c7754006af2f35a1 (diff) |
Merge "Move AudioEventLogger from audio to utils and rename to EventLogger"
13 files changed, 115 insertions, 90 deletions
diff --git a/services/core/java/com/android/server/audio/AudioDeviceBroker.java b/services/core/java/com/android/server/audio/AudioDeviceBroker.java index 730c4108220a..c59ee83aa895 100644 --- a/services/core/java/com/android/server/audio/AudioDeviceBroker.java +++ b/services/core/java/com/android/server/audio/AudioDeviceBroker.java @@ -54,6 +54,7 @@ import android.util.Log; import android.util.PrintWriterPrinter; import com.android.internal.annotations.GuardedBy; +import com.android.server.utils.EventLogger; import java.io.PrintWriter; import java.util.Arrays; @@ -343,7 +344,7 @@ import java.util.concurrent.atomic.AtomicBoolean; if (AudioService.DEBUG_COMM_RTE) { Log.v(TAG, "setCommunicationRouteForClient: device: " + device); } - AudioService.sDeviceLogger.log((new AudioEventLogger.StringEvent( + AudioService.sDeviceLogger.log((new EventLogger.StringEvent( "setCommunicationRouteForClient for pid: " + pid + " device: " + device + " from API: " + eventSource)).printLog(TAG)); @@ -1229,7 +1230,7 @@ import java.util.concurrent.atomic.AtomicBoolean; } private void onSendBecomingNoisyIntent() { - AudioService.sDeviceLogger.log((new AudioEventLogger.StringEvent( + AudioService.sDeviceLogger.log((new EventLogger.StringEvent( "broadcast ACTION_AUDIO_BECOMING_NOISY")).printLog(TAG)); mSystemServer.sendDeviceBecomingNoisyIntent(); } @@ -1467,7 +1468,7 @@ import java.util.concurrent.atomic.AtomicBoolean; case MSG_L_BT_ACTIVE_DEVICE_CHANGE_EXT: { final BtDeviceInfo info = (BtDeviceInfo) msg.obj; if (info.mDevice == null) break; - AudioService.sDeviceLogger.log((new AudioEventLogger.StringEvent( + AudioService.sDeviceLogger.log((new EventLogger.StringEvent( "msg: onBluetoothActiveDeviceChange " + " state=" + info.mState // only querying address as this is the only readily available @@ -1857,7 +1858,7 @@ import java.util.concurrent.atomic.AtomicBoolean; Log.v(TAG, "onUpdateCommunicationRoute, preferredCommunicationDevice: " + preferredCommunicationDevice + " eventSource: " + eventSource); } - AudioService.sDeviceLogger.log((new AudioEventLogger.StringEvent( + AudioService.sDeviceLogger.log((new EventLogger.StringEvent( "onUpdateCommunicationRoute, preferredCommunicationDevice: " + preferredCommunicationDevice + " eventSource: " + eventSource))); diff --git a/services/core/java/com/android/server/audio/AudioDeviceInventory.java b/services/core/java/com/android/server/audio/AudioDeviceInventory.java index 35da73ef58c0..ce36ff829693 100644 --- a/services/core/java/com/android/server/audio/AudioDeviceInventory.java +++ b/services/core/java/com/android/server/audio/AudioDeviceInventory.java @@ -43,6 +43,7 @@ import android.util.Slog; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; +import com.android.server.utils.EventLogger; import java.io.PrintWriter; import java.util.ArrayList; @@ -308,7 +309,7 @@ public class AudioDeviceInventory { address = ""; } - AudioService.sDeviceLogger.log(new AudioEventLogger.StringEvent("BT connected:" + AudioService.sDeviceLogger.log(new EventLogger.StringEvent("BT connected:" + " addr=" + address + " profile=" + btInfo.mProfile + " state=" + btInfo.mState @@ -411,13 +412,13 @@ public class AudioDeviceInventory { if (!BluetoothAdapter.checkBluetoothAddress(address)) { address = ""; } - AudioService.sDeviceLogger.log(new AudioEventLogger.StringEvent( + AudioService.sDeviceLogger.log(new EventLogger.StringEvent( "onBluetoothA2dpDeviceConfigChange addr=" + address + " event=" + BtHelper.a2dpDeviceEventToString(event))); synchronized (mDevicesLock) { if (mDeviceBroker.hasScheduledA2dpConnection(btDevice)) { - AudioService.sDeviceLogger.log(new AudioEventLogger.StringEvent( + AudioService.sDeviceLogger.log(new EventLogger.StringEvent( "A2dp config change ignored (scheduled connection change)") .printLog(TAG)); mmi.set(MediaMetrics.Property.EARLY_RETURN, "A2dp config change ignored") @@ -459,7 +460,7 @@ public class AudioDeviceInventory { BtHelper.getName(btDevice), a2dpCodec); if (res != AudioSystem.AUDIO_STATUS_OK) { - AudioService.sDeviceLogger.log(new AudioEventLogger.StringEvent( + AudioService.sDeviceLogger.log(new EventLogger.StringEvent( "APM handleDeviceConfigChange failed for A2DP device addr=" + address + " codec=" + AudioSystem.audioFormatToString(a2dpCodec)) .printLog(TAG)); @@ -471,7 +472,7 @@ public class AudioDeviceInventory { BluetoothProfile.A2DP, BluetoothProfile.STATE_DISCONNECTED, musicDevice, AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP)); } else { - AudioService.sDeviceLogger.log(new AudioEventLogger.StringEvent( + AudioService.sDeviceLogger.log(new EventLogger.StringEvent( "APM handleDeviceConfigChange success for A2DP device addr=" + address + " codec=" + AudioSystem.audioFormatToString(a2dpCodec)) .printLog(TAG)); @@ -618,7 +619,7 @@ public class AudioDeviceInventory { @NonNull List<AudioDeviceAttributes> devices) { final long identity = Binder.clearCallingIdentity(); - AudioService.sDeviceLogger.log((new AudioEventLogger.StringEvent( + AudioService.sDeviceLogger.log((new EventLogger.StringEvent( "setPreferredDevicesForStrategySync, strategy: " + strategy + " devices: " + devices)).printLog(TAG)); final int status = mAudioSystem.setDevicesRoleForStrategy( @@ -634,7 +635,7 @@ public class AudioDeviceInventory { /*package*/ int removePreferredDevicesForStrategySync(int strategy) { final long identity = Binder.clearCallingIdentity(); - AudioService.sDeviceLogger.log((new AudioEventLogger.StringEvent( + AudioService.sDeviceLogger.log((new EventLogger.StringEvent( "removePreferredDevicesForStrategySync, strategy: " + strategy)).printLog(TAG)); @@ -999,13 +1000,13 @@ public class AudioDeviceInventory { // TODO: log in MediaMetrics once distinction between connection failure and // double connection is made. if (res != AudioSystem.AUDIO_STATUS_OK) { - AudioService.sDeviceLogger.log(new AudioEventLogger.StringEvent( + AudioService.sDeviceLogger.log(new EventLogger.StringEvent( "APM failed to make available A2DP device addr=" + address + " error=" + res).printLog(TAG)); // TODO: connection failed, stop here // TODO: return; } else { - AudioService.sDeviceLogger.log(new AudioEventLogger.StringEvent( + AudioService.sDeviceLogger.log(new EventLogger.StringEvent( "A2DP device addr=" + address + " now available").printLog(TAG)); } @@ -1046,7 +1047,7 @@ public class AudioDeviceInventory { if (!deviceToRemoveKey .equals(mApmConnectedDevices.get(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP))) { // removing A2DP device not currently used by AudioPolicy, log but don't act on it - AudioService.sDeviceLogger.log((new AudioEventLogger.StringEvent( + AudioService.sDeviceLogger.log((new EventLogger.StringEvent( "A2DP device " + address + " made unavailable, was not used")).printLog(TAG)); mmi.set(MediaMetrics.Property.EARLY_RETURN, "A2DP device made unavailable, was not used") @@ -1061,13 +1062,13 @@ public class AudioDeviceInventory { AudioSystem.DEVICE_STATE_UNAVAILABLE, a2dpCodec); if (res != AudioSystem.AUDIO_STATUS_OK) { - AudioService.sDeviceLogger.log(new AudioEventLogger.StringEvent( + AudioService.sDeviceLogger.log(new EventLogger.StringEvent( "APM failed to make unavailable A2DP device addr=" + address + " error=" + res).printLog(TAG)); // TODO: failed to disconnect, stop here // TODO: return; } else { - AudioService.sDeviceLogger.log((new AudioEventLogger.StringEvent( + AudioService.sDeviceLogger.log((new EventLogger.StringEvent( "A2DP device addr=" + address + " made unavailable")).printLog(TAG)); } mApmConnectedDevices.remove(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP); @@ -1313,7 +1314,7 @@ public class AudioDeviceInventory { && !mDeviceBroker.hasAudioFocusUsers()) { // no media playback, not a "becoming noisy" situation, otherwise it could cause // the pausing of some apps that are playing remotely - AudioService.sDeviceLogger.log((new AudioEventLogger.StringEvent( + AudioService.sDeviceLogger.log((new EventLogger.StringEvent( "dropping ACTION_AUDIO_BECOMING_NOISY")).printLog(TAG)); mmi.set(MediaMetrics.Property.DELAY_MS, 0).record(); // OK to return return 0; diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 82b6fa5f10aa..cbfd17f0a418 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -27,9 +27,9 @@ import static android.provider.Settings.Secure.VOLUME_HUSH_MUTE; import static android.provider.Settings.Secure.VOLUME_HUSH_OFF; import static android.provider.Settings.Secure.VOLUME_HUSH_VIBRATE; -import static com.android.server.audio.AudioEventLogger.Event.ALOGE; -import static com.android.server.audio.AudioEventLogger.Event.ALOGI; -import static com.android.server.audio.AudioEventLogger.Event.ALOGW; +import static com.android.server.utils.EventLogger.Event.ALOGE; +import static com.android.server.utils.EventLogger.Event.ALOGI; +import static com.android.server.utils.EventLogger.Event.ALOGW; import android.Manifest; import android.annotation.IntDef; @@ -185,6 +185,7 @@ import com.android.server.audio.AudioServiceEvents.VolumeEvent; import com.android.server.pm.UserManagerInternal; import com.android.server.pm.UserManagerInternal.UserRestrictionsListener; import com.android.server.pm.UserManagerService; +import com.android.server.utils.EventLogger; import com.android.server.wm.ActivityTaskManagerInternal; import java.io.FileDescriptor; @@ -989,7 +990,7 @@ public class AudioService extends IAudioService.Stub public AudioService(Context context, AudioSystemAdapter audioSystem, SystemServerAdapter systemServer, SettingsAdapter settings, @Nullable Looper looper, AppOpsManager appOps) { - sLifecycleLogger.log(new AudioEventLogger.StringEvent("AudioService()")); + sLifecycleLogger.log(new EventLogger.StringEvent("AudioService()")); mContext = context; mContentResolver = context.getContentResolver(); mAppOps = appOps; @@ -1538,14 +1539,14 @@ public class AudioService extends IAudioService.Stub if (!mSystemReady || (AudioSystem.checkAudioFlinger() != AudioSystem.AUDIO_STATUS_OK)) { Log.e(TAG, "Audioserver died."); - sLifecycleLogger.log(new AudioEventLogger.StringEvent( + sLifecycleLogger.log(new EventLogger.StringEvent( "onAudioServerDied() audioserver died")); sendMsg(mAudioHandler, MSG_AUDIO_SERVER_DIED, SENDMSG_NOOP, 0, 0, null, 500); return; } Log.i(TAG, "Audioserver started."); - sLifecycleLogger.log(new AudioEventLogger.StringEvent( + sLifecycleLogger.log(new EventLogger.StringEvent( "onAudioServerDied() audioserver started")); updateAudioHalPids(); @@ -1775,7 +1776,7 @@ public class AudioService extends IAudioService.Stub // did it work? check based on status if (status != AudioSystem.AUDIO_STATUS_OK) { - sLifecycleLogger.log(new AudioEventLogger.StringEvent( + sLifecycleLogger.log(new EventLogger.StringEvent( caller + ": initStreamVolume failed with " + status + " will retry") .printLog(ALOGE, TAG)); sendMsg(mAudioHandler, MSG_REINIT_VOLUMES, SENDMSG_NOOP, 0, 0, @@ -1789,7 +1790,7 @@ public class AudioService extends IAudioService.Stub } // success - sLifecycleLogger.log(new AudioEventLogger.StringEvent( + sLifecycleLogger.log(new EventLogger.StringEvent( caller + ": initStreamVolume succeeded").printLog(ALOGI, TAG)); } @@ -1812,7 +1813,7 @@ public class AudioService extends IAudioService.Stub } } if (!success) { - sLifecycleLogger.log(new AudioEventLogger.StringEvent( + sLifecycleLogger.log(new EventLogger.StringEvent( caller + ": initStreamVolume succeeded but invalid mix/max levels, will retry") .printLog(ALOGW, TAG)); sendMsg(mAudioHandler, MSG_REINIT_VOLUMES, SENDMSG_NOOP, 0, 0, @@ -2763,7 +2764,7 @@ public class AudioService extends IAudioService.Stub "setPreferredDeviceForStrategy u/pid:%d/%d strat:%d dev:%s", Binder.getCallingUid(), Binder.getCallingPid(), strategy, devices.stream().map(e -> e.toString()).collect(Collectors.joining(","))); - sDeviceLogger.log(new AudioEventLogger.StringEvent(logString).printLog(TAG)); + sDeviceLogger.log(new EventLogger.StringEvent(logString).printLog(TAG)); if (devices.stream().anyMatch(device -> device.getRole() == AudioDeviceAttributes.ROLE_INPUT)) { Log.e(TAG, "Unsupported input routing in " + logString); @@ -2783,7 +2784,7 @@ public class AudioService extends IAudioService.Stub public int removePreferredDevicesForStrategy(int strategy) { final String logString = String.format("removePreferredDeviceForStrategy strat:%d", strategy); - sDeviceLogger.log(new AudioEventLogger.StringEvent(logString).printLog(TAG)); + sDeviceLogger.log(new EventLogger.StringEvent(logString).printLog(TAG)); final int status = mDeviceBroker.removePreferredDevicesForStrategySync(strategy); if (status != AudioSystem.SUCCESS) { @@ -2849,7 +2850,7 @@ public class AudioService extends IAudioService.Stub "setPreferredDevicesForCapturePreset u/pid:%d/%d source:%d dev:%s", Binder.getCallingUid(), Binder.getCallingPid(), capturePreset, devices.stream().map(e -> e.toString()).collect(Collectors.joining(","))); - sDeviceLogger.log(new AudioEventLogger.StringEvent(logString).printLog(TAG)); + sDeviceLogger.log(new EventLogger.StringEvent(logString).printLog(TAG)); if (devices.stream().anyMatch(device -> device.getRole() == AudioDeviceAttributes.ROLE_OUTPUT)) { Log.e(TAG, "Unsupported output routing in " + logString); @@ -2870,7 +2871,7 @@ public class AudioService extends IAudioService.Stub public int clearPreferredDevicesForCapturePreset(int capturePreset) { final String logString = String.format( "removePreferredDeviceForCapturePreset source:%d", capturePreset); - sDeviceLogger.log(new AudioEventLogger.StringEvent(logString).printLog(TAG)); + sDeviceLogger.log(new EventLogger.StringEvent(logString).printLog(TAG)); final int status = mDeviceBroker.clearPreferredDevicesForCapturePresetSync(capturePreset); if (status != AudioSystem.SUCCESS) { @@ -3771,7 +3772,7 @@ public class AudioService extends IAudioService.Stub return; } - final AudioEventLogger.Event event = (device == null) + final EventLogger.Event event = (device == null) ? new VolumeEvent(VolumeEvent.VOL_SET_STREAM_VOL, streamType, index/*val1*/, flags/*val2*/, callingPackage) : new DeviceVolumeEvent(streamType, index, device, callingPackage); @@ -6887,7 +6888,7 @@ public class AudioService extends IAudioService.Stub // verify arguments Objects.requireNonNull(device); AudioManager.enforceValidVolumeBehavior(deviceVolumeBehavior); - sVolumeLogger.log(new AudioEventLogger.StringEvent("setDeviceVolumeBehavior: dev:" + sVolumeLogger.log(new EventLogger.StringEvent("setDeviceVolumeBehavior: dev:" + AudioSystem.getOutputDeviceName(device.getInternalType()) + " addr:" + device.getAddress() + " behavior:" + AudioDeviceVolumeManager.volumeBehaviorName(deviceVolumeBehavior) @@ -6943,7 +6944,7 @@ public class AudioService extends IAudioService.Stub } // log event and caller - sDeviceLogger.log(new AudioEventLogger.StringEvent( + sDeviceLogger.log(new EventLogger.StringEvent( "Volume behavior " + deviceVolumeBehavior + " for dev=0x" + Integer.toHexString(audioSystemDeviceOut) + " from:" + caller)); // make sure we have a volume entry for this device, and that volume is updated according @@ -7589,7 +7590,7 @@ public class AudioService extends IAudioService.Stub final int status = AudioSystem.initStreamVolume( streamType, mIndexMin / 10, mIndexMax / 10); if (status != AudioSystem.AUDIO_STATUS_OK) { - sLifecycleLogger.log(new AudioEventLogger.StringEvent( + sLifecycleLogger.log(new EventLogger.StringEvent( "VSS() stream:" + streamType + " initStreamVolume=" + status) .printLog(ALOGE, TAG)); sendMsg(mAudioHandler, MSG_REINIT_VOLUMES, SENDMSG_NOOP, 0, 0, @@ -8178,10 +8179,10 @@ public class AudioService extends IAudioService.Stub streamState.setIndex(index, update.mDevice, update.mCaller, // trusted as index is always validated before message is posted true /*hasModifyAudioSettings*/); - sVolumeLogger.log(new AudioEventLogger.StringEvent(update.mCaller + " dev:0x" + sVolumeLogger.log(new EventLogger.StringEvent(update.mCaller + " dev:0x" + Integer.toHexString(update.mDevice) + " volIdx:" + index)); } else { - sVolumeLogger.log(new AudioEventLogger.StringEvent(update.mCaller + sVolumeLogger.log(new EventLogger.StringEvent(update.mCaller + " update vol on dev:0x" + Integer.toHexString(update.mDevice))); } setDeviceVolume(streamState, update.mDevice); @@ -8628,7 +8629,7 @@ public class AudioService extends IAudioService.Stub private void avrcpSupportsAbsoluteVolume(String address, boolean support) { // address is not used for now, but may be used when multiple a2dp devices are supported - sVolumeLogger.log(new AudioEventLogger.StringEvent("avrcpSupportsAbsoluteVolume addr=" + sVolumeLogger.log(new EventLogger.StringEvent("avrcpSupportsAbsoluteVolume addr=" + address + " support=" + support).printLog(TAG)); mDeviceBroker.setAvrcpAbsoluteVolumeSupported(support); setAvrcpAbsoluteVolumeSupported(support); @@ -10049,29 +10050,36 @@ public class AudioService extends IAudioService.Stub static final int LOG_NB_EVENTS_DYN_POLICY = 10; static final int LOG_NB_EVENTS_SPATIAL = 30; - static final AudioEventLogger sLifecycleLogger = new AudioEventLogger(LOG_NB_EVENTS_LIFECYCLE, + static final EventLogger + sLifecycleLogger = new EventLogger(LOG_NB_EVENTS_LIFECYCLE, "audio services lifecycle"); - final private AudioEventLogger mModeLogger = new AudioEventLogger(LOG_NB_EVENTS_PHONE_STATE, + final private EventLogger + mModeLogger = new EventLogger(LOG_NB_EVENTS_PHONE_STATE, "phone state (logged after successful call to AudioSystem.setPhoneState(int, int))"); // logs for wired + A2DP device connections: // - wired: logged before onSetWiredDeviceConnectionState() is executed // - A2DP: logged at reception of method call - /*package*/ static final AudioEventLogger sDeviceLogger = new AudioEventLogger( + /*package*/ static final EventLogger + sDeviceLogger = new EventLogger( LOG_NB_EVENTS_DEVICE_CONNECTION, "wired/A2DP/hearing aid device connection"); - static final AudioEventLogger sForceUseLogger = new AudioEventLogger( + static final EventLogger + sForceUseLogger = new EventLogger( LOG_NB_EVENTS_FORCE_USE, "force use (logged before setForceUse() is executed)"); - static final AudioEventLogger sVolumeLogger = new AudioEventLogger(LOG_NB_EVENTS_VOLUME, + static final EventLogger + sVolumeLogger = new EventLogger(LOG_NB_EVENTS_VOLUME, "volume changes (logged when command received by AudioService)"); - static final AudioEventLogger sSpatialLogger = new AudioEventLogger(LOG_NB_EVENTS_SPATIAL, + static final EventLogger + sSpatialLogger = new EventLogger(LOG_NB_EVENTS_SPATIAL, "spatial audio"); - final private AudioEventLogger mDynPolicyLogger = new AudioEventLogger(LOG_NB_EVENTS_DYN_POLICY, + final private EventLogger + mDynPolicyLogger = new EventLogger(LOG_NB_EVENTS_DYN_POLICY, "dynamic policy events (logged when command received by AudioService)"); private static final String[] RINGER_MODE_NAMES = new String[] { @@ -10656,7 +10664,7 @@ public class AudioService extends IAudioService.Stub pcb.asBinder().linkToDeath(app, 0/*flags*/); // logging after registration so we have the registration id - mDynPolicyLogger.log((new AudioEventLogger.StringEvent("registerAudioPolicy for " + mDynPolicyLogger.log((new EventLogger.StringEvent("registerAudioPolicy for " + pcb.asBinder() + " u/pid:" + Binder.getCallingUid() + "/" + Binder.getCallingPid() + " with config:" + app.toCompactLogString())) .printLog(TAG)); @@ -10854,7 +10862,7 @@ public class AudioService extends IAudioService.Stub private void unregisterAudioPolicyInt(@NonNull IAudioPolicyCallback pcb, String operationName) { - mDynPolicyLogger.log((new AudioEventLogger.StringEvent(operationName + " for " + mDynPolicyLogger.log((new EventLogger.StringEvent(operationName + " for " + pcb.asBinder()).printLog(TAG))); synchronized (mAudioPolicies) { AudioPolicyProxy app = mAudioPolicies.remove(pcb.asBinder()); @@ -11382,7 +11390,7 @@ public class AudioService extends IAudioService.Stub } public void binderDied() { - mDynPolicyLogger.log((new AudioEventLogger.StringEvent("AudioPolicy " + mDynPolicyLogger.log((new EventLogger.StringEvent("AudioPolicy " + mPolicyCallback.asBinder() + " died").printLog(TAG))); release(); } diff --git a/services/core/java/com/android/server/audio/AudioServiceEvents.java b/services/core/java/com/android/server/audio/AudioServiceEvents.java index 30a9e0a70e96..b920517166ec 100644 --- a/services/core/java/com/android/server/audio/AudioServiceEvents.java +++ b/services/core/java/com/android/server/audio/AudioServiceEvents.java @@ -24,11 +24,12 @@ import android.media.AudioSystem; import android.media.MediaMetrics; import com.android.server.audio.AudioDeviceInventory.WiredDeviceConnectionState; +import com.android.server.utils.EventLogger; public class AudioServiceEvents { - final static class PhoneStateEvent extends AudioEventLogger.Event { + final static class PhoneStateEvent extends EventLogger.Event { static final int MODE_SET = 0; static final int MODE_IN_COMMUNICATION_TIMEOUT = 1; @@ -108,7 +109,7 @@ public class AudioServiceEvents { } } - final static class WiredDevConnectEvent extends AudioEventLogger.Event { + final static class WiredDevConnectEvent extends EventLogger.Event { final WiredDeviceConnectionState mState; WiredDevConnectEvent(WiredDeviceConnectionState state) { @@ -127,7 +128,7 @@ public class AudioServiceEvents { } } - final static class ForceUseEvent extends AudioEventLogger.Event { + final static class ForceUseEvent extends EventLogger.Event { final int mUsage; final int mConfig; final String mReason; @@ -147,7 +148,7 @@ public class AudioServiceEvents { } } - static final class DeviceVolumeEvent extends AudioEventLogger.Event { + static final class DeviceVolumeEvent extends EventLogger.Event { final int mStream; final int mVolIndex; final String mDeviceNativeType; @@ -184,7 +185,7 @@ public class AudioServiceEvents { } } - final static class VolumeEvent extends AudioEventLogger.Event { + final static class VolumeEvent extends EventLogger.Event { static final int VOL_ADJUST_SUGG_VOL = 0; static final int VOL_ADJUST_STREAM_VOL = 1; static final int VOL_SET_STREAM_VOL = 2; diff --git a/services/core/java/com/android/server/audio/BtHelper.java b/services/core/java/com/android/server/audio/BtHelper.java index 6e85361e9e91..399829e32588 100644 --- a/services/core/java/com/android/server/audio/BtHelper.java +++ b/services/core/java/com/android/server/audio/BtHelper.java @@ -39,6 +39,7 @@ import android.text.TextUtils; import android.util.Log; import com.android.internal.annotations.GuardedBy; +import com.android.server.utils.EventLogger; import java.io.PrintWriter; import java.util.Collections; @@ -262,13 +263,13 @@ public class BtHelper { /*package*/ synchronized void setAvrcpAbsoluteVolumeIndex(int index) { if (mA2dp == null) { if (AudioService.DEBUG_VOL) { - AudioService.sVolumeLogger.log(new AudioEventLogger.StringEvent( + AudioService.sVolumeLogger.log(new EventLogger.StringEvent( "setAvrcpAbsoluteVolumeIndex: bailing due to null mA2dp").printLog(TAG)); return; } } if (!mAvrcpAbsVolSupported) { - AudioService.sVolumeLogger.log(new AudioEventLogger.StringEvent( + AudioService.sVolumeLogger.log(new EventLogger.StringEvent( "setAvrcpAbsoluteVolumeIndex: abs vol not supported ").printLog(TAG)); return; } @@ -392,14 +393,14 @@ public class BtHelper { @GuardedBy("AudioDeviceBroker.mDeviceStateLock") /*package*/ synchronized boolean startBluetoothSco(int scoAudioMode, @NonNull String eventSource) { - AudioService.sDeviceLogger.log(new AudioEventLogger.StringEvent(eventSource)); + AudioService.sDeviceLogger.log(new EventLogger.StringEvent(eventSource)); return requestScoState(BluetoothHeadset.STATE_AUDIO_CONNECTED, scoAudioMode); } // @GuardedBy("AudioDeviceBroker.mSetModeLock") @GuardedBy("AudioDeviceBroker.mDeviceStateLock") /*package*/ synchronized boolean stopBluetoothSco(@NonNull String eventSource) { - AudioService.sDeviceLogger.log(new AudioEventLogger.StringEvent(eventSource)); + AudioService.sDeviceLogger.log(new EventLogger.StringEvent(eventSource)); return requestScoState(BluetoothHeadset.STATE_AUDIO_DISCONNECTED, SCO_MODE_VIRTUAL_CALL); } @@ -674,7 +675,7 @@ public class BtHelper { case BluetoothProfile.HEADSET: case BluetoothProfile.HEARING_AID: case BluetoothProfile.LE_AUDIO: - AudioService.sDeviceLogger.log(new AudioEventLogger.StringEvent( + AudioService.sDeviceLogger.log(new EventLogger.StringEvent( "BT profile service: connecting " + BluetoothProfile.getProfileName(profile) + " profile")); mDeviceBroker.postBtProfileConnected(profile, proxy); diff --git a/services/core/java/com/android/server/audio/FadeOutManager.java b/services/core/java/com/android/server/audio/FadeOutManager.java index 00cb280236d7..e54ee869fef2 100644 --- a/services/core/java/com/android/server/audio/FadeOutManager.java +++ b/services/core/java/com/android/server/audio/FadeOutManager.java @@ -24,6 +24,7 @@ import android.media.VolumeShaper; import android.util.Log; import com.android.internal.util.ArrayUtils; +import com.android.server.utils.EventLogger; import java.io.PrintWriter; import java.util.ArrayList; @@ -262,7 +263,7 @@ public final class FadeOutManager { if (apc != null) { try { PlaybackActivityMonitor.sEventLogger.log( - (new AudioEventLogger.StringEvent("unfading out piid:" + (new EventLogger.StringEvent("unfading out piid:" + piid)).printLog(TAG)); apc.getPlayerProxy().applyVolumeShaper( FADEOUT_VSHAPE, diff --git a/services/core/java/com/android/server/audio/MediaFocusControl.java b/services/core/java/com/android/server/audio/MediaFocusControl.java index 69a4c23cf867..1ca27dd7112c 100644 --- a/services/core/java/com/android/server/audio/MediaFocusControl.java +++ b/services/core/java/com/android/server/audio/MediaFocusControl.java @@ -40,6 +40,7 @@ import android.provider.Settings; import android.util.Log; import com.android.internal.annotations.GuardedBy; +import com.android.server.utils.EventLogger; import java.io.PrintWriter; import java.text.DateFormat; @@ -170,7 +171,8 @@ public class MediaFocusControl implements PlayerFocusEnforcer { */ private static final int MAX_STACK_SIZE = 100; - private static final AudioEventLogger mEventLogger = new AudioEventLogger(50, + private static final EventLogger + mEventLogger = new EventLogger(50, "focus commands as seen by MediaFocusControl"); private static final String mMetricsId = MediaMetrics.Name.AUDIO_FOCUS; @@ -183,7 +185,7 @@ public class MediaFocusControl implements PlayerFocusEnforcer { final FocusRequester focusOwner = stackIterator.next(); if (focusOwner.hasSameUid(uid) && focusOwner.hasSamePackage(packageName)) { clientsToRemove.add(focusOwner.getClientId()); - mEventLogger.log((new AudioEventLogger.StringEvent( + mEventLogger.log((new EventLogger.StringEvent( "focus owner:" + focusOwner.getClientId() + " in uid:" + uid + " pack: " + packageName + " getting AUDIOFOCUS_LOSS due to app suspension")) @@ -431,7 +433,7 @@ public class MediaFocusControl implements PlayerFocusEnforcer { FocusRequester fr = stackIterator.next(); if(fr.hasSameBinder(cb)) { Log.i(TAG, "AudioFocus removeFocusStackEntryOnDeath(): removing entry for " + cb); - mEventLogger.log(new AudioEventLogger.StringEvent( + mEventLogger.log(new EventLogger.StringEvent( "focus requester:" + fr.getClientId() + " in uid:" + fr.getClientUid() + " pack:" + fr.getPackageName() @@ -468,7 +470,7 @@ public class MediaFocusControl implements PlayerFocusEnforcer { final FocusRequester fr = owner.getValue(); if (fr.hasSameBinder(cb)) { ownerIterator.remove(); - mEventLogger.log(new AudioEventLogger.StringEvent( + mEventLogger.log(new EventLogger.StringEvent( "focus requester:" + fr.getClientId() + " in uid:" + fr.getClientUid() + " pack:" + fr.getPackageName() @@ -966,7 +968,7 @@ public class MediaFocusControl implements PlayerFocusEnforcer { // supposed to be alone in bitfield final int uid = (flags == AudioManager.AUDIOFOCUS_FLAG_TEST) ? testUid : Binder.getCallingUid(); - mEventLogger.log((new AudioEventLogger.StringEvent( + mEventLogger.log((new EventLogger.StringEvent( "requestAudioFocus() from uid/pid " + uid + "/" + Binder.getCallingPid() + " AA=" + aa.usageToString() + "/" + aa.contentTypeToString() @@ -1141,7 +1143,7 @@ public class MediaFocusControl implements PlayerFocusEnforcer { .record(); // AudioAttributes are currently ignored, to be used for zones / a11y - mEventLogger.log((new AudioEventLogger.StringEvent( + mEventLogger.log((new EventLogger.StringEvent( "abandonAudioFocus() from uid/pid " + Binder.getCallingUid() + "/" + Binder.getCallingPid() + " clientId=" + clientId)) diff --git a/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java b/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java index e5d40d93909f..1af8c593f96b 100644 --- a/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java +++ b/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java @@ -53,6 +53,7 @@ import android.util.SparseIntArray; import com.android.internal.annotations.GuardedBy; import com.android.internal.util.ArrayUtils; +import com.android.server.utils.EventLogger; import java.io.PrintWriter; import java.text.DateFormat; @@ -156,7 +157,7 @@ public final class PlaybackActivityMonitor if (index >= 0) { if (!disable) { if (DEBUG) { // hidden behind DEBUG, too noisy otherwise - sEventLogger.log(new AudioEventLogger.StringEvent("unbanning uid:" + uid)); + sEventLogger.log(new EventLogger.StringEvent("unbanning uid:" + uid)); } mBannedUids.remove(index); // nothing else to do, future playback requests from this uid are ok @@ -167,7 +168,7 @@ public final class PlaybackActivityMonitor checkBanPlayer(apc, uid); } if (DEBUG) { // hidden behind DEBUG, too noisy otherwise - sEventLogger.log(new AudioEventLogger.StringEvent("banning uid:" + uid)); + sEventLogger.log(new EventLogger.StringEvent("banning uid:" + uid)); } mBannedUids.add(new Integer(uid)); } // no else to handle, uid already not in list, so enabling again is no-op @@ -331,7 +332,7 @@ public final class PlaybackActivityMonitor for (Integer uidInteger: mBannedUids) { if (checkBanPlayer(apc, uidInteger.intValue())) { // player was banned, do not update its state - sEventLogger.log(new AudioEventLogger.StringEvent( + sEventLogger.log(new EventLogger.StringEvent( "not starting piid:" + piid + " ,is banned")); return; } @@ -420,7 +421,7 @@ public final class PlaybackActivityMonitor synchronized(mPlayerLock) { final AudioPlaybackConfiguration apc = mPlayers.get(new Integer(piid)); if (checkConfigurationCaller(piid, apc, binderUid)) { - sEventLogger.log(new AudioEventLogger.StringEvent( + sEventLogger.log(new EventLogger.StringEvent( "releasing player piid:" + piid)); mPlayers.remove(new Integer(piid)); mDuckingManager.removeReleased(apc); @@ -443,7 +444,7 @@ public final class PlaybackActivityMonitor /*package*/ void onAudioServerDied() { sEventLogger.log( - new AudioEventLogger.StringEvent( + new EventLogger.StringEvent( "clear port id to piid map")); synchronized (mPlayerLock) { if (DEBUG) { @@ -767,7 +768,7 @@ public final class PlaybackActivityMonitor } if (mute) { try { - sEventLogger.log((new AudioEventLogger.StringEvent("call: muting piid:" + sEventLogger.log((new EventLogger.StringEvent("call: muting piid:" + piid + " uid:" + apc.getClientUid())).printLog(TAG)); apc.getPlayerProxy().setVolume(0.0f); mMutedPlayers.add(new Integer(piid)); @@ -792,7 +793,7 @@ public final class PlaybackActivityMonitor final AudioPlaybackConfiguration apc = mPlayers.get(piid); if (apc != null) { try { - sEventLogger.log(new AudioEventLogger.StringEvent("call: unmuting piid:" + sEventLogger.log(new EventLogger.StringEvent("call: unmuting piid:" + piid).printLog(TAG)); apc.getPlayerProxy().setVolume(1.0f); } catch (Exception e) { @@ -1095,7 +1096,7 @@ public final class PlaybackActivityMonitor final AudioPlaybackConfiguration apc = players.get(piid); if (apc != null) { try { - sEventLogger.log((new AudioEventLogger.StringEvent("unducking piid:" + sEventLogger.log((new EventLogger.StringEvent("unducking piid:" + piid)).printLog(TAG)); apc.getPlayerProxy().applyVolumeShaper( DUCK_ID, @@ -1122,7 +1123,7 @@ public final class PlaybackActivityMonitor //================================================================= // For logging - private static final class PlayerEvent extends AudioEventLogger.Event { + private static final class PlayerEvent extends EventLogger.Event { // only keeping the player interface ID as it uniquely identifies the player in the event final int mPlayerIId; final int mEvent; @@ -1180,7 +1181,7 @@ public final class PlaybackActivityMonitor } } - private static final class PlayerOpPlayAudioEvent extends AudioEventLogger.Event { + private static final class PlayerOpPlayAudioEvent extends EventLogger.Event { // only keeping the player interface ID as it uniquely identifies the player in the event final int mPlayerIId; final boolean mHasOp; @@ -1200,7 +1201,7 @@ public final class PlaybackActivityMonitor } } - private static final class NewPlayerEvent extends AudioEventLogger.Event { + private static final class NewPlayerEvent extends EventLogger.Event { private final int mPlayerIId; private final int mPlayerType; private final int mClientUid; @@ -1227,7 +1228,7 @@ public final class PlaybackActivityMonitor } } - private abstract static class VolumeShaperEvent extends AudioEventLogger.Event { + private abstract static class VolumeShaperEvent extends EventLogger.Event { private final int mPlayerIId; private final boolean mSkipRamp; private final int mClientUid; @@ -1272,7 +1273,7 @@ public final class PlaybackActivityMonitor } } - private static final class AudioAttrEvent extends AudioEventLogger.Event { + private static final class AudioAttrEvent extends EventLogger.Event { private final int mPlayerIId; private final AudioAttributes mPlayerAttr; @@ -1287,7 +1288,7 @@ public final class PlaybackActivityMonitor } } - private static final class MuteAwaitConnectionEvent extends AudioEventLogger.Event { + private static final class MuteAwaitConnectionEvent extends EventLogger.Event { private final @NonNull int[] mUsagesToMute; MuteAwaitConnectionEvent(@NonNull int[] usagesToMute) { @@ -1300,7 +1301,8 @@ public final class PlaybackActivityMonitor } } - static final AudioEventLogger sEventLogger = new AudioEventLogger(100, + static final EventLogger + sEventLogger = new EventLogger(100, "playback activity as reported through PlayerBase"); //========================================================================================== @@ -1367,7 +1369,7 @@ public final class PlaybackActivityMonitor for (int usage : mMutedUsagesAwaitingConnection) { if (usage == apc.getAudioAttributes().getUsage()) { try { - sEventLogger.log((new AudioEventLogger.StringEvent( + sEventLogger.log((new EventLogger.StringEvent( "awaiting connection: muting piid:" + apc.getPlayerInterfaceId() + " uid:" + apc.getClientUid())).printLog(TAG)); @@ -1392,7 +1394,7 @@ public final class PlaybackActivityMonitor continue; } try { - sEventLogger.log(new AudioEventLogger.StringEvent( + sEventLogger.log(new EventLogger.StringEvent( "unmuting piid:" + piid).printLog(TAG)); apc.getPlayerProxy().applyVolumeShaper(MUTE_AWAIT_CONNECTION_VSHAPE, VolumeShaper.Operation.REVERSE); diff --git a/services/core/java/com/android/server/audio/RecordingActivityMonitor.java b/services/core/java/com/android/server/audio/RecordingActivityMonitor.java index 5620dc36c971..2ba8882ae14f 100644 --- a/services/core/java/com/android/server/audio/RecordingActivityMonitor.java +++ b/services/core/java/com/android/server/audio/RecordingActivityMonitor.java @@ -30,6 +30,8 @@ import android.os.IBinder; import android.os.RemoteException; import android.util.Log; +import com.android.server.utils.EventLogger; + import java.io.PrintWriter; import java.text.DateFormat; import java.util.ArrayList; @@ -587,7 +589,7 @@ public final class RecordingActivityMonitor implements AudioSystem.AudioRecordin /** * Inner class for recording event logging */ - private static final class RecordingEvent extends AudioEventLogger.Event { + private static final class RecordingEvent extends EventLogger.Event { private final int mRecEvent; private final int mRIId; private final int mClientUid; @@ -641,6 +643,7 @@ public final class RecordingActivityMonitor implements AudioSystem.AudioRecordin } } - private static final AudioEventLogger sEventLogger = new AudioEventLogger(50, + private static final EventLogger + sEventLogger = new EventLogger(50, "recording activity received by AudioService"); } diff --git a/services/core/java/com/android/server/audio/SoundEffectsHelper.java b/services/core/java/com/android/server/audio/SoundEffectsHelper.java index 7031e02af05a..93eba50ac6dd 100644 --- a/services/core/java/com/android/server/audio/SoundEffectsHelper.java +++ b/services/core/java/com/android/server/audio/SoundEffectsHelper.java @@ -34,6 +34,7 @@ import android.util.Log; import android.util.PrintWriterPrinter; import com.android.internal.util.XmlUtils; +import com.android.server.utils.EventLogger; import org.xmlpull.v1.XmlPullParserException; @@ -74,7 +75,8 @@ class SoundEffectsHelper { void run(boolean success); } - private final AudioEventLogger mSfxLogger = new AudioEventLogger( + private final EventLogger + mSfxLogger = new EventLogger( AudioManager.NUM_SOUND_EFFECTS + 10, "Sound Effects Loading"); private final Context mContext; @@ -162,7 +164,7 @@ class SoundEffectsHelper { } private void logEvent(String msg) { - mSfxLogger.log(new AudioEventLogger.StringEvent(msg)); + mSfxLogger.log(new EventLogger.StringEvent(msg)); } // All the methods below run on the worker thread diff --git a/services/core/java/com/android/server/audio/SpatializerHelper.java b/services/core/java/com/android/server/audio/SpatializerHelper.java index 8e8fd05bf72e..1563d33d93f0 100644 --- a/services/core/java/com/android/server/audio/SpatializerHelper.java +++ b/services/core/java/com/android/server/audio/SpatializerHelper.java @@ -47,6 +47,7 @@ import android.util.Pair; import android.util.SparseIntArray; import com.android.internal.annotations.GuardedBy; +import com.android.server.utils.EventLogger; import java.io.PrintWriter; import java.util.ArrayList; @@ -1711,7 +1712,7 @@ public class SpatializerHelper { } private static String logloge(String msg) { - AudioService.sSpatialLogger.loglog(msg, AudioEventLogger.Event.ALOGE, TAG); + AudioService.sSpatialLogger.loglog(msg, EventLogger.Event.ALOGE, TAG); return msg; } diff --git a/services/core/java/com/android/server/audio/AudioEventLogger.java b/services/core/java/com/android/server/utils/EventLogger.java index 259990ce0687..321edc528778 100644 --- a/services/core/java/com/android/server/audio/AudioEventLogger.java +++ b/services/core/java/com/android/server/utils/EventLogger.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.server.audio; +package com.android.server.utils; import android.annotation.IntDef; import android.util.Log; @@ -26,7 +26,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.LinkedList; -public class AudioEventLogger { +public class EventLogger { // ring buffer of events to log. private final LinkedList<Event> mEvents; @@ -42,7 +42,7 @@ public class AudioEventLogger { private final long mTimestamp; - Event() { + public Event() { mTimestamp = System.currentTimeMillis(); } @@ -135,7 +135,7 @@ public class AudioEventLogger { * @param size the maximum number of events to keep in log * @param title the string displayed before the recorded log */ - public AudioEventLogger(int size, String title) { + public EventLogger(int size, String title) { mEvents = new LinkedList<Event>(); mMemSize = size; mTitle = title; diff --git a/services/core/java/com/android/server/utils/OWNERS b/services/core/java/com/android/server/utils/OWNERS index 62afcc86792c..be91611deccc 100644 --- a/services/core/java/com/android/server/utils/OWNERS +++ b/services/core/java/com/android/server/utils/OWNERS @@ -8,3 +8,5 @@ per-file Watched* = file:/services/core/java/com/android/server/pm/OWNERS per-file Watched* = shombert@google.com per-file Watcher.java = file:/services/core/java/com/android/server/pm/OWNERS per-file Watcher.java = shombert@google.com +per-file EventLogger.java = file:/platform/frameworks/av:/media/janitors/media_solutions_OWNERS +per-file EventLogger.java = jmtrivi@google.com |