use*_*159 8 camera android image freeze preview
我正在尝试构建一个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);
}
Run Code Online (Sandbox Code Playgroud)
}
非常感谢您的帮助!
比利
Mik*_*ike 15
老问题,我知道,但回答后人.你应该可以简单地打电话
camera.stopPreview();
Run Code Online (Sandbox Code Playgroud)
在您再次调用startPreview()之前,预览将冻结您正在查看的内容.
| 归档时间: |
|
| 查看次数: |
5334 次 |
| 最近记录: |