【发布时间】:2011-06-01 13:58:37
【问题描述】:
我创建了一个具有增强现实功能的活动。其中一部分是在后台显示手机摄像头(在 Activity 布局中是 SurfaceView)。
在我做的活动 onCreate() 方法中:
surfaceHolder = surfaceView.getHolder();
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
surfaceHolder.addCallback(this);
我的回调是:
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
camera = Camera.open();
camera.setDisplayOrientation(90);
camera.setPreviewDisplay(holder);
} catch (Exception e) {
// e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
camera.startPreview();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
camera.stopPreview();
camera.release();
}
现在当我关闭我的应用程序(将其留在后台)时,相机应用程序无法正常工作,因为相机仍被锁定在我的应用程序中。
我应该如何实现活动 onResume() onPause() 方法以锁定/解锁相机?
此外,将相机锁定在应用程序中会占用 Galaxy S 上大约 5% 的 CPU,并且在我回到我的应用程序后 - 它在尝试 camera.startPreview() 时在 surfaceChanged() 中崩溃;
救命!
【问题讨论】:
-
已解决。感谢您不注意并让它自己做。
-
不客气!我喜欢不注意。
-
你应该发布你的解决方案来帮助任何未来的开发者解决这个问题。
标签: android camera augmented-reality surfaceview android-camera