diff options
| author | 2016-07-07 20:36:59 +0000 | |
|---|---|---|
| committer | 2016-07-07 20:37:00 +0000 | |
| commit | a2266f7a0f024eb6d5ad63bdf56bf1fa8d777551 (patch) | |
| tree | f49a5de5c1285c097cade0d1e3b503340cd9d3f7 | |
| parent | 3bd0cec4913c89581cbf92d4d98e1a2ac8259f23 (diff) | |
| parent | 1913e5acc42db2000a5a9cdcbc2b7ddd1cb8f358 (diff) | |
Merge "SoundPool: fix enforced camera shutter sound" into nyc-dev
| -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; } |