gpt4 book ai didi

Android 相机预览是黑暗的

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:26:38 28 4
gpt4 key购买 nike

我正在尝试创建一个自定义相机应用程序。我按照此处的 Android Developer 示例进行了一些小的调整。但是,我的相机预览结果相当暗。另一方面,备用相机提供了更明亮的预览。

我尝试了几种设置以使其更好地工作,但似乎没有任何影响。相关代码贴在这里。

CameraActivity(主)

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_camera);
if(CameraHelper.checkCameraHardware(this)) {
mHelper = new CameraHelper(this, getWindowManager().getDefaultDisplay());
}

FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
mPreview = new CameraPreview(this, CameraHelper.camera);
mPreview.setLayoutParams(new LayoutParams(CameraHelper.mSize.width, CameraHelper.mSize.height, Gravity.CENTER));

preview.addView(mPreview);

}

CameraHelper类(初始化相机并设置默认参数)

    public CameraHelper(CameraListener listener, Display display){
mListener = listener;
camera = getCameraInstance();

mParameters = camera.getParameters();
initCameraParameters();

mSize = getPreviewSize(display);
mParameters.setFocusMode(Parameters.FOCUS_MODE_AUTO);
mParameters.setPictureSize(2560, 1920);

mParameters.setAutoExposureLock(false);
mParameters.setAutoWhiteBalanceLock(false);
mParameters.set("iso", "ISO800"); //Tried with 400, 800, 600 (values obtained from flatten())
mParameters.setColorEffect("none");
mParameters.setPictureSize(2560, 1920);
mParameters.setPreviewFrameRate(20);
mParameters.set("scene-mode", "auto");
mParameters.setFocusMode("auto");
mParameters.setExposureCompensation(4);
camera.setParameters(mParameters);
}

相机将帧发送到 SurfaceHolder.Surface 从上面的开发者页面链接的示例。

看这里的区别:库存相机应用 Stock Camera Preview我的相机应用 My Camera app

尝试根据此处发布的相机的 upack 参数设置 ISO 等。还是不行。

Parameters(16369): effect-values=none,mono,negative,sepia,aqua,sharpen,purple,green-tint,blue-tint,pink,yellow,red-tint,mono,antique;exposure-compensation-step=0.5;focal-length=3.43;focus-areas=(0,0,0,0,0);focus-distances=0.10,1.20,Infinity;focus-mode-values=auto,macro,facedetect;gps-altitude=0;gps-latitude=0;gps-longitude=0;gps-processing-method=GPS;gps-timestamp=0;horizontal-view-angle=51.2;iso=auto;iso-values=auto,ISO50,ISO100,ISO200,ISO400,ISO800,ISO1600;jpeg-quality=1;jpeg-thumbnail-height=480;jpeg-thumbnail-size-values=640x480,0x0;jpeg-thumbnail-width=640;max-exposure-compensation=4;max-num-focus-areas=1;max-zoom=12;min-exposure-compensation=-4;picture-format=jpeg;picture-format-values=jpeg;picture-size-values=2560x1920,2560x1536,2048x1536,2048x1232,1600x1200,1600x960,800x480,640x480;preview-format=yuv420sp;preview-format-values=yuv420sp;preview-fps-range=15000,30000;preview-fps-range-values=(15000,30000);preview-frame-rate=30;preview-frame-rate-values=30;preview-size=640x480;preview-size-values=1280x720,800x480,720x480,640x480,352x288;rotation=0;scene-mode=auto;scene-mode-values=auto,portrait,landscape,night,beach,snow,sunset,fireworks,sports,party,candlelight,asd,backlight,dusk-dawn,text,fall-color;vertical-view-angle=39.4;video-frame-format=yuv422i-yuyv;whitebalance-values=auto,incandescent,fluorescent,daylight,cloudy-daylight;zoom=0;zoom-ratios=100,125,150,175,200,225,250,275,300,325,350,375,400;zoom-supported=true;focus-mode=auto;picture-size=2560x1920;exposure-compensation=4;

编辑:根据下面的评论进行进一步测试后,似乎只是预览变得比应有的更暗。实际拍摄的图像光线充足,曝光补偿似乎工作正常。它只是让我头疼的预览。在运行 CM11 的 i9003 和运行 stock android 的 Nexus 10 上测试。

最佳答案

某些相机似乎存在错误报告支持的预览 FPS 范围的错误。您可以通过调用时返回相同最小值和最大值的设备来识别有问题的设备

getPreviewFpsRange (int[] 范围)

在我的例子中,我在报告 (15000, 15000)(30000, 30000) 的设备上看到了这个问题,但在值不同的设备上却没有,像 (7000, 30000)

我能找到的最佳解决方案是确定具有不同最小值和最大值的受支持 FPS 范围,然后设置:

Camera.Parameters params = camera.getParameters();
final int[] previewFpsRange = new int[2];
params.getPreviewFpsRange(previewFpsRange);
if (previewFpsRange[0] == previewFpsRange[1]) {
final List<int[]> supportedFpsRanges = params.getSupportedPreviewFpsRange();
for (int[] range : supportedFpsRanges) {
if (range[0] != range[1]) {
params.setPreviewFpsRange(range[0], range[1]);
break;
}
}
}
camera.setParameters(params);

之所以可行,是因为报告的范围似乎只有 1 个项目符合实际范围。例如:

BLU Vivo XL:

preview-fps-range=30000,30000
preview-fps-range-values=(15000,15000),(20000,20000),(24000,24000),(5000,30000),(30000,30000)

像素:

preview-fps-range=7000,30000
preview-fps-range-values=(15000,15000),(24000,24000),(7000,30000),(30000,30000)

更稳健的方法是通过比较所有可用值来设置最小值和最大值。

关于Android 相机预览是黑暗的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26967490/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com