Android自动通话录音实现_手机双向通话录音开发源代码
2015-12-02 12:19:20  By: shinyuu

最近开发的项目中需要的的一个功能、百度上找了很久才搞出来、最近逆境千辛万苦才整好了一个双向录音、现在分享给大家、另外由于录音是基于一个PhoneService做的、所以需要打开本Demo之后、先打个电话才能录音的、最后才能听到效果、下面是运行的效果图

android 双向通话录音


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的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


猜你喜欢的

快速评论


技术评论

DD记账
top
+