Loading media/java/android/media/AudioManager.java +11 −32 Original line number Diff line number Diff line Loading @@ -106,7 +106,6 @@ public class AudioManager { private Context mOriginalContext; private Context mApplicationContext; private int mOriginalContextDeviceId = DEVICE_ID_DEFAULT; private @Nullable VirtualDeviceManager mVirtualDeviceManager; // Lazy initialized. private static final String TAG = "AudioManager"; private static final boolean DEBUG = false; Loading Loading @@ -845,7 +844,6 @@ public class AudioManager { } private void setContext(Context context) { mOriginalContextDeviceId = context.getDeviceId(); mApplicationContext = context.getApplicationContext(); if (mApplicationContext != null) { mOriginalContext = null; Loading Loading @@ -3960,7 +3958,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}. * Loading @@ -3969,24 +3967,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); 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. Loading Loading @@ -4685,16 +4677,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; Loading Loading @@ -4967,19 +4949,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; } //==================================================================== Loading Loading
media/java/android/media/AudioManager.java +11 −32 Original line number Diff line number Diff line Loading @@ -106,7 +106,6 @@ public class AudioManager { private Context mOriginalContext; private Context mApplicationContext; private int mOriginalContextDeviceId = DEVICE_ID_DEFAULT; private @Nullable VirtualDeviceManager mVirtualDeviceManager; // Lazy initialized. private static final String TAG = "AudioManager"; private static final boolean DEBUG = false; Loading Loading @@ -845,7 +844,6 @@ public class AudioManager { } private void setContext(Context context) { mOriginalContextDeviceId = context.getDeviceId(); mApplicationContext = context.getApplicationContext(); if (mApplicationContext != null) { mOriginalContext = null; Loading Loading @@ -3960,7 +3958,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}. * Loading @@ -3969,24 +3967,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); 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. Loading Loading @@ -4685,16 +4677,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; Loading Loading @@ -4967,19 +4949,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; } //==================================================================== Loading