Android 恢复CameraActivity会导致java.lang.RuntimeException:无法连接到摄影机服务

Android 恢复CameraActivity会导致java.lang.RuntimeException:无法连接到摄影机服务,android,android-camera,surfaceview,android-mediarecorder,Android,Android Camera,Surfaceview,Android Mediarecorder,我有一个使用SurfaceView和MediaRecorder录制视频的活动。每当我暂停转到另一个活动时,返回时会出现以下错误/异常: 代码 例外情况: java.lang.RuntimeException: Fail to connect to camera service at android.hardware.Camera.<init>(Camera.java:545) at android.hardware.Camera.open(Camera.java:

我有一个使用SurfaceView和MediaRecorder录制视频的活动。每当我暂停转到另一个活动时,返回时会出现以下错误/异常:

代码

例外情况:

java.lang.RuntimeException: Fail to connect to camera service
     at android.hardware.Camera.<init>(Camera.java:545)
     at android.hardware.Camera.open(Camera.java:403)
     at com.mycompany.app.android.CameraActivity.surfaceCreated(CameraActivity.java:362)
     at android.view.SurfaceView.updateWindow(SurfaceView.java:606)
     at android.view.SurfaceView.onWindowVisibilityChanged(SurfaceView.java:246)
     at android.view.View.dispatchWindowVisibilityChanged(View.java:9365)
     at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1289)
     at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1289)
     at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1289)
     at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1289)
     at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1289)
     at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1289)
     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1462)
     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1185)
     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6591)
     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777)
     at android.view.Choreographer.doCallbacks(Choreographer.java:590)
     at android.view.Choreographer.doFrame(Choreographer.java:560)
     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763)
     at android.os.Handler.handleCallback(Handler.java:739)
     at android.os.Handler.dispatchMessage(Handler.java:95)
     at android.os.Looper.loop(Looper.java:145)
     at android.app.ActivityThread.main(ActivityThread.java:5837)
     at java.lang.reflect.Method.invoke(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:372)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1388)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183)
15231-15238/com.mycompany.app.android W/art: Suspending all threads took: 10.396ms
java.lang.RuntimeException:无法连接到相机服务
在android.hardware.Camera.(Camera.java:545)
打开(Camera.java:403)
在com.mycompany.app.android.CameraActivity.surfaceCreated(CameraActivity.java:362)
在android.view.SurfaceView.updateWindow(SurfaceView.java:606)上
在android.view.SurfaceView.onWindowVisibilityChanged上(SurfaceView.java:246)
在android.view.view.dispatchWindowVisibilityChanged上(view.java:9365)
在android.view.ViewGroup.dispatchWindowVisibilityChanged中(ViewGroup.java:1289)
在android.view.ViewGroup.dispatchWindowVisibilityChanged中(ViewGroup.java:1289)
在android.view.ViewGroup.dispatchWindowVisibilityChanged中(ViewGroup.java:1289)
在android.view.ViewGroup.dispatchWindowVisibilityChanged中(ViewGroup.java:1289)
在android.view.ViewGroup.dispatchWindowVisibilityChanged中(ViewGroup.java:1289)
在android.view.ViewGroup.dispatchWindowVisibilityChanged中(ViewGroup.java:1289)
在android.view.ViewRootImpl.performTraversals上(ViewRootImpl.java:1462)
位于android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1185)
在android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6591)
在android.view.Choreographer$CallbackRecord.run(Choreographer.java:777)
位于android.view.Choreographer.doCallbacks(Choreographer.java:590)
位于android.view.Choreographer.doFrame(Choreographer.java:560)
在android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763)中
位于android.os.Handler.handleCallback(Handler.java:739)
位于android.os.Handler.dispatchMessage(Handler.java:95)
位于android.os.Looper.loop(Looper.java:145)
位于android.app.ActivityThread.main(ActivityThread.java:5837)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:1388)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183)
15231-15238/com.mycompany.app.android W/art:暂停所有线程需要10.396ms
如何防止抛出此异常?

试试这个

if(null==camera)
  camera = Camera.open();
if(null==camera)
  camera = Camera.open();