简体   繁体   English

来自Custom Camera的图像在Galaxy Nexus上模糊不清

[英]Images from Custom Camera are blurry on Galaxy Nexus

I have a custom camera in the app and the images that are taken on most of the devices look good but on galaxy nexus the story is different. 我在应用程序中有一个自定义相机,在大多数设备上拍摄的图像看起来不错,但在Galaxy nexus上,故事情况有所不同。 Images are blurry in Galaxy nexus. Galaxy nexus中的图像模糊不清。 I see grainy lines on Motorola Atrix as well. 我也看到了摩托罗拉Atrix的颗粒状线条。 But Droid X, Droid Razr, HTC Evo, HTC incredible are showing good results. 但是Droid X,Droid Razr,HTC Evo,HTC令人难以置信的都表现出了不错的成绩。 Any idea why it would happpen? 知道为什么它会开心吗? This is what I have so far. 这就是我到目前为止所拥有的。 PS: I am using Auto focus in the activity. PS:我在活动中使用自动对焦。

public class CameraPreview extends SurfaceView implements
    SurfaceHolder.Callback {

private SurfaceHolder mHolder;
private Camera mCamera;

public CameraPreview(Context context, Camera camera) {
    super(context);
    mCamera = camera;
    mHolder = getHolder();
    mHolder.addCallback(this);
    mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
    // The Surface has been created, now tell the camera where to draw the
    // preview.
    try {
        mCamera.setPreviewDisplay(holder);
        Camera.Parameters parameters = mCamera.getParameters();
        List<String> focusModes = parameters.getSupportedFocusModes();
        if (focusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)) {
            parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
        }

        parameters.set("orientation", "portrait");

        mCamera.setDisplayOrientation(90);
        mCamera.setParameters(parameters);
        mCamera.startPreview();
    } catch (IOException e) {
    }
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {

}

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {

    if (mHolder.getSurface() == null) {
        // preview surface does not exist
        return;
    }
    // stop preview before making changes
    try {
        mCamera.stopPreview();
    } catch (Exception e) {
        // ignore: tried to stop a non-existent preview
    }

    try {
        mCamera.startPreview();

    } catch (Exception e) {
    }
}

Its been a while I solved this problem. 已经有一段时间我解决了这个问题。 If I remember it correctly, I solved by adding the below lines while getting the camera instance. 如果我没记错的话,我通过在获取相机实例时添加以下行来解决。

Camera.Parameters parameters = camera.getParameters();
List<Camera.Size> sizes = parameters.getSupportedPictureSizes();
int w = 0, h = 0;
for (Size size : sizes) {
   if (size.width > w || size.height > h) {
      w = size.width;
      h = size.height;
   }

 }
 parameters.setPictureSize(w, h);

Have you tried this one ? 你试过这个吗?

if (cameraParameters.getSupportedSceneModes().contains(Camera.Parameters.SCENE_MODE_STEADYPHOTO)) {
   cameraParameters.setSceneMode(Camera.Parameters.SCENE_MODE_STEADYPHOTO);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM