MediaRecorder录音程序报错求助java.lang.RuntimeException: setAudioSource failed.

yanshan5543 2016-11-28 09:19:54
以下是代码,

public void onCallStateChanged(int state, String incomingNumber) {
switch (state){
case CALL_STATE_IDLE://空闲状态
//结束录音
if (mediaRecorder != null) {
mediaRecorder.stop();
mediaRecorder.reset(); // You can reuse the object by going back to setAudioSource() step
mediaRecorder.release(); // Now the object cannot be reused
System.out.println("----成功关闭---");
}
break;
case CALL_STATE_RINGING://来电状态
System.out.println("----来来来来来来---");
//准备一个录音机
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setOutputFile("/mnt/sdcard/luyin.3gp");
try {
mediaRecorder.prepare();
System.out.println("----准备好了---");
} catch (IOException e) {
e.printStackTrace();
}
break;
case CALL_STATE_OFFHOOK://接听状态
// 开始录制
mediaRecorder.start(); // Recording is now started
break;

}

报错如下:
11-28 07:59:05.447 8343-8343/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.sunmingmei.listener, PID: 8343
java.lang.RuntimeException: setAudioSource failed.
at android.media.MediaRecorder.setAudioSource(Native Method)
at com.example.sunmingmei.listener.phonyListener.onCallStateChanged(phonyListener.java:36)
at android.telephony.PhoneStateListener$1.handleMessage(PhoneStateListener.java:298)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

不是权限问题,加入的权限如下:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
请大神不吝赐教,感谢感谢。
...全文
1592 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
aplixy 2018-01-30
  • 打赏
  • 举报
回复
引用 8 楼 qq_29341201 的回复:
会不会是6.0权限的问题呢
是的
aplixy 2018-01-30
  • 打赏
  • 举报
回复
是6.0权限问题,必须显示动态请求权限才可以
qq_29341201 2017-07-13
  • 打赏
  • 举报
回复
会不会是6.0权限的问题呢
disanxiaoyao 2017-07-07
  • 打赏
  • 举报
回复
正常来讲,应该是你manifest少配置了权限,试下在配置清单里面添加这个<uses-permission android:name="android.permission.RECORD_AUDIO"/>,或者是你打下log,看下资源是不是丢失了
chengzhouyang11 2017-07-07
  • 打赏
  • 举报
回复
别的参数有试过吗,从log来看是setAudiosource的问题,建议试试 MediaRecorder.AudioSource.VOICE_COMMUNICATION和MediaRecorder.AudioSource.VOICE_CALL
MissZzz丶 2017-03-24
  • 打赏
  • 举报
回复
从log看,设置声音源有问题,你直接设置成 默认不就好了, mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
zrf1335348191 2017-03-24
  • 打赏
  • 举报
回复
(phonyListener.java:36这一行做了什么
Ryanlfy 2017-03-23
  • 打赏
  • 举报
回复
请问楼主解决了吗
yanshan5543 2016-11-29
  • 打赏
  • 举报
回复
自顶,求大神。

80,351

社区成员

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

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