修改camera预览分辨率 高通Android驱动层开发-摄像头预览分辨率设置
diff --git a/src/LINUX/android/hardware/qcom/camera/QCamera2/HAL/QCameraParameters.cpp b/src/LINUX/android/hardware/qcom/camera/QCamera2/HAL/QCameraParameters.cpp
old mode 100644
new mode 100755
index cdfac2e..e865c92
--- a/src/LINUX/android/hardware/qcom/camera/QCamera2/HAL/QCameraParameters.cpp
+++ b/src/LINUX/android/hardware/qcom/camera/QCamera2/HAL/QCameraParameters.cpp
@@ -5582,7 +5582,7 @@ int32_t QCameraParameters::setTintlessValue(const QCameraParameters& params)
setTintlessValue(prop);
}
}
-
+ setTintlessValue("enable"); //yong.yang add disable
return NO_ERROR;
}
diff --git a/src/LINUX/android/packages/apps/Camera2/src/com/android/camera/PhotoModule.java b/src/LINUX/android/packages/apps/Camera2/src/com/android/camera/PhotoModule.java
old mode 100644
new mode 100755
index f5498da..594b6ee
--- a/src/LINUX/android/packages/apps/Camera2/src/com/android/camera/PhotoModule.java
+++ b/src/LINUX/android/packages/apps/Camera2/src/com/android/camera/PhotoModule.java
@@ -2833,8 +2833,12 @@ public class PhotoModule
// Set a preview size that is closest to the viewfinder height and has
// the right aspect ratio.
List sizes = mParameters.getSupportedPreviewSizes();
- Size optimalSize = CameraUtil.getOptimalPreviewSize(mActivity, sizes,
- (double) size.width / size.height);
+ //yangshigang add start
+ Size optimalSize = CameraUtil.getPanelPreviewSize(mActivity, sizes);
+
+ //Size optimalSize = CameraUtil.getOptimalPreviewSize(mActivity, sizes,
+ //(double) size.width / size.height);
+ //yangshigang add end
Size original = mParameters.getPreviewSize();
if (!original.equals(optimalSize)) {
mParameters.setPreviewSize(optimalSize.width, optimalSize.height);
diff --git a/src/LINUX/android/packages/apps/Camera2/src/com/android/camera/util/CameraUtil.java b/src/LINUX/android/packages/apps/Camera2/src/com/android/camera/util/CameraUtil.java
old mode 100644
new mode 100755
index 937e1d1..3c73bf7
--- a/src/LINUX/android/packages/apps/Camera2/src/com/android/camera/util/CameraUtil.java
+++ b/src/LINUX/android/packages/apps/Camera2/src/com/android/camera/util/CameraUtil.java
@@ -494,6 +494,103 @@ public class CameraUtil {
return (optimalPickIndex == -1) ? null : sizes.get(optimalPickIndex);
}
+/*yangshigang add start*/
+ public static Size getPanelPreviewSize(Activity currentActivity,
+
+ List sizes) {
+
+ // Use a very small tolerance because we want an exact match.
+
+ final double ASPECT_TOLERANCE = 0.03;
+
+ if (sizes == null) return null;
+
+
+
+ Size optimalSize = null;
+
+ double minDiff = Double.MAX_VALUE;
+
+ Log.v(TAG, "CameraUtil: [young]: minDiff = "+ minDiff);
+
+ // Because of bugs of overlay and layout, we sometimes will try to
+
+ // layout the viewfinder in the portrait orientation and thus get the
+
+ // wrong size of preview surface. When we change the preview size, the
+
+ // new overlay will be created before the old one closed, which causes
+
+ // an exception. For now, just get the screen size.
+
+ Point point = getDefaultDisplaySize(currentActivity, new Point());
+
+ int targetHeight = Math.min(point.x, point.y);
+
+ int targetWidth = Math.max(point.x, point.y);
+
+ double panelRatio = (double) targetWidth / targetHeight;
+
+
+
+
+
+ // Try to find an size match aspect ratio and size
+
+ for (Size size : sizes) {
+
+ double ratio = (double) size.width / size.height;
+
+
+
+
+
+ if (Math.abs(ratio - panelRatio) > ASPECT_TOLERANCE) continue;
+
+ if (Math.abs(size.height - targetHeight) < minDiff) {
+
+
+
+ optimalSize = size;
+
+ minDiff = Math.abs(size.height - targetHeight);
+
+
+
+ }
+
+ }
+
+ // Cannot find the one match the aspect ratio. This should not happen.
+
+ // Ignore the requirement.
+
+ if (optimalSize == null) {
+
+ Log.w(TAG, "No preview size match the aspect ratio");
+
+ minDiff = Double.MAX_VALUE;
+
+ for (Size size : sizes) {
+
+ if (Math.abs(size.height - targetHeight) < minDiff) {
+
+ optimalSize = size;
+
+ minDiff = Math.abs(size.height - targetHeight);
+
+ }
+
+ }
+
+ }
+
+ return optimalSize;
+
+ }
+
+
+ /*yangshigang add end*/
public static int getOptimalPreviewSize(Activity currentActivity,
Point[] sizes, double targetRatio) {
// Use a very small tolerance because we want an exact match.
--