Merge cherrypicks of [5532243, 5532244, 5532245, 5532246, 5532247, 5532826, 5530552, 5532902, 5530553, 5531520, 5532903, 5530554, 5529581, 5529582, 5531521, 5532979, 5532999, 5532248, 5531522, 5531523, 5531524, 5531525, 5531526, 5529583, 5529584, 5529585, 5529586, 5531351, 5529632, 5530506, 5530507, 5532980, 5533000] into pi-qpr1-release Change-Id: I54e55b47d6cf9be58ff9507b521f615fb7b4a573
diff --git a/services/core/java/com/android/server/camera/CameraServiceProxy.java b/services/core/java/com/android/server/camera/CameraServiceProxy.java index 0ee55ed..527539d 100644 --- a/services/core/java/com/android/server/camera/CameraServiceProxy.java +++ b/services/core/java/com/android/server/camera/CameraServiceProxy.java
@@ -21,6 +21,7 @@ import android.content.IntentFilter; import android.hardware.ICameraService; import android.hardware.ICameraServiceProxy; +import android.media.AudioManager; import android.metrics.LogMaker; import android.nfc.INfcAdapter; import android.os.Binder; @@ -393,6 +394,19 @@ boolean wasEmpty = mActiveCameraUsage.isEmpty(); switch (newCameraState) { case ICameraServiceProxy.CAMERA_STATE_OPEN: + // Notify the audio subsystem about the facing of the most-recently opened + // camera This can be used to select the best audio tuning in case video + // recording with that camera will happen. Since only open events are used, if + // multiple cameras are opened at once, the one opened last will be used to + // select audio tuning. + AudioManager audioManager = getContext().getSystemService(AudioManager.class); + if (audioManager != null) { + // Map external to front for audio tuning purposes + String facingStr = (facing == ICameraServiceProxy.CAMERA_FACING_BACK) ? + "back" : "front"; + String facingParameter = "cameraFacing=" + facingStr; + audioManager.setParameters(facingParameter); + } break; case ICameraServiceProxy.CAMERA_STATE_ACTIVE: CameraUsageEvent newEvent = new CameraUsageEvent(facing, clientName, apiLevel);