Android准备videoRecorder停止预览(Android prepare videoRecorder stops preview)

编程入门 行业动态 更新时间:2024-10-16 20:17:49
Android准备videoRecorder停止预览(Android prepare videoRecorder stops preview)

所以我有一个相机应用程序,我也想录制视频。 当我按下按钮从相机切换到视频时,我这样做

public void prepareVideoRecorder() { mCamera.stopPreview(); mCamera.prepareRecorder(video_orientation, camera_surface); // mCamera.startPreview(); }

和我的准备方法

public void prepareRecorder(int video_degrees, CameraSurfaceView sf) { CamcorderProfile camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH); recorder = new MediaRecorder(); mCamera.unlock(); recorder.setCamera(mCamera); recorder.setPreviewDisplay(sf.getHolder().getSurface()); Log.v("this", "orientation hint = " + video_degrees); recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); recorder.setOrientationHint(video_degrees); File imageFileFolder = new File(Environment.getExternalStorageDirectory(), "DCIM"); String filename = imageFileFolder.toString() + "/" + new SimpleDateFormat("ddMMyyyyHHmmss").format(new Date()) + ".mp4"; recorder.setOutputFile(filename); recorder.setProfile(camcorderProfile); try { recorder.prepare(); } catch (Exception e) { e.printStackTrace(); } }

当我按下“开关”按钮时预览停止。 但是,如果我按下开始录制按钮,一切正常,我可以录制视频,并再次开始预览。 如果我尝试从prepareVideoRecorder取消注释mCamera.startPreview()我得到此错误

02-24 13:44:49.146: E/InputEventReceiver(18078): Exception dispatching input event. 02-24 13:44:49.146: E/MessageQueue-JNI(18078): Exception in MessageQueue callback: handleReceiveCallback 02-24 13:44:49.146: E/MessageQueue-JNI(18078): java.lang.RuntimeException: startPreview failed 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.hardware.Camera.startPreview(Native Method) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at org.dtaz.yoda.DtazCamera.startPreview(DtazCamera.java:136) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at org.dtaz.yoda.DtazPreview.prepareVideoRecorder(DtazPreview.java:343) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at org.dtaz.yoda.CameraActivity.swipeGesture(CameraActivity.java:600) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at org.dtaz.yoda.CameraSurfaceView.onTouchEvent(CameraSurfaceView.java:87) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.View.dispatchTouchEvent(View.java:7706) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2333) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1568) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.app.Activity.dispatchTouchEvent(Activity.java:2468) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2281) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.View.dispatchPointerEvent(View.java:7886) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3947) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3826) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3518) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3419) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3575) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3419) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5532) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5512) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5483) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5612) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.os.MessageQueue.nativePollOnce(Native Method) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.os.MessageQueue.next(MessageQueue.java:138) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.os.Looper.loop(Looper.java:123) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.app.ActivityThread.main(ActivityThread.java:5034) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at java.lang.reflect.Method.invokeNative(Native Method) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at java.lang.reflect.Method.invoke(Method.java:515) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:611) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at dalvik.system.NativeStart.main(Native Method) 02-24 13:44:49.156: D/AndroidRuntime(18078): Shutting down VM 02-24 13:44:49.156: W/dalvikvm(18078): threadid=1: thread exiting with uncaught exception (group=0x41841c08) 02-24 13:44:49.166: E/AndroidRuntime(18078): FATAL EXCEPTION: main 02-24 13:44:49.166: E/AndroidRuntime(18078): Process: org.dtaz.yoda, PID: 18078 02-24 13:44:49.166: E/AndroidRuntime(18078): java.lang.RuntimeException: startPreview failed 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.hardware.Camera.startPreview(Native Method) 02-24 13:44:49.166: E/AndroidRuntime(18078): at org.dtaz.yoda.DtazCamera.startPreview(DtazCamera.java:136) 02-24 13:44:49.166: E/AndroidRuntime(18078): at org.dtaz.yoda.DtazPreview.prepareVideoRecorder(DtazPreview.java:343) 02-24 13:44:49.166: E/AndroidRuntime(18078): at org.dtaz.yoda.CameraActivity.swipeGesture(CameraActivity.java:600) 02-24 13:44:49.166: E/AndroidRuntime(18078): at org.dtaz.yoda.CameraSurfaceView.onTouchEvent(CameraSurfaceView.java:87) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.View.dispatchTouchEvent(View.java:7706) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.166: E/AndroidRuntime(18078): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2333) 02-24 13:44:49.166: E/AndroidRuntime(18078): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1568) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.app.Activity.dispatchTouchEvent(Activity.java:2468) 02-24 13:44:49.166: E/AndroidRuntime(18078): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2281) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.View.dispatchPointerEvent(View.java:7886) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3947) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3826) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3518) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3419) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3575) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3419) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5532) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5512) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5483) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5612) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.os.MessageQueue.nativePollOnce(Native Method) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.os.MessageQueue.next(MessageQueue.java:138) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.os.Looper.loop(Looper.java:123) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.app.ActivityThread.main(ActivityThread.java:5034) 02-24 13:44:49.166: E/AndroidRuntime(18078): at java.lang.reflect.Method.invokeNative(Native Method) 02-24 13:44:49.166: E/AndroidRuntime(18078): at java.lang.reflect.Method.invoke(Method.java:515) 02-24 13:44:49.166: E/AndroidRuntime(18078): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795) 02-24 13:44:49.166: E/AndroidRuntime(18078): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:611) 02-24 13:44:49.166: E/AndroidRuntime(18078): at dalvik.system.NativeStart.main(Native Method)

有谁知道发生了什么事?

so I have a camera app that I also want to record videos. when I push a button to switch from camera to video i do this

public void prepareVideoRecorder() { mCamera.stopPreview(); mCamera.prepareRecorder(video_orientation, camera_surface); // mCamera.startPreview(); }

and my prepare method

public void prepareRecorder(int video_degrees, CameraSurfaceView sf) { CamcorderProfile camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH); recorder = new MediaRecorder(); mCamera.unlock(); recorder.setCamera(mCamera); recorder.setPreviewDisplay(sf.getHolder().getSurface()); Log.v("this", "orientation hint = " + video_degrees); recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); recorder.setOrientationHint(video_degrees); File imageFileFolder = new File(Environment.getExternalStorageDirectory(), "DCIM"); String filename = imageFileFolder.toString() + "/" + new SimpleDateFormat("ddMMyyyyHHmmss").format(new Date()) + ".mp4"; recorder.setOutputFile(filename); recorder.setProfile(camcorderProfile); try { recorder.prepare(); } catch (Exception e) { e.printStackTrace(); } }

when i push the "switch" button the preview stops. But if i push the start recording button, everything works good, i can record the video and also the preview starts again. If i try to uncomment the mCamera.startPreview() from prepareVideoRecorder i get this error

02-24 13:44:49.146: E/InputEventReceiver(18078): Exception dispatching input event. 02-24 13:44:49.146: E/MessageQueue-JNI(18078): Exception in MessageQueue callback: handleReceiveCallback 02-24 13:44:49.146: E/MessageQueue-JNI(18078): java.lang.RuntimeException: startPreview failed 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.hardware.Camera.startPreview(Native Method) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at org.dtaz.yoda.DtazCamera.startPreview(DtazCamera.java:136) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at org.dtaz.yoda.DtazPreview.prepareVideoRecorder(DtazPreview.java:343) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at org.dtaz.yoda.CameraActivity.swipeGesture(CameraActivity.java:600) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at org.dtaz.yoda.CameraSurfaceView.onTouchEvent(CameraSurfaceView.java:87) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.View.dispatchTouchEvent(View.java:7706) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2333) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1568) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.app.Activity.dispatchTouchEvent(Activity.java:2468) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2281) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.View.dispatchPointerEvent(View.java:7886) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3947) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3826) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3518) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3419) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3575) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3419) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5532) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5512) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5483) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5612) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.os.MessageQueue.nativePollOnce(Native Method) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.os.MessageQueue.next(MessageQueue.java:138) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.os.Looper.loop(Looper.java:123) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at android.app.ActivityThread.main(ActivityThread.java:5034) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at java.lang.reflect.Method.invokeNative(Native Method) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at java.lang.reflect.Method.invoke(Method.java:515) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:611) 02-24 13:44:49.146: E/MessageQueue-JNI(18078): at dalvik.system.NativeStart.main(Native Method) 02-24 13:44:49.156: D/AndroidRuntime(18078): Shutting down VM 02-24 13:44:49.156: W/dalvikvm(18078): threadid=1: thread exiting with uncaught exception (group=0x41841c08) 02-24 13:44:49.166: E/AndroidRuntime(18078): FATAL EXCEPTION: main 02-24 13:44:49.166: E/AndroidRuntime(18078): Process: org.dtaz.yoda, PID: 18078 02-24 13:44:49.166: E/AndroidRuntime(18078): java.lang.RuntimeException: startPreview failed 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.hardware.Camera.startPreview(Native Method) 02-24 13:44:49.166: E/AndroidRuntime(18078): at org.dtaz.yoda.DtazCamera.startPreview(DtazCamera.java:136) 02-24 13:44:49.166: E/AndroidRuntime(18078): at org.dtaz.yoda.DtazPreview.prepareVideoRecorder(DtazPreview.java:343) 02-24 13:44:49.166: E/AndroidRuntime(18078): at org.dtaz.yoda.CameraActivity.swipeGesture(CameraActivity.java:600) 02-24 13:44:49.166: E/AndroidRuntime(18078): at org.dtaz.yoda.CameraSurfaceView.onTouchEvent(CameraSurfaceView.java:87) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.View.dispatchTouchEvent(View.java:7706) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 02-24 13:44:49.166: E/AndroidRuntime(18078): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2333) 02-24 13:44:49.166: E/AndroidRuntime(18078): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1568) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.app.Activity.dispatchTouchEvent(Activity.java:2468) 02-24 13:44:49.166: E/AndroidRuntime(18078): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2281) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.View.dispatchPointerEvent(View.java:7886) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3947) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3826) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3518) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3419) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3575) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3419) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5532) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5512) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5483) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5612) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.os.MessageQueue.nativePollOnce(Native Method) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.os.MessageQueue.next(MessageQueue.java:138) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.os.Looper.loop(Looper.java:123) 02-24 13:44:49.166: E/AndroidRuntime(18078): at android.app.ActivityThread.main(ActivityThread.java:5034) 02-24 13:44:49.166: E/AndroidRuntime(18078): at java.lang.reflect.Method.invokeNative(Native Method) 02-24 13:44:49.166: E/AndroidRuntime(18078): at java.lang.reflect.Method.invoke(Method.java:515) 02-24 13:44:49.166: E/AndroidRuntime(18078): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795) 02-24 13:44:49.166: E/AndroidRuntime(18078): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:611) 02-24 13:44:49.166: E/AndroidRuntime(18078): at dalvik.system.NativeStart.main(Native Method)

anyone know what is going on?

最满意答案

好的,所以我提出了一个解决方案,我不知道它是否是正确的,但它的工作原理。

情况是,为了记录视频,MediaRecorder需要获取摄像机实例,同时如果要显示预览,摄像机实例需要在surfaceview中。 这就是为什么如果你开始录制你可以看到图像被捕获。

所以解决这个问题的唯一方法就是将prep放在onclick方法中,就像这样在mediarecorder.start()之前。

take_picture.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (isVideo) { if (!isRecording) { camera_preview.prepareVideoRecorder(); camera_preview.startRecording(); take_picture.setText("stop"); isRecording = true; } else { camera_preview.stopRecording(); take_picture.setText("start"); isRecording = false; } } } });

如果你把这样的代码放在一边,一切都很好。 如果有人有更好的解决方案请发布,以便我们可以使用它!

ok so I came up with a solution, i don't know if it is the right one but it works.

The case is that in order to record video the camera instance needs to be acquired by the MediaRecorder and simultaneously if you want to show preview , the camera instance needs to be in the surfaceview. That's why if you start the recording you can see the image been captured.

so the only way to overcome this is to put the prepare inside the onclick method just before the mediarecorder.start() like this.

take_picture.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (isVideo) { if (!isRecording) { camera_preview.prepareVideoRecorder(); camera_preview.startRecording(); take_picture.setText("stop"); isRecording = true; } else { camera_preview.stopRecording(); take_picture.setText("start"); isRecording = false; } } } });

If you put the code like this, everything works good. If anyone has a better solution please post it so we can use it!!!

更多推荐

本文发布于:2023-08-04 10:04:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1415226.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:videoRecorder   Android   prepare   preview   stops

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!