首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android相机预览--如何“冻结”相机?

Android相机预览--如何“冻结”相机?
EN

Stack Overflow用户
提问于 2010-11-17 07:04:44
回答 1查看 6.6K关注 0票数 8

我目前正在尝试构建一个android应用程序来拍照,我需要在给定的事件(即拍摄的照片)上冻结相机预览,并仅在另一个事件后重新启动它。

换句话说,我想要的是让视图显示相机所看到的任何内容,直到冻结事件发生,然后冻结图像(即显示该事件发生时屏幕上的任何内容--就像拍摄了一张照片一样),直到解冻事件发生。

现在,我正在使用带有SurfaceHolder.Callback的SurfaceView来做这件事,我试图使用PreviewCallback来冻结屏幕,但不幸的是,我找不到示例或教程,我真的被困在这一点上了。

如果有人对如何做到这一点有一个指南或一些建议,我将非常感谢你的帮助……

我粘贴了下面代码的相关部分:

公共类CustomCameraView扩展了SurfaceView {

代码语言:javascript
复制
Camera camera;
SurfaceHolder previewHolder;

//Callback for the surfaceholder
SurfaceHolder.Callback surfaceHolderListener = new SurfaceHolder.Callback() {
    public void surfaceCreated(SurfaceHolder holder) {
        camera=Camera.open();

        try 
        {
            camera.setPreviewDisplay(previewHolder);
        }
        catch (Throwable t) {

        }
    }

    public void surfaceChanged(SurfaceHolder surfaceHolder, int format, int w, int h)
    {
        Parameters params = camera.getParameters();
        params.setPictureFormat(PixelFormat.JPEG);
            camera.setParameters(params);
            camera.startPreview();
    }

    public void surfaceDestroyed(SurfaceHolder arg0)
    {
        camera.stopPreview();
        camera.release();
    }
};
public CustomCameraView(Context ctx)
{
    super(ctx);

    previewHolder = this.getHolder();
        previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
        previewHolder.addCallback(surfaceHolderListener);
        setBackgroundColor(Color.TRANSPARENT);
}
public CustomCameraView(Context context, AttributeSet attrs)
{
    super(context, attrs);
}
protected void onDraw (Canvas canvas)
{
}
public void closeCamera()
{
    if(camera != null)
        camera.release();
}
public void dispatchDraw(Canvas c)
{
    super.dispatchDraw(c);
}

}

非常感谢您的帮助!

-Billy

EN

回答 1

Stack Overflow用户

发布于 2011-12-09 21:03:58

这是个老问题,我知道,但这是为了子孙后代。您应该能够简单地调用

代码语言:javascript
复制
camera.stopPreview();

预览将冻结在您正在查看的任何内容上,直到您再次调用startPreview()。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4199959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档