簡體   English   中英

Android相機預覽 - 如何“凍結”相機?

[英]Android Camera Preview — How to 'freeze' the camera?

我正在嘗試構建一個Android應用程序來拍照,我需要凍結給定事件(即拍攝的照片)上的相機預覽,並僅在另一個事件之后重新啟動它。

換句話說,我想要的是視圖顯示相機在凍結事件發生之前看到的任何內容,然后凍結圖像(即顯示此事件發生時屏幕上顯示的內容 - 就像拍攝照片一樣)直到解凍事件發生。

現在,我正在使用帶有SurfaceHolder.Callback的SurfaceView來執行此操作,我嘗試使用PreviewCallback來凍結屏幕,但不幸的是,我找不到示例或教程,我真的被困在這點。

如果有人有關於如何完成這項工作的指南或指示,我將非常感謝幫助......

我正在粘貼下面代碼的相關部分:

公共類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()之前,預覽將凍結您正在查看的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM