Android Camera SurfaceView方向
好的,所以我有一个扩展SurfaceView和重写的类
surfaceChanged-仅调用startPreview
surfaceCreated-打开相机,编辑参数*,设置surfaceHolder
surfaceDestroyed-调用stopPreview,释放相机
这一切都很好,因为当方向是纵向时:
从surfaceCreated *
m_camera = Camera.open();
Camera.Parameters p = m_camera.getParameters();
if (getResources().getConfiguration().orientation !=
Configuration.ORIENTATION_LANDSCAPE)
{
p.set("orientation", "portrait");
// CameraApi is a wrapper to check for backwards compatibility
if (CameraApi.isSetRotationSupported())
{
CameraApi.setRotation(p, 90);
}
}
但是,每次方向更改时,它都会调用Camera.open()...,您可能知道这是一项非常昂贵的操作,从而导致过渡不那么平滑。
当我将方向强制为横向时,预览效果很好。仅调用一次Create就可以,因为预览是横向的,相机始终是用户看到的东西,因此可以调用。但是,我需要一种方法来设置肖像拍摄时实际照片的方向。但是,当我强制使用风景时,将相机纵向放置时,永远不会重新创建表面,也永远不会设置参数。
那么,如何执行以下一项(排他性的)?
方向更改时,在onDestroy和onCreate之间保留m_camera,以使过渡平滑
强制横向移动并检测方向变化的另一种方式...如果纵向旋转,则旋转最终拍摄的照片。
另外,如果我不在基地,有人可以指出我的方向吗?谢谢。
慕仙森
相关分类