Camera: update camera audio restriction API

Add dedicated get API for API review feedback.

Test: updated CTS pass
Bug: 140524714
Change-Id: I0559e24d6d9f4a2d9db6c0b6035eaf49bd41d950
diff --git a/camera/Camera.cpp b/camera/Camera.cpp
index 19849f8..84d1d93 100644
--- a/camera/Camera.cpp
+++ b/camera/Camera.cpp
@@ -347,13 +347,20 @@
     return c->setPreviewCallbackTarget(callbackProducer);
 }
 
-int32_t Camera::setAudioRestriction(int32_t mode)
+status_t Camera::setAudioRestriction(int32_t mode)
 {
     sp <::android::hardware::ICamera> c = mCamera;
     if (c == 0) return NO_INIT;
     return c->setAudioRestriction(mode);
 }
 
+int32_t Camera::getGlobalAudioRestriction()
+{
+    sp <::android::hardware::ICamera> c = mCamera;
+    if (c == 0) return NO_INIT;
+    return c->getGlobalAudioRestriction();
+}
+
 // callback from camera service
 void Camera::notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2)
 {
diff --git a/camera/ICamera.cpp b/camera/ICamera.cpp
index 060e8e0..b83edf7 100644
--- a/camera/ICamera.cpp
+++ b/camera/ICamera.cpp
@@ -57,6 +57,7 @@
     RELEASE_RECORDING_FRAME_HANDLE,
     RELEASE_RECORDING_FRAME_HANDLE_BATCH,
     SET_AUDIO_RESTRICTION,
+    GET_GLOBAL_AUDIO_RESTRICTION,
 };
 
 class BpCamera: public BpInterface<ICamera>
@@ -192,7 +193,7 @@
         }
     }
 
-    int32_t setAudioRestriction(int32_t mode) {
+    status_t setAudioRestriction(int32_t mode) {
         Parcel data, reply;
         data.writeInterfaceToken(ICamera::getInterfaceDescriptor());
         data.writeInt32(mode);
@@ -200,6 +201,13 @@
         return reply.readInt32();
     }
 
+    int32_t getGlobalAudioRestriction() {
+        Parcel data, reply;
+        data.writeInterfaceToken(ICamera::getInterfaceDescriptor());
+        remote()->transact(GET_GLOBAL_AUDIO_RESTRICTION, data, &reply);
+        return reply.readInt32();
+    }
+
     status_t setVideoBufferMode(int32_t videoBufferMode)
     {
         ALOGV("setVideoBufferMode: %d", videoBufferMode);
@@ -509,6 +517,11 @@
             reply->writeInt32(setAudioRestriction(mode));
             return NO_ERROR;
         } break;
+        case GET_GLOBAL_AUDIO_RESTRICTION: {
+            CHECK_INTERFACE(ICamera, data, reply);
+            reply->writeInt32(getGlobalAudioRestriction());
+            return NO_ERROR;
+        } break;
         default:
             return BBinder::onTransact(code, data, reply, flags);
     }
diff --git a/camera/aidl/android/hardware/camera2/ICameraDeviceUser.aidl b/camera/aidl/android/hardware/camera2/ICameraDeviceUser.aidl
index 5987b42..93549e0 100644
--- a/camera/aidl/android/hardware/camera2/ICameraDeviceUser.aidl
+++ b/camera/aidl/android/hardware/camera2/ICameraDeviceUser.aidl
@@ -168,7 +168,13 @@
       *
       * @param mode the audio restriction mode ID as above
       *
-      * @return the resulting system-wide audio restriction mode
       */
-    int setCameraAudioRestriction(int mode);
+    void setCameraAudioRestriction(int mode);
+
+    /**
+      * Get global audio restriction mode for all camera clients.
+      *
+      * @return the currently applied system-wide audio restriction mode
+      */
+    int getGlobalAudioRestriction();
 }
diff --git a/camera/include/camera/Camera.h b/camera/include/camera/Camera.h
index 9800bb7..2cdb617 100644
--- a/camera/include/camera/Camera.h
+++ b/camera/include/camera/Camera.h
@@ -167,7 +167,8 @@
 
             sp<ICameraRecordingProxy> getRecordingProxy();
 
-            int32_t      setAudioRestriction(int32_t mode);
+            status_t     setAudioRestriction(int32_t mode);
+            int32_t      getGlobalAudioRestriction();
 
     // ICameraClient interface
     virtual void        notifyCallback(int32_t msgType, int32_t ext, int32_t ext2);
diff --git a/camera/include/camera/android/hardware/ICamera.h b/camera/include/camera/android/hardware/ICamera.h
index eba9efe..ec19e5d 100644
--- a/camera/include/camera/android/hardware/ICamera.h
+++ b/camera/include/camera/android/hardware/ICamera.h
@@ -142,7 +142,10 @@
             const sp<IGraphicBufferProducer>& bufferProducer) = 0;
 
     // Set the audio restriction mode
-    virtual int32_t         setAudioRestriction(int32_t mode) = 0;
+    virtual status_t        setAudioRestriction(int32_t mode) = 0;
+
+    // Get the global audio restriction mode
+    virtual int32_t         getGlobalAudioRestriction() = 0;
 };
 
 // ----------------------------------------------------------------------------