gpt4 book ai didi

Android Camera Preview -- 如何将相机设置为 'freeze'?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:57:57 24 4
gpt4 key购买 nike

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

换句话说,我想要的是让 View 显示相机看到的任何内容,直到卡住事件发生,然后卡住图像(即显示此事件发生时屏幕上的任何内容——就好像照片已拍摄)直到解冻事件发生。

现在,我目前正在使用带有 SurfaceHolder.Callback 的 SurfaceView 来执行此操作,并且我尝试使用 PreviewCallback 来卡住屏幕,但不幸的是,我找不到示例或教程,我真的卡在了这里。

如果有人有指南或一些关于如何完成此操作的指示,我将非常感谢您的帮助...

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

公共(public)类 CustomCameraView 扩展了 SurfaceView {

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);
}

非常感谢您的帮助!

-比利

最佳答案

老问题,我知道,但要为后代回答。您应该可以简单地调用

camera.stopPreview();

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

关于Android Camera Preview -- 如何将相机设置为 'freeze'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4199959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com