mPreview是CameraActivity的对象。我从我的主要活动运行相机视图。 现在在MainActivity中有onPause()方法。
RightNow就像这样:
protected void onPause() {
super.onPause();
if (counter>=2) {
System.exit(0);
}
}
但是这个代码。如果进入暂停状态,我的应用程序将退出。 如果用户从设备暂停回来,我想让我的应用程序再次运行。
所以为此我实施了这个代码:
protected void onPause() {
super.onPause();
if (counter>=2) {
//System.exit(0);
try {
if (mPreview.mCamera!=null) {
mPreview.mCamera.stopPreview();
mPreview.isPreviewRunning=false;
mPreview.mCamera.release();
}
} catch (Exception e) {
Log.e("Camera", e.getMessage());
}
//mPreview.mCamera.stopPreview();
}
else{
// mPreview.mCamera.startPreview();
mPreview.isPreviewRunning=false;
}
}
}
但是使用这段代码,有时候我的应用程序崩溃了。所以我在哪里实施它?
堆栈追踪:
11-03 12:26:21.748: ERROR/AndroidRuntime(4295): FATAL EXCEPTION: main
11-03 12:26:21.748: ERROR/AndroidRuntime(4295): java.lang.RuntimeException: Method called after release()
11-03 12:26:21.748: ERROR/AndroidRuntime(4295): at android.hardware.Camera.setHasPreviewCallback(Native Method)
11-03 12:26:21.748: ERROR/AndroidRuntime(4295): at android.hardware.Camera.access$600(Camera.java:114)
11-03 12:26:21.748: ERROR/AndroidRuntime(4295): at android.hardware.Camera$EventHandler.handleMessage(Camera.java:472)
11-03 12:26:21.748: ERROR/AndroidRuntime(4295): at android.os.Handler.dispatchMessage(Handler.java:99)
11-03 12:26:21.748: ERROR/AndroidRuntime(4295): at android.os.Looper.loop(Looper.java:123)
11-03 12:26:21.748: ERROR/AndroidRuntime(4295): at android.app.ActivityThread.main(ActivityThread.java:4633)
11-03 12:26:21.748: ERROR/AndroidRuntime(4295): at java.lang.reflect.Method.invokeNative(Native Method)
11-03 12:26:21.748: ERROR/AndroidRuntime(4295): at java.lang.reflect.Method.invoke(Method.java:521)
11-03 12:26:21.748: ERROR/AndroidRuntime(4295): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
11-03 12:26:21.748: ERROR/AndroidRuntime(4295): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
11-03 12:26:21.748: ERROR/AndroidRuntime(4295): at dalvik.system.NativeStart.main(Native Method)
11-03 12:26:21.758: WARN/ActivityManager(171): Force finishing activity de.offis.magic.core/.GLCamTest
感谢。
答案 0 :(得分:1)
@覆盖 public void surfaceDestroyed(SurfaceHolder surfaceHolder){
this.getHolder().removeCallback(this);
mCamera.stopPreview();
mCamera.release();
mCamera = null;
Log.e("surfaceDestroyed", "surfaceDestroyed");
}
然后在Resume功能上重新初始化相机。
答案 1 :(得分:0)
尝试调用super.onPause();停止预览并释放手柄后。 这对我有用。