summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/audio/AudioDeviceBroker.java9
-rw-r--r--services/core/java/com/android/server/audio/AudioDeviceInventory.java27
-rw-r--r--services/core/java/com/android/server/audio/AudioService.java68
-rw-r--r--services/core/java/com/android/server/audio/AudioServiceEvents.java11
-rw-r--r--services/core/java/com/android/server/audio/BtHelper.java11
-rw-r--r--services/core/java/com/android/server/audio/FadeOutManager.java3
-rw-r--r--services/core/java/com/android/server/audio/MediaFocusControl.java14
-rw-r--r--services/core/java/com/android/server/audio/PlaybackActivityMonitor.java36
-rw-r--r--services/core/java/com/android/server/audio/RecordingActivityMonitor.java7
-rw-r--r--services/core/java/com/android/server/audio/SoundEffectsHelper.java6
-rw-r--r--services/core/java/com/android/server/audio/SpatializerHelper.java3
-rw-r--r--services/core/java/com/android/server/utils/EventLogger.java (renamed from services/core/java/com/android/server/audio/AudioEventLogger.java)8
-rw-r--r--services/core/java/com/android/server/utils/OWNERS2
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