【发布时间】:2012-10-01 14:21:06
【问题描述】:
简介:如何检查语音录制是否已在其他应用程序的后台运行。
详细信息:如果语音记录已经在本机应用程序的后台运行:语音记录器。 现在,我已将语音录制作为我的应用程序中的一项功能。
问题:当我尝试同时在我的应用程序中录制时,它给出了错误:
: E/MediaRecorder: start failed: -38
: E/MyApp: [1162][com.sec.MyApp.multimedia.RecordMyVoice]java.lang.IllegalStateException
: E/MyApp: at android.media.MediaRecorder.start(Native Method)
: E/MyApp: at com.sec.MyApp.multimedia.RecordMyVoice.doInBackground(RecordMyVoice.java:100)
RecordMyVoice.java 中第 100 行的代码:
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(mFileName);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.prepare();
mRecorder.start(); //code at 100th line
但问题是因为录音已经在后台运行。 因此,如果它在其他应用程序中运行,有什么方法可以停止录音。
任何意见都会有很大帮助。
【问题讨论】:
-
如果它已经在运行,那么它应该是有原因的,不是吗?如果他想使用你的录制功能,你可以提示用户停止它。不是一个真正令人满意的答案,因此只是一个评论。也许有人有更好的主意。
-
你至少应该捕获
prepare和start抛出的异常。 -
我添加了 try catch 块,但处理程序仍然返回错误消息,并且我将 toast 显示为无法记录。但我希望停止后台记录器。
-
@Parul 现在解决了吗?
-
能否显示mFileName的字符串。我认为您的 mFileName 有问题。
标签: android state voice recorder