文章目录
由于项目的摄像头在预览时如果放大太多倍(比如放大4倍或者8倍)会出现模糊的情况,所以我们需要做出限制,修改Camera的最大变焦倍数。(以下示例为Android13 MTK平台)
一、前摄后摄都修改
- 第一种修改方案:
vendor/vendor/mediatek/proprietary/custom/common/hal/imgsensor_metadata/common/config_static_metadata_scaler.h
例如我们这里修改的就是4倍
//==========================================================================
CONFIG_METADATA_BEGIN(MTK_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM)
CONFIG_ENTRY_VALUE(4, MFLOAT) //此参数表示最大支持变焦数
CONFIG_METADATA_END()
//==========================================================================
- 第二种修改方案:
vendor/vendor/mediatek/proprietary/packages/apps/Camera2/feature/setting/zoom/src/com/mediatek/camera/feature/setting/zoom/ZoomCaptureRequestConfig.java
将mMaxZoom变量重新赋值为我们想要的变焦倍数
@Override
public void setCameraCharacteristics(CameraCharacteristics characteristics) {
//........省略多余代码.........
} else {
mMaxZoom = characteristics.get(CameraCharacteristics.SCALER_AVAILABLE_MAX_DIGITAL_ZOOM);
}
LogHelper.d(TAG, "[setCameraCharacteristics] MaxZoom: " + mMaxZoom);
//将mMaxZoom重新赋值
mMaxZoom = 2.0f; //此参数表示最大支持变焦数
LogHelper.d(TAG, "[setCameraCharacteristics] MaxZoom: " + mMaxZoom);
//judge whether support zoom ratio or not
Range<Float> zoomRatioRange =characteristics.get(CameraCharacteristics.CONTROL_ZOOM_RATIO_RANGE);
mZoomRatioSupported = zoomRatioRange != null && zoomRatioRange.getUpper() >0;
//........省略多余代码.........
二、只修改前摄或后摄
首先,我们要找到项目中所用到的前摄、后摄的目录名称是什么。例如我当前的项目的前摄是在gc05a2_mipi_raw目录下,那么我们就找到其中的metadata.sensor文件去修改即可。
那知道项目中前摄后摄的目录是哪一个怎么办?
我们在vendor/vendor/device/xxxx/类似这样的目录中去找到ProjectConfig.mk,里面的CUSTOM_HAL_IMGSENSOR和CUSTOM_KERNEL_IMGSENSOR这两个字段里面就包含前后摄的目录名称。
类似于这样
CUSTOM_HAL_IMGSENSOR = gc13a0_mipi_raw gc05a2_mipi_raw gc02m1_mipi_raw ov9281_mipi_raw
CUSTOM_KERNEL_IMGSENSOR = gc13a0_mipi_raw gc05a2_mipi_raw gc02m1_mipi_raw ov9281_mipi_raw
vendor/vendor/mediatek/proprietary/custom/common/hal/imgsensor_metadata/sensor/gc05a2_mipi_raw/config_static_metadata.sensor.gc05a2mipiraw.h
在config_static_metadata.sensor.gc05a2mipiraw.h文件中加上这样的修改,这样就相当于前摄我们修改为了最大两倍。在编译时,这里配置的变量会覆盖掉common目录中的,所以最终会以这里修改的为准。
//==========================================================================
CONFIG_METADATA_BEGIN(MTK_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM)
CONFIG_ENTRY_VALUE(2, MFLOAT) //此参数表示最大支持变焦数
CONFIG_METADATA_END()
//==========================================================================