android mp3 incall recorder,使用<code>AudioSource.MIC</code>或<code>AudioSource.VOICE_COMMUNICATION</co...

if(intent.getAction().equals("android.intent.action.PHONE_STATE")){

if((bundle = intent.getExtras()) != null){

state = bundle.getString(TelephonyManager.EXTRA_STATE);

if(state.equals(TelephonyManager.EXTRA_STATE_RINGING)){

inCall = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);

wasRinging = true;

Toast.makeText(context, inCall + " is calling", Toast.LENGTH_SHORT).show();

}

else if(state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)){

if(wasRinging){

Toast.makeText(context, "Call Answered", Toast.LENGTH_SHORT).show();

Date date = new Date();

SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss");

String filename = "rec_" + format.format(date) + ".mp3";

String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).getPath();

String fileUri = path + "/" + filename;

Log.v("testing uri", fileUri);

File file = new File(fileUri);

recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);

recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);

recorder.setOutputFile(file.getAbsolutePath());

try {

recorder.prepare();

recorder.start();

recording = true;

} catch (IOException e) {

e.printStackTrace();

}

}

}

else if(state.equals(TelephonyManager.EXTRA_STATE_IDLE)){

wasRinging = false;

Toast.makeText(context, "Cancelled", Toast.LENGTH_SHORT).show();

if(recording && recorder != null){

recorder.stop();

recorder = null;

recording = false;

}

}

}

}

,这是错误..

java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.PHONE_STATE flg=0x10 (has extras) } in [email protected]

at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:778)

at android.os.Handler.handleCallback(Handler.java:733)

at android.os.Handler.dispatchMessage(Handler.java:95)

at android.os.Looper.loop(Looper.java:136)

at android.app.ActivityThread.main(ActivityThread.java:5102)

at java.lang.reflect.Method.invokeNative(Native Method)

at java.lang.reflect.Method.invoke(Method.java:515)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)

at dalvik.system.NativeStart.main(Native Method)

Caused by: java.lang.RuntimeException: start failed.

at android.media.MediaRecorder.start(Native Method)

at com.asadullah.callrecorder.MyBroadCastReceiver.onReceive(MyBroadCastReceiver.java:62)

at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java

:768)

体现的权限是:

2017-07-14

Asad

+0

您是否找到解决方案? –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值