2017-02-15 68 views
0

拋出異常的代碼的一部分:的Android MediaRecorder - IllegalStateException異常

和我得到這個異常:

E/MediaRecorder: start failed: -38 
W/System.err: java.lang.IllegalStateException 
W/System.err:  at android.media.MediaRecorder.start(Native Method) 
W/System.err:  at com.example.amit.recording.RecordService.startRecording(RecordService.java:280) 
W/System.err:  at com.example.amit.recording.RecordService.onStartCommand(RecordService.java:141) 
W/System.err:  at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3422) 
W/System.err:  at android.app.ActivityThread.access$2200(ActivityThread.java:181) 
W/System.err:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1572) 
W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:102) 
W/System.err:  at android.os.Looper.loop(Looper.java:145) 
W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:6117) 
W/System.err:  at java.lang.reflect.Method.invoke(Native Method) 
W/System.err:  at java.lang.reflect.Method.invoke(Method.java:372) 
W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 

的 「recorder.start()」 是導致此。當我停止記錄,得到這個:「停止呼叫處於無效狀態:0」 順便說一句 - 得到我需要在清單中的所有權限。謝謝!!

EDIT

我增加 「的Thread.sleep(2000);」在「準備()」&「start()」之前,現在它將3gp文件保存在正確的路徑中,但例外仍然存在 - 在stop()的start()&上。爲什麼會發生?!

+0

我想你可能有問題的文件路徑。使用完整路徑ex Env​​irement.getExternalStorage()+ File.seperator +「test.3gp」;還檢查存儲權限。 –

+0

路徑是好的,我有存儲權限:) – Jahrk

回答

0

如果您的目標定位高於22,那麼您必須實現運行時權限。 See here瞭解如何在android中實現運行時權限。

+0

它似乎並不是這樣的問題 – Jahrk

+0

請檢查文件的路徑,並更換默認輸出線。 'mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);' –

+0

不工作,謝謝你的嘗試。我編輯了這個問題,請仔細閱讀 – Jahrk

相關問題