diff options
| author | 2024-08-28 00:20:35 +0000 | |
|---|---|---|
| committer | 2024-08-28 00:20:35 +0000 | |
| commit | fecb83600cc255e64b0884b1e7324ca79bbee0eb (patch) | |
| tree | 35d5f4889921c0e00cf0df1e57bb4edcd36ee118 | |
| parent | d84495f8d1e20407e83571ce513cfe59541fa095 (diff) | |
| parent | 15e4f34c719e367844230b2ea9dbf28402f33acd (diff) | |
Merge "Audio focus: replace durationHint by focusReqType" into main
4 files changed, 25 insertions, 25 deletions
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index 029e6f49b062..25fae76768d9 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -4567,8 +4567,8 @@ public class AudioManager { * when the request is flagged with {@link #AUDIOFOCUS_FLAG_DELAY_OK}. * @param requestAttributes non null {@link AudioAttributes} describing the main reason for * requesting audio focus. - * @param durationHint use {@link #AUDIOFOCUS_GAIN_TRANSIENT} to indicate this focus request - * is temporary, and focus will be abandonned shortly. Examples of transient requests are + * @param focusReqType use {@link #AUDIOFOCUS_GAIN_TRANSIENT} to indicate this focus request + * is temporary, and focus will be abandoned shortly. Examples of transient requests are * for the playback of driving directions, or notifications sounds. * Use {@link #AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK} to indicate also that it's ok for * the previous focus owner to keep playing if it ducks its audio output. @@ -4593,13 +4593,13 @@ public class AudioManager { @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE) public int requestAudioFocus(OnAudioFocusChangeListener l, @NonNull AudioAttributes requestAttributes, - int durationHint, + int focusReqType, int flags) throws IllegalArgumentException { if (flags != (flags & AUDIOFOCUS_FLAGS_APPS)) { throw new IllegalArgumentException("Invalid flags 0x" + Integer.toHexString(flags).toUpperCase()); } - return requestAudioFocus(l, requestAttributes, durationHint, + return requestAudioFocus(l, requestAttributes, focusReqType, flags & AUDIOFOCUS_FLAGS_APPS, null /* no AudioPolicy*/); } @@ -4614,7 +4614,7 @@ public class AudioManager { * {@link #requestAudioFocus(OnAudioFocusChangeListener, AudioAttributes, int, int)} * @param requestAttributes non null {@link AudioAttributes} describing the main reason for * requesting audio focus. - * @param durationHint see the description of the same parameter in + * @param focusReqType see the description of the same parameter in * {@link #requestAudioFocus(OnAudioFocusChangeListener, AudioAttributes, int, int)} * @param flags 0 or a combination of {link #AUDIOFOCUS_FLAG_DELAY_OK}, * {@link #AUDIOFOCUS_FLAG_PAUSES_ON_DUCKABLE_LOSS}, and {@link #AUDIOFOCUS_FLAG_LOCK}. @@ -4636,14 +4636,14 @@ public class AudioManager { }) public int requestAudioFocus(OnAudioFocusChangeListener l, @NonNull AudioAttributes requestAttributes, - int durationHint, + int focusReqType, int flags, AudioPolicy ap) throws IllegalArgumentException { // parameter checking if (requestAttributes == null) { throw new IllegalArgumentException("Illegal null AudioAttributes argument"); } - if (!AudioFocusRequest.isValidFocusGain(durationHint)) { + if (!AudioFocusRequest.isValidFocusGain(focusReqType)) { throw new IllegalArgumentException("Invalid duration hint"); } if (flags != (flags & AUDIOFOCUS_FLAGS_SYSTEM)) { @@ -4664,7 +4664,7 @@ public class AudioManager { "Illegal null audio policy when locking audio focus"); } - final AudioFocusRequest afr = new AudioFocusRequest.Builder(durationHint) + final AudioFocusRequest afr = new AudioFocusRequest.Builder(focusReqType) .setOnAudioFocusChangeListenerInt(l, null /* no Handler for this legacy API */) .setAudioAttributes(requestAttributes) .setAcceptsDelayedFocusGain((flags & AUDIOFOCUS_FLAG_DELAY_OK) @@ -5025,16 +5025,16 @@ public class AudioManager { * to identify this use case. * @param streamType use STREAM_RING for focus requests when ringing, VOICE_CALL for * the establishment of the call - * @param durationHint the type of focus request. AUDIOFOCUS_GAIN_TRANSIENT is recommended so + * @param focusReqType the type of focus request. AUDIOFOCUS_GAIN_TRANSIENT is recommended so * media applications resume after a call */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - public void requestAudioFocusForCall(int streamType, int durationHint) { + public void requestAudioFocusForCall(int streamType, int focusReqType) { final IAudioService service = getService(); try { service.requestAudioFocus(new AudioAttributes.Builder() .setInternalLegacyStreamType(streamType).build(), - durationHint, mICallBack, null, + focusReqType, mICallBack, null, AudioSystem.IN_VOICE_COMM_FOCUS_ID, getContext().getOpPackageName(), getContext().getAttributionTag(), diff --git a/media/java/android/media/IAudioService.aidl b/media/java/android/media/IAudioService.aidl index e0c346100d03..a96562d55f67 100644 --- a/media/java/android/media/IAudioService.aidl +++ b/media/java/android/media/IAudioService.aidl @@ -252,7 +252,7 @@ interface IAudioService { boolean isBluetoothA2dpOn(); - int requestAudioFocus(in AudioAttributes aa, int durationHint, IBinder cb, + int requestAudioFocus(in AudioAttributes aa, int focusReqType, IBinder cb, IAudioFocusDispatcher fd, in String clientId, in String callingPackageName, in String attributionTag, int flags, IAudioPolicyCallback pcb, int sdk); @@ -562,7 +562,7 @@ interface IAudioService { long getMaxAdditionalOutputDeviceDelay(in AudioDeviceAttributes device); - int requestAudioFocusForTest(in AudioAttributes aa, int durationHint, IBinder cb, + int requestAudioFocusForTest(in AudioAttributes aa, int focusReqType, IBinder cb, in IAudioFocusDispatcher fd, in String clientId, in String callingPackageName, int flags, int uid, int sdk); diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 14dca4e03b07..b738482ba66c 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -10730,7 +10730,7 @@ public class AudioService extends IAudioService.Stub return true; } - public int requestAudioFocus(AudioAttributes aa, int durationHint, IBinder cb, + public int requestAudioFocus(AudioAttributes aa, int focusReqType, IBinder cb, IAudioFocusDispatcher fd, String clientId, String callingPackageName, String attributionTag, int flags, IAudioPolicyCallback pcb, int sdk) { if ((flags & AudioManager.AUDIOFOCUS_FLAG_TEST) != 0) { @@ -10739,7 +10739,7 @@ public class AudioService extends IAudioService.Stub final int uid = Binder.getCallingUid(); MediaMetrics.Item mmi = new MediaMetrics.Item(mMetricsId + "focus") .setUid(uid) - //.putInt("durationHint", durationHint) + //.putInt("focusReqType", focusReqType) .set(MediaMetrics.Property.CALLING_PACKAGE, callingPackageName) .set(MediaMetrics.Property.CLIENT_NAME, clientId) .set(MediaMetrics.Property.EVENT, "requestAudioFocus") @@ -10802,11 +10802,11 @@ public class AudioService extends IAudioService.Stub //TODO move inside HardeningEnforcer after refactor that moves permission checks // in the blockFocusMethod if (permissionOverridesCheck) { - mHardeningEnforcer.metricsLogFocusReq(/*blocked*/false, durationHint, uid); + mHardeningEnforcer.metricsLogFocusReq(/*blocked*/false, focusReqType, uid); } if (!permissionOverridesCheck && mHardeningEnforcer.blockFocusMethod(uid, HardeningEnforcer.METHOD_AUDIO_MANAGER_REQUEST_AUDIO_FOCUS, - clientId, durationHint, callingPackageName, attributionTag, sdk)) { + clientId, focusReqType, callingPackageName, attributionTag, sdk)) { final String reason = "Audio focus request blocked by hardening"; Log.w(TAG, reason); mmi.set(MediaMetrics.Property.EARLY_RETURN, reason).record(); @@ -10817,14 +10817,14 @@ public class AudioService extends IAudioService.Stub } mmi.record(); - return mMediaFocusControl.requestAudioFocus(aa, durationHint, cb, fd, + return mMediaFocusControl.requestAudioFocus(aa, focusReqType, cb, fd, clientId, callingPackageName, flags, sdk, - forceFocusDuckingForAccessibility(aa, durationHint, uid), -1 /*testUid, ignored*/, + forceFocusDuckingForAccessibility(aa, focusReqType, uid), -1 /*testUid, ignored*/, permissionOverridesCheck); } /** see {@link AudioManager#requestAudioFocusForTest(AudioFocusRequest, String, int, int)} */ - public int requestAudioFocusForTest(AudioAttributes aa, int durationHint, IBinder cb, + public int requestAudioFocusForTest(AudioAttributes aa, int focusReqType, IBinder cb, IAudioFocusDispatcher fd, String clientId, String callingPackageName, int flags, int fakeUid, int sdk) { if (!enforceQueryAudioStateForTest("focus request")) { @@ -10835,7 +10835,7 @@ public class AudioService extends IAudioService.Stub Log.e(TAG, reason); return AudioManager.AUDIOFOCUS_REQUEST_FAILED; } - return mMediaFocusControl.requestAudioFocus(aa, durationHint, cb, fd, + return mMediaFocusControl.requestAudioFocus(aa, focusReqType, cb, fd, clientId, callingPackageName, flags, sdk, false /*forceDuck*/, fakeUid, true /*permissionOverridesCheck*/); } diff --git a/services/core/java/com/android/server/audio/HardeningEnforcer.java b/services/core/java/com/android/server/audio/HardeningEnforcer.java index 3c509bca1b84..faeba5d068fc 100644 --- a/services/core/java/com/android/server/audio/HardeningEnforcer.java +++ b/services/core/java/com/android/server/audio/HardeningEnforcer.java @@ -155,14 +155,14 @@ public class HardeningEnforcer { * Checks whether the call in the current thread should be allowed or blocked * @param focusMethod name of the method to check, for logging purposes * @param clientId id of the requester - * @param durationHint focus type being requested + * @param focusReqType focus type being requested * @param attributionTag attribution of the caller * @param targetSdk target SDK of the caller * @return false if the method call is allowed, true if it should be a no-op */ @SuppressWarnings("AndroidFrameworkCompatChange") protected boolean blockFocusMethod(int callingUid, int focusMethod, @NonNull String clientId, - int durationHint, @NonNull String packageName, String attributionTag, int targetSdk) { + int focusReqType, @NonNull String packageName, String attributionTag, int targetSdk) { if (packageName.isEmpty()) { packageName = getPackNameForUid(callingUid); } @@ -181,14 +181,14 @@ public class HardeningEnforcer { blocked = false; } - metricsLogFocusReq(blocked, durationHint, callingUid); + metricsLogFocusReq(blocked, focusReqType, callingUid); if (!blocked) { return false; } String errorMssg = "Focus request DENIED for uid:" + callingUid - + " clientId:" + clientId + " req:" + durationHint + + " clientId:" + clientId + " req:" + focusReqType + " procState:" + mActivityManager.getUidProcessState(callingUid); mEventLogger.enqueueAndSlog(errorMssg, EventLogger.Event.ALOGI, TAG); |