【问题标题】:Camera preview is blurred in samsung galaxy grand but it is good in samsung s3三星galaxy grand中的相机预览模糊,但在三星s3中很好
【发布时间】:2014-04-19 11:41:14
【问题描述】:

嘿,我刚刚启动了一个用于相机预览的程序,代码运行良好 但是在我的设备(三星 Galaxy Grand)中,相机有点模糊,但是当我在另一台设备(三星 S3)中运行它时,相机质量很好,我的代码有什么问题吗?

MainActivity.java

package com.practise.camera;
import java.io.IOException;
import android.app.Activity;
import android.graphics.PixelFormat; 
import android.hardware.Camera;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.Window;
import android.view.WindowManager;

public class MainActivity extends Activity implements SurfaceHolder.Callback {
SurfaceHolder mSurfaceHolder;
SurfaceView mSurfaceView;
public Camera mCamera;
boolean mPreviewRunning;

/** Called when the activity is first created. */

@Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     requestWindowFeature(Window.FEATURE_NO_TITLE);
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
     WindowManager.LayoutParams.FLAG_FULLSCREEN);
     setContentView(R.layout.activity_main);
     mSurfaceView = (SurfaceView) findViewById(R.id.surface_camera);
     mSurfaceHolder = mSurfaceView.getHolder();
     mSurfaceHolder.addCallback(this);
     mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);


 }

@Override
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
        if (mPreviewRunning) {
            mCamera.stopPreview();
        }
        Camera.Parameters p = mCamera.getParameters();
        mCamera.setParameters(p);
        try {
            mCamera.setPreviewDisplay(arg0);

        } catch (IOException e) {
            e.printStackTrace();
        }
        mCamera.startPreview();
        mPreviewRunning = true;
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
    mCamera = Camera.open();
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
    mCamera.stopPreview();
    mPreviewRunning = false;
    mCamera.release();
}

Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
    public void onPictureTaken(byte[] imageData, Camera c) {
    }
};



}

activity_main.xml

<LinearLayout 
android:id="@+id/LinearLayout01"
android:layout_height="fill_parent" 
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:orientation="vertical">

 <SurfaceView 
    android:id="@+id/surface_camera"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"        
    />
</LinearLayout>

代码的问题在哪里...除了这两个设备我没有在任何设备上检查它

相机预览的结果是

但内置的相机应用程序很好,它显示为

【问题讨论】:

  • 即使我在三星银河盛大中使用另一个相机预览应用程序进行检查,结果也是一样的,预览是模糊的......但在相机内置应用程序中,清晰度很好。

标签: android android-camera


【解决方案1】:

您可以尝试让相机自动对焦。在您的 surfaceChanged 例程中添加与此类似的内容。

// newer phones can be told to auto focus before taking the picture
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if (currentapiVersion >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
    if ( p.getSupportedFocusModes().contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE) ) {
        p.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
    }
}

mCamera.setParameters(p);
mCamera.startPreview();

【讨论】:

  • 我发现了问题,当我设置适合设备的预览大小和图片大小时,它工作正常......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-22
  • 1970-01-01
  • 2013-02-21
  • 1970-01-01
  • 2012-06-03
  • 1970-01-01
相关资源
最近更新 更多