MediaRecorder 录音执行stop的时候报错

吾非大神 2013-11-13 03:33:03

case TelephonyManager.CALL_STATE_OFFHOOK: // 接听状态

String dir = Environment.getExternalStorageDirectory()
.getPath();

// 初始化录音器,多媒体api,参见MediaRecorder
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); //设置音源,麦克
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);// 文件格式 3gp
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); //声音编码
File file = new File(dir, "temp.3gp");
System.out.println(file.getAbsolutePath());
recorder.setOutputFile(file.getAbsolutePath());
recorder.prepare();
recorder.start(); // Recording is now started
System.out.println("录音开始");
System.out.println("电话处于接听状态");
break;


挂断

case TelephonyManager.CALL_STATE_IDLE: // 闲置状态

if (null != recorder) {
System.out.println("尝试停止录音");
recorder.stop();
System.out.println("录音结束");
recorder.reset();
recorder.release();
recorder = null;
}
System.out.println("电话处于闲置状态");
break;


报错:

11-13 15:12:21.435: W/System.err(7293): java.lang.IllegalStateException
11-13 15:12:21.435: W/System.err(7293): at android.media.MediaRecorder.native_stop(Native Method)
11-13 15:12:21.435: W/System.err(7293): at android.media.MediaRecorder.stop(MediaRecorder.java:586)
11-13 15:12:21.435: W/System.err(7293): at com.ecarechina.phonelistener.PhoneListenerService$MyPhoneStateListener.onCallStateChanged(PhoneListenerService.java:56)
11-13 15:12:21.435: W/System.err(7293): at android.telephony.PhoneStateListener$2.handleMessage(PhoneStateListener.java:319)
11-13 15:12:21.435: W/System.err(7293): at android.os.Handler.dispatchMessage(Handler.java:99)
11-13 15:12:21.435: W/System.err(7293): at android.os.Looper.loop(Looper.java:130)
11-13 15:12:21.435: W/System.err(7293): at android.app.ActivityThread.main(ActivityThread.java:3703)
11-13 15:12:21.435: W/System.err(7293): at java.lang.reflect.Method.invokeNative(Native Method)
11-13 15:12:21.435: W/System.err(7293): at java.lang.reflect.Method.invoke(Method.java:507)
11-13 15:12:21.445: W/System.err(7293): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
11-13 15:12:21.445: W/System.err(7293): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
11-13 15:12:21.445: W/System.err(7293): at dalvik.system.NativeStart.main(Native Method)

...全文
2251 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhy24680 2016-06-25
  • 打赏
  • 举报
回复
通话录音的音源问题 recorder.setAudioSource(MediaRecorder.AudioSource.MIC); //设置音源 是这个的问题,有的机型的音源是MediaRecorder.AudioSource.VOICE_CALL
small_role 2015-08-17
  • 打赏
  • 举报
回复
问题解决了没
tyling 2014-07-21
  • 打赏
  • 举报
回复
这个问题,我也遇到了,上面这段代码在有些手机上能录音,在有些手机上不行,比如小米1(系统自带的通话录音一切正常),只要执行meidiaRecord.stop(),就报楼主的错误(确信prepare()和start()方法执行没报异常,取不到start()的放回值,不知是不start()方法没有开始),找不到问题所在?(我检查了录音文件的保存路径、sd卡写权限等等没问题,问题依然) 哪位大神,说说原因???
n10z 2014-07-16
  • 打赏
  • 举报
回复
解决了吗?我也是这个问题
leokelly001 2014-05-28
  • 打赏
  • 举报
回复
先判断recorder 是否是stop状态再stop,报错就是recorder调用stop的时候出错的
skychow 2014-02-16
  • 打赏
  • 举报
回复
我也是2.37遇到这个问题,关键是不stop就无法保存录音内容。
passself 2013-11-14
  • 打赏
  • 举报
回复
先判断recorder 是否是stop状态再stop,报错就是recorder调用stop的时候出错的
顾小林 2013-11-14
  • 打赏
  • 举报
回复
来电话的时候 先判断一下recorder 是否在运行,
吾非大神 2013-11-14
  • 打赏
  • 举报
回复
没人...这么冷清?
吾非大神 2013-11-13
  • 打赏
  • 举报
回复
我的手机版本是 2.3.7 用了个 4.0+的可以正常运行了 不知道低版本的怎么处理...
wch18956441322 2013-11-13
  • 打赏
  • 举报
回复
确定停止的时候正在录音?

80,363

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧