2012-10-01 56 views
4

简介:如何检查语音记录是否已在其他某个应用的后台运行。android:媒体记录器:启动失败:-38

详细信息:如果语音录制已经在本机应用程序:Voice recorder的后台运行。 现在我已将语音录制功能作为我应用程序中的一项功能。

问题:当我在我的同时应用程序尝试记录,提示错误:在第100行

: 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:

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 

但问题是,因为已经录音在后台运行。 因此,是否有任何方法来停止语音录制,如果它运行在其他应用程序。

任何输入都会有很大的帮助。

+0

如果它已经在运行,那么它应该有一个原因,不是吗?如果他想使用_your_录制功能,可以提示用户停止。不是一个令人满意的答案,因此只是一个评论。也许有人有一个更好的主意。 – Fildor

+0

您应该至少捕获'prepare'和'start'引发的异常。 – Michael

+0

我已经添加了try catch块,但仍然处理程序返回错误消息,并且在那里显示吐司作为失败记录。但是我想让后台记录器停止。 – parul

回答

0

检查您的文件路径,该目录必须存在。

1

我有同样的错误-38,我发现有另一个背景服务,使用麦克风通过(AudioRecord),当禁用后台服务,它的工作。