Revert "Bypass audio focus handling for VDM"
This reverts commit 84e9721fd6.
Reason for revert: Droidmonitor triggered revert for b/267470284
Change-Id: If7dc577a73b26d7d782ec7227c85adabcf593e55
This commit is contained in:
committed by
Android (Google) Code Review
parent
84e9721fd6
commit
57a2011961
@@ -105,7 +105,6 @@ public class AudioManager {
|
||||
|
||||
private Context mOriginalContext;
|
||||
private Context mApplicationContext;
|
||||
private int mOriginalContextDeviceId = DEVICE_ID_DEFAULT;
|
||||
private @Nullable VirtualDeviceManager mVirtualDeviceManager; // Lazy initialized.
|
||||
private long mVolumeKeyUpTime;
|
||||
private static final String TAG = "AudioManager";
|
||||
@@ -845,7 +844,6 @@ public class AudioManager {
|
||||
}
|
||||
|
||||
private void setContext(Context context) {
|
||||
mOriginalContextDeviceId = context.getDeviceId();
|
||||
mApplicationContext = context.getApplicationContext();
|
||||
if (mApplicationContext != null) {
|
||||
mOriginalContext = null;
|
||||
@@ -3796,7 +3794,7 @@ public class AudioManager {
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether this {@link AudioManager} instance is associated with {@link VirtualDevice}
|
||||
* Checks whether this {@link AudioManager} instance is asociated with {@link VirtualDevice}
|
||||
* configured with custom device policy for audio. If there is such device, request to play
|
||||
* sound effect is forwarded to {@link VirtualDeviceManager}.
|
||||
*
|
||||
@@ -3805,24 +3803,18 @@ public class AudioManager {
|
||||
* false otherwise.
|
||||
*/
|
||||
private boolean delegateSoundEffectToVdm(@SystemSoundEffect int effectType) {
|
||||
if (hasCustomPolicyVirtualDeviceContext()) {
|
||||
int deviceId = getContext().getDeviceId();
|
||||
if (deviceId != DEVICE_ID_DEFAULT) {
|
||||
VirtualDeviceManager vdm = getVirtualDeviceManager();
|
||||
vdm.playSoundEffect(mOriginalContextDeviceId, effectType);
|
||||
return true;
|
||||
if (vdm != null && vdm.getDevicePolicy(deviceId, POLICY_TYPE_AUDIO)
|
||||
!= DEVICE_POLICY_DEFAULT) {
|
||||
vdm.playSoundEffect(deviceId, effectType);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean hasCustomPolicyVirtualDeviceContext() {
|
||||
if (mOriginalContextDeviceId == DEVICE_ID_DEFAULT) {
|
||||
return false;
|
||||
}
|
||||
|
||||
VirtualDeviceManager vdm = getVirtualDeviceManager();
|
||||
return vdm != null && vdm.getDevicePolicy(mOriginalContextDeviceId, POLICY_TYPE_AUDIO)
|
||||
!= DEVICE_POLICY_DEFAULT;
|
||||
}
|
||||
|
||||
/**
|
||||
* Load Sound effects.
|
||||
* This method must be called when sound effects are enabled.
|
||||
@@ -4521,16 +4513,6 @@ public class AudioManager {
|
||||
throw new IllegalArgumentException(
|
||||
"Illegal null audio policy when locking audio focus");
|
||||
}
|
||||
|
||||
if (hasCustomPolicyVirtualDeviceContext()) {
|
||||
// If the focus request was made within context associated with VirtualDevice
|
||||
// configured with custom device policy for audio, bypass audio service focus handling.
|
||||
// The custom device policy for audio means that audio associated with this device
|
||||
// is likely rerouted to VirtualAudioDevice and playback on the VirtualAudioDevice
|
||||
// shouldn't affect non-virtual audio tracks (and vice versa).
|
||||
return AUDIOFOCUS_REQUEST_GRANTED;
|
||||
}
|
||||
|
||||
registerAudioFocusRequest(afr);
|
||||
final IAudioService service = getService();
|
||||
final int status;
|
||||
@@ -4803,19 +4785,16 @@ public class AudioManager {
|
||||
@SuppressLint("RequiresPermission") // no permission enforcement, but only "undoes" what would
|
||||
// have been done by a matching requestAudioFocus
|
||||
public int abandonAudioFocus(OnAudioFocusChangeListener l, AudioAttributes aa) {
|
||||
if (hasCustomPolicyVirtualDeviceContext()) {
|
||||
// If this AudioManager instance is running within VirtualDevice context configured
|
||||
// with custom device policy for audio, the audio focus handling is bypassed.
|
||||
return AUDIOFOCUS_REQUEST_GRANTED;
|
||||
}
|
||||
int status = AUDIOFOCUS_REQUEST_FAILED;
|
||||
unregisterAudioFocusRequest(l);
|
||||
final IAudioService service = getService();
|
||||
try {
|
||||
return service.abandonAudioFocus(mAudioFocusDispatcher,
|
||||
status = service.abandonAudioFocus(mAudioFocusDispatcher,
|
||||
getIdForAudioFocusListener(l), aa, getContext().getOpPackageName());
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
//====================================================================
|
||||
|
||||
Reference in New Issue
Block a user