SurfaceView显示摄像机图像的噪点

时间:2013-10-16 10:25:51

标签: android camera surfaceview

我在Galaxy S2(android 2.3)和LG P500(android 2.3)上显示相机取景器时遇到了一些麻烦。我在SurfaceView上有一些噪音(干扰)。然而,结果照片没有这样的缺陷。

View of the issue

其他设备(包括带有2.3的设备和带有android 4的Galaxy S2)工作正常。

不幸的是,我没有这样的设备,因此我无法在每次更改源代码后对其进行测试。也许有人已经有这个问题?

此外,我尝试使用三星远程测试实验室测试此应用程序,但不幸的是,带有android 2.3的Galaxy S2被放置在桌面上,他的相机采用了黑色(飞溅无效)。在这种情况下,没有任何白色条带。

的onCreate()

mSurfaceHolder = mSurfaceView.getHolder();
mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mSurfaceHolder.addCallback(this);
...
mSurfaceView.setLayoutParams(lp);

的onResume()

mCamera = Camera.open();
if (mCamera == null) {
    Toast.makeText(this, R.string.t_no_camera, Toast.LENGTH_SHORT).show();
    finish();
} else {
    mCamera.setDisplayOrientation(90);
    Parameters p = mCamera.getParameters();

    p.setFocusMode(Parameters.FOCUS_MODE_AUTO);
    prepareFlash();
    if (prepareResolution()) {
        Camera.Size size = getBestPreviewSize(mDisplay.getWidth(), mDisplay.getHeight(), p);
        if (size != null) {
            p.setPreviewSize(size.width, size.height);
        }
    }

    mCamera.setParameters(p);

    try {
        mCamera.setPreviewDisplay(mHolder);
    } catch (IOException e) {
        e.printStackTrace();
    }
    mCamera.startPreview();
}

surfaceCreated(SurfaceHolder holder):

try {
    mCamera.setPreviewDisplay(holder);
} catch (IOException e) {
    e.printStackTrace();
}

有什么想法吗?会是什么呢?我会感激任何提示。

1 个答案:

答案 0 :(得分:1)

在纵向模式下启动相机预览;具有此类预览的错误发生在不同的设备上。有时,这些错误会通过制造商的软件升级得到修复,有时候,它们不是。有时,疯狂的解决方法可以解决问题。

为了安全起见,坚持使用横向模式。也许您的应用可以保留设备/构建版本的黑名单,其中预览活动不允许垂直(纵向)方向。

请注意,您通常可以使用旋转图标,位图甚至文字标签模拟纵向方向。