安卓 linux 修改分辨率,Android底层修改camera预览分辨率

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.

--

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值