From 1913e5acc42db2000a5a9cdcbc2b7ddd1cb8f358 Mon Sep 17 00:00:00 2001 From: Eric Laurent Date: Thu, 7 Jul 2016 11:35:13 -0700 Subject: [PATCH] SoundPool: fix enforced camera shutter sound Make sure that camera shutter sound is played in total silence DND mode when enforced by country regulation. Bug: 29973005 Change-Id: I208f7ae5b07777eac48597f68feae6358999b2c3 --- media/java/android/media/SoundPool.java | 29 +++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/media/java/android/media/SoundPool.java b/media/java/android/media/SoundPool.java index 3164930aa7492..5ede1d5f7c914 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; }