Android自动通话录音实现_手机双向通话录音开发源代码
2015-12-02 12:19:20 By: shinyuu
最近开发的项目中需要的的一个功能、百度上找了很久才搞出来、最近逆境千辛万苦才整好了一个双向录音、现在分享给大家、另外由于录音是基于一个PhoneService做的、所以需要打开本Demo之后、先打个电话才能录音的、最后才能听到效果、下面是运行的效果图
MainActivity中onCreate启动Service
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViews(); Intent service = new Intent(this, PhoneService.class); startService(service); // 启动服务 }
PhoneStateListener代码
private final class PhoneListener extends PhoneStateListener { private String incomeNumber; // 来电号码 private MediaRecorder mediaRecorder; private File file; @Override public void onCallStateChanged(int state, String incomingNumber) { try { System.out.println(">>>>>>CallState>>>>>>>>" state); switch (state) { case TelephonyManager.CALL_STATE_RINGING: // 来电 System.out.println(">>>>>>来电>>>>>>>>" state); this.incomeNumber = incomingNumber; break; case TelephonyManager.CALL_STATE_OFFHOOK: // 接通电话 file = new File(Environment.getExternalStorageDirectory(), this.incomeNumber System.currentTimeMillis() ".3gp"); System.out.println(">>>>>>接通>>>>>>>>" state); mediaRecorder = new MediaRecorder(); // mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); //获得声音数据源(下麦克风) mediaRecorder .setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);//这个设置就是获取双向声音 mediaRecorder .setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); // 按3gp格式输出 mediaRecorder .setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); mediaRecorder.setOutputFile(file.getAbsolutePath()); // 输出文件 mediaRecorder.prepare(); // 准备 mediaRecorder.start(); break; case TelephonyManager.CALL_STATE_IDLE: // 挂掉电话 System.out.println(">>>>>>挂电话>>>>>>>>" state); if (mediaRecorder != null) { System.out.println(">>>>" Environment.getExternalStorageDirectory()); mediaRecorder.stop(); mediaRecorder.release(); mediaRecorder = null; AppliacationIMmpl.file = file; } break; } } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
广播监听启动
public class PhoneBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { System.out.println(">>PhoneBroadcastReceiver>>" Environment.getExternalStorageDirectory()); Intent service = new Intent(context, PhoneService.class); context.startService(service); //启动服务 } }
源代码下载链接: http://dwtedx.com/download.html?bdkey=s/1eQ8Ze3w 密码: f2x7
若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力
想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)
或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)
如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教
为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)
感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛
[email protected] 2020-06-30 09:48:01 1 评 | 回复
内录,还是需要打开免提才能录取到对方的声音