camera2-portability: Allow disabling the shutter sound on API 2

Because the camera2 API doesn't play shutter sounds at all, the portability
layer does it directly. Consequently, it is trivial to skip that step.

Bug: 17303595
Change-Id: I303696906902c2d8af58baedf27f6e20f34772f1
diff --git a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java
index bce1b98..847ca22 100644
--- a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java
+++ b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java
@@ -936,6 +936,7 @@
         private final CameraDeviceInfo.Characteristics mCharacteristics;
         private final AndroidCamera2Capabilities mCapabilities;
         private CameraSettings mLastSettings;
+        private boolean mShutterSoundEnabled;
 
         public AndroidCamera2ProxyImpl(int cameraIndex, CameraDevice camera,
                 CameraDeviceInfo.Characteristics characteristics,
@@ -945,6 +946,7 @@
             mCharacteristics = characteristics;
             mCapabilities = new AndroidCamera2Capabilities(properties);
             mLastSettings = null;
+            mShutterSoundEnabled = true;
         }
 
         // TODO: Implement
@@ -1053,7 +1055,9 @@
                         handler.post(new Runnable() {
                             @Override
                             public void run() {
-                                mNoisemaker.play(MediaActionSound.SHUTTER_CLICK);
+                                if (mShutterSoundEnabled) {
+                                    mNoisemaker.play(MediaActionSound.SHUTTER_CLICK);
+                                }
                                 shutter.onShutter(AndroidCamera2ProxyImpl.this);
                             }});
                     }
@@ -1141,6 +1145,11 @@
             return false;
         }
 
+        @Override
+        public void enableShutterSound(boolean enable) {
+            mShutterSoundEnabled = enable;
+        }
+
         // TODO: Implement
         @Override
         public String dumpDeviceSettings() { return null; }
@@ -1301,9 +1310,7 @@
 
             @Override
             public boolean canDisableShutterSound() {
-                // The new API doesn't support this operation, so don't encourage people to try it.
-                // TODO: What kind of assumptions have callers made about this result's meaning?
-                return false;
+                return true;
             }
 
             private static float[] convertRectToPoly(RectF rf) {