2016-07-15 708 views
0

我在使用Android Xamarin中的MediaRecorder时遇到了一个问题。 当我尝试启动或停止此异常引发的记载:MediaRecorder在开始时抛出java.lang.illegalstateexception()

07-15 21:06:40.984 W/System.err(13609): java.lang.IllegalStateException 
07-15 21:06:41.014 W/System.err(13609):  at android.media.MediaRecorder.start(Native Method) 
07-15 21:06:41.014 W/System.err(13609):  at md51ef13e2ce92dda6cb40f015673d2b702.VideoAnswerActivity.n_BtnTakeVideo(Native Method) 
07-15 21:06:41.014 W/System.err(13609):  at md51ef13e2ce92dda6cb40f015673d2b702.VideoAnswerActivity.BtnTakeVideo(VideoAnswerActivity.java:39) 
07-15 21:06:41.014 W/System.err(13609):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-15 21:06:41.014 W/System.err(13609):  at java.lang.reflect.Method.invoke(Method.java:515) 
07-15 21:06:41.024 W/System.err(13609):  at android.view.View$1.onClick(View.java:3955) 
07-15 21:06:41.024 W/System.err(13609):  at android.view.View.performClick(View.java:4575) 
07-15 21:06:41.024 W/System.err(13609):  at android.view.View$PerformClick.run(View.java:18578) 
07-15 21:06:41.024 W/System.err(13609):  at android.os.Handler.handleCallback(Handler.java:733) 
07-15 21:06:41.024 W/System.err(13609):  at android.os.Handler.dispatchMessage(Handler.java:95) 
07-15 21:06:41.024 W/System.err(13609):  at android.os.Looper.loop(Looper.java:136) 
07-15 21:06:41.024 W/System.err(13609):  at android.app.ActivityThread.main(ActivityThread.java:5127) 
07-15 21:06:41.024 W/System.err(13609):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-15 21:06:41.024 W/System.err(13609):  at java.lang.reflect.Method.invoke(Method.java:515) 
07-15 21:06:41.024 W/System.err(13609):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825) 
07-15 21:06:41.024 W/System.err(13609):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641) 
07-15 21:06:41.024 W/System.err(13609):  at dalvik.system.NativeStart.main(Native Method) 

我只要按照这个Xamarin教程录制视频: https://developer.xamarin.com/recipes/android/media/video/record_video/

这里开始()的代码:

   recording = true; 
       recorder.SetVideoSource(VideoSource.Camera); 
       recorder.SetAudioSource(AudioSource.Mic); 
       recorder.SetOutputFormat(OutputFormat.Default); 
       recorder.SetVideoEncoder(VideoEncoder.Default); 
       recorder.SetAudioEncoder(AudioEncoder.Default); 
       recorder.SetOutputFile(path); 
       recorder.SetPreviewDisplay(video.Holder.Surface); 
       recorder.SetMaxDuration(30000); 
       recorder.SetOrientationHint(90); 
       recorder.Prepare(); 
       try 
       { 
        recorder.Start(); 
       } 
       catch (IllegalStateException e) 
       { 
        // TODO Auto-generated catch block 
        e.PrintStackTrace(); 
       } 
+0

您有权写信给你的 “路径”?清单烫发录制视频和音频?要写入存储的权限? – SushiHangover

+0

是的,我有。但看看在下一篇文章:) – OrcusZ

回答

1

从您的代码中删除.Reset,因为这是重新启动/重置MediaRecorder,您将不得不重新初始化它。

将MediaRecorder重新启动到其空闲状态。在调用这个方法之后,你必须重新配置它,就好像它刚刚构建完成一样。

编号:https://developer.xamarin.com/api/member/Android.Media.MediaRecorder.Reset()/

enter image description here

+0

对不起,我没有注意到,我让它在代码中,我只是在StackOverflow中的一些帖子后添加它。有或没有我有同样的问题。 – OrcusZ

+0

我删除重置,我删除了一些应用程序(饱和存储),现在它再次工作....问题你知道如何在纵向而不是横向预览它时,我正在录制? – OrcusZ

+0

@OrcusZ'肖像'?你的意思是整个应用程序或只是'VideoView'小部件? – SushiHangover

相关问题