From: Alan Newberger Date: Thu, 25 Jun 2015 20:58:33 +0000 (-0700) Subject: Ensure CaptureModule/API2 works without front camera X-Git-Tag: android-x86-6.0-r3~35^2^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=ef22af43f7769ce6975f674351d29d5fa0df5e07;p=android-x86%2Fpackages-apps-Camera2.git Ensure CaptureModule/API2 works without front camera Add a check in both first run dialogs, and the generated HardwareSpec, so that front cameras are only used if detected. BUG=21781461 Change-Id: I6844655b2fd3df90b649f5dfd6a006ef68dbf1da --- diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java index a3f728c9d..640da4fd5 100644 --- a/src/com/android/camera/CaptureModule.java +++ b/src/com/android/camera/CaptureModule.java @@ -773,7 +773,7 @@ public class CaptureModule extends CameraModule implements return new HardwareSpec() { @Override public boolean isFrontCameraSupported() { - return true; + return mOneCameraManager.hasCameraFacing(Facing.FRONT); } @Override diff --git a/src/com/android/camera/app/FirstRunDialog.java b/src/com/android/camera/app/FirstRunDialog.java index c3a3f889b..d810c4b7a 100644 --- a/src/com/android/camera/app/FirstRunDialog.java +++ b/src/com/android/camera/app/FirstRunDialog.java @@ -21,6 +21,7 @@ import android.content.Context; import android.content.DialogInterface; import android.view.ViewGroup; +import com.android.camera.device.CameraId; import com.android.camera.exif.Rational; import com.android.camera.one.OneCamera.Facing; import com.android.camera.one.OneCameraAccessException; @@ -157,10 +158,14 @@ public class FirstRunDialog { public void onConfirm(Rational aspectRatio) { // Change resolution setting based on the chosen aspect ratio. try { - mResolutionSetting.setPictureAspectRatio( - mOneCameraManager.findFirstCameraFacing(Facing.BACK), aspectRatio); - mResolutionSetting.setPictureAspectRatio( - mOneCameraManager.findFirstCameraFacing(Facing.FRONT), aspectRatio); + CameraId backCameraId = mOneCameraManager.findFirstCameraFacing(Facing.BACK); + if (backCameraId != null) { + mResolutionSetting.setPictureAspectRatio(backCameraId, aspectRatio); + } + CameraId frontCameraId = mOneCameraManager.findFirstCameraFacing(Facing.FRONT); + if (frontCameraId != null) { + mResolutionSetting.setPictureAspectRatio(frontCameraId, aspectRatio); + } } catch (OneCameraAccessException ex) { mListener.onCameraAccessException(); return; diff --git a/src/com/android/camera/one/v2/Camera2OneCameraManagerImpl.java b/src/com/android/camera/one/v2/Camera2OneCameraManagerImpl.java index 0b766a5a8..a4b5a9b1d 100644 --- a/src/com/android/camera/one/v2/Camera2OneCameraManagerImpl.java +++ b/src/com/android/camera/one/v2/Camera2OneCameraManagerImpl.java @@ -99,7 +99,8 @@ public class Camera2OneCameraManagerImpl implements OneCameraManager { @Override public CameraId findFirstCameraFacing(@Nonnull Facing facing) { - return CameraId.from(findCameraId(facing)); + String cameraId = findCameraId(facing); + return (cameraId != null) ? CameraId.from(cameraId) : null; } @Override