以下是代码, 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"/>
请大神不吝赐教,感谢感谢。
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"/>
请大神不吝赐教,感谢感谢。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货