[英]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.