BroadcastReceiver实现android来去电录音功能(外录)
16lz
2022-05-18
因为原生android没有提供来去电内录功能,所以只能通过麦克进行通话录音,
/***来去电录音,因为去电没有接听的状态,只要拨出就会开始录音**@authorjauken*@date2015-1-4*/publicclassPhoneBroadcastReceiverextendsBroadcastReceiver{privatestaticStringoutgoingNumber="";privatestaticStringincomeNumber="";privateStringstate="";privatestaticMediaRecordermediaRecorder;@OverridepublicvoidonReceive(Contextcontext,Intentintent){/*去电时:*未接:phone_state=OFFHOOK;*挂断:phone_state=IDLE*来电时:**未接:phone_state=RINGING*已接:phone_state=OFFHOOK;*挂断:phone_state=IDLE**///如果是拨打电话if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){outgoingNumber=intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);}if(intent.getAction().equals("android.intent.action.PHONE_STATE")){state=intent.getStringExtra(TelephonyManager.EXTRA_STATE);if("RINGING".equals(state)){incomeNumber=intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);}if("OFFHOOK".equals(state)){//来电接通或去电(无法判断是否接通),开始录音ThreadrecordingThread=newThread(){@Overridepublicvoidrun(){try{FiledirFile=Environment.getExternalStorageDirectory();Filefile;//根据用来电号码是否为空判断来去电if(incomeNumber!=null&&incomeNumber.length()>0){file=newFile(dirFile,"IN_"+incomeNumber+"_"+System.currentTimeMillis()+".3gp");}else{file=newFile(dirFile,"OUT_"+outgoingNumber+"_"+System.currentTimeMillis()+".3gp");}mediaRecorder=newMediaRecorder();mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);//获得声音数据源mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//按3gp格式输出mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);mediaRecorder.setOutputFile(file.getAbsolutePath());//输出文件mediaRecorder.prepare();mediaRecorder.start();}catch(IllegalStateExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}//准备}};recordingThread.start();}if("IDLE".equals(state)){//挂断,停止录音if(mediaRecorder!=null){mediaRecorder.stop();mediaRecorder.reset();mediaRecorder.release();mediaRecorder=null;outgoingNumber="";incomeNumber="";}}}}}
<receiverandroid:name="com.test.recordphone.PhoneBroadcastReceiver"><intent-filter><actionandroid:name="android.intent.action.PHONE_STATE"/><actionandroid:name="android.intent.action.NEW_OUTGOING_CALL"/></intent-filter></receiver>
转请加:http://my.oschina.net/u/2301542/admin/edit-blog?draft=169609
更多相关文章
- Android使用AudioRecord遇到的问题与解决方法
- 小米,红米手机android 6.0以下 权限管理
- Android中通过Intent 调用图片、视频、音频、录音、拍照
- Android(安卓)录音
- ANDROID音频系统散记之二:resample-1
- ANDROID音频系统散记之二:resample-1
- Android(安卓)来去电自动录音(一)
- Android录音并根据音量大小实现简单动画效果
- android 音频视频合并