OSDN Git Service

SoundPool: fix enforced camera shutter sound
authorEric Laurent <elaurent@google.com>
Thu, 7 Jul 2016 18:35:13 +0000 (11:35 -0700)
committerThe Android Automerger <android-build@google.com>
Thu, 7 Jul 2016 20:43:28 +0000 (13:43 -0700)
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

index 3164930..5ede1d5 100644 (file)
@@ -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;
         }