diff options
| -rw-r--r-- | media/java/android/media/SoundPool.java | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/media/java/android/media/SoundPool.java b/media/java/android/media/SoundPool.java index 3164930aa749..5ede1d5f7c91 100644 --- a/media/java/android/media/SoundPool.java +++ b/media/java/android/media/SoundPool.java @@ -133,6 +133,8 @@ public class SoundPool { private final IAppOpsService mAppOps; private final IAppOpsCallback mAppOpsCallback; + private static IAudioService sService; + /** * Constructor. Constructs a SoundPool object with the following * characteristics: @@ -492,7 +494,34 @@ public class SoundPool { } } + private static IAudioService getService() + { + if (sService != null) { + return sService; + } + IBinder b = ServiceManager.getService(Context.AUDIO_SERVICE); + sService = IAudioService.Stub.asInterface(b); + return sService; + } + private boolean isRestricted() { + IAudioService service = getService(); + boolean cameraSoundForced = false; + + try { + cameraSoundForced = service.isCameraSoundForced(); + } catch (RemoteException e) { + Log.e(TAG, "Cannot access AudioService in isRestricted()"); + } + + if (cameraSoundForced && + ((mAttributes.getAllFlags() & AudioAttributes.FLAG_AUDIBILITY_ENFORCED) != 0) +// FIXME: should also check usage when set properly by camera app +// && (mAttributes.getUsage() == AudioAttributes.USAGE_ASSISTANCE_SONIFICATION) + ) { + return false; + } + if ((mAttributes.getAllFlags() & AudioAttributes.FLAG_BYPASS_INTERRUPTION_POLICY) != 0) { return false; } |