在自定义相机android上拉伸图像

时间:2013-10-26 17:11:45

标签: android android-camera

我来找你,因为我的自定义相机有一个很大的问题:图像被拉伸了!我从尺寸上看问题,但我没有解决它。

如果你想让照片显示问题,我会发布

这是我的代码:

public class CameraActivity extends Activity{

private SurfaceView surface_view;
private Camera mCamera;
SurfaceHolder.Callback sh_ob = null;
SurfaceHolder surface_holder        = null;
SurfaceHolder.Callback sh_callback  = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    getWindow().setFormat(PixelFormat.TRANSLUCENT);

    surface_view = new SurfaceView(getApplicationContext());
    addContentView(surface_view, new WindowManager.LayoutParams(WindowManager.LayoutParams.FILL_PARENT, WindowManager.LayoutParams.FILL_PARENT));

    if (surface_holder == null) {
        surface_holder = surface_view.getHolder();
    }

    sh_callback = my_callback();
    surface_holder.addCallback(sh_callback);
}

SurfaceHolder.Callback my_callback() {
    SurfaceHolder.Callback ob1 = new SurfaceHolder.Callback() {

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

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

            try {
                mCamera.setPreviewDisplay(holder);
            } catch (IOException exception) {
                mCamera.release();
                mCamera = null;
            }
        }

        @Override
        public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
            mCamera.startPreview();
        }
    };
    return ob1;
}

}

感谢您的帮助:D

1 个答案:

答案 0 :(得分:0)

您不能全屏拉伸表面;你应该根据相机的宽高比来设置它。要涵盖所有情况,您需要更多回调。在这里查看一个不错的包装类:http://www.vogella.com/code/de.vogella.android.gallery/src/com/example/android/hcgallery/CameraFragment.html