Merge \\"SoundPool: fix enforced camera shutter sound\\" into nyc-dev am: a2266f7a0f
am: f638978b07
Change-Id: I88acecb9321d4a3480622b04b5a49ae87d7aff78
diff --git a/media/java/android/media/SoundPool.java b/media/java/android/media/SoundPool.java
index 3164930..5ede1d5 100644
--- a/media/java/android/media/SoundPool.java
+++ b/media/java/android/media/SoundPool.java
@@ -133,6 +133,8 @@
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 @@
}
}
+ 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;
}