camera: Allow shutter sounds to be disabled from camera2 api
When using the connectLegacy binder interface (available only
through an @hide java api), then consider the camera to be in the
camera2 api legacy mode.
In legacy mode, allow disabling the shutter sound unconditionally.
Bug: 17109582
Change-Id: Ieb3fc61ff111d792cc657c018e278349c25472cf
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
index 7766b90..fd5a426 100644
--- a/services/camera/libcameraservice/CameraService.cpp
+++ b/services/camera/libcameraservice/CameraService.cpp
@@ -487,12 +487,12 @@
}
if (client == NULL) {
needsNewClient = true;
- ret = connectHelperLocked(/*cameraClient*/NULL, // Empty binder callbacks
+ ret = connectHelperLocked(/*out*/client,
+ /*cameraClient*/NULL, // Empty binder callbacks
cameraId,
internalPackageName,
uid,
- pid,
- client);
+ pid);
if (ret != OK) {
// Error already logged by callee
@@ -659,14 +659,17 @@
return true;
}
-status_t CameraService::connectHelperLocked(const sp<ICameraClient>& cameraClient,
- int cameraId,
- const String16& clientPackageName,
- int clientUid,
- int callingPid,
- /*out*/
- sp<Client>& client,
- int halVersion) {
+status_t CameraService::connectHelperLocked(
+ /*out*/
+ sp<Client>& client,
+ /*in*/
+ const sp<ICameraClient>& cameraClient,
+ int cameraId,
+ const String16& clientPackageName,
+ int clientUid,
+ int callingPid,
+ int halVersion,
+ bool legacyMode) {
int facing = -1;
int deviceVersion = getDeviceVersion(cameraId, &facing);
@@ -678,7 +681,7 @@
case CAMERA_DEVICE_API_VERSION_1_0:
client = new CameraClient(this, cameraClient,
clientPackageName, cameraId,
- facing, callingPid, clientUid, getpid());
+ facing, callingPid, clientUid, getpid(), legacyMode);
break;
case CAMERA_DEVICE_API_VERSION_2_0:
case CAMERA_DEVICE_API_VERSION_2_1:
@@ -687,7 +690,7 @@
case CAMERA_DEVICE_API_VERSION_3_2:
client = new Camera2Client(this, cameraClient,
clientPackageName, cameraId,
- facing, callingPid, clientUid, getpid());
+ facing, callingPid, clientUid, getpid(), legacyMode);
break;
case -1:
ALOGE("Invalid camera id %d", cameraId);
@@ -704,7 +707,7 @@
// Only support higher HAL version device opened as HAL1.0 device.
client = new CameraClient(this, cameraClient,
clientPackageName, cameraId,
- facing, callingPid, clientUid, getpid());
+ facing, callingPid, clientUid, getpid(), legacyMode);
} else {
// Other combinations (e.g. HAL3.x open as HAL2.x) are not supported yet.
ALOGE("Invalid camera HAL version %x: HAL %x device can only be"
@@ -760,12 +763,12 @@
return OK;
}
- status = connectHelperLocked(cameraClient,
+ status = connectHelperLocked(/*out*/client,
+ cameraClient,
cameraId,
clientPackageName,
clientUid,
- callingPid,
- client);
+ callingPid);
if (status != OK) {
return status;
}
@@ -823,13 +826,14 @@
return OK;
}
- status = connectHelperLocked(cameraClient,
+ status = connectHelperLocked(/*out*/client,
+ cameraClient,
cameraId,
clientPackageName,
clientUid,
callingPid,
- client,
- halVersion);
+ halVersion,
+ /*legacyMode*/true);
if (status != OK) {
return status;
}