【问题标题】:Android Recording Incoming and Outgoing CallsAndroid 记录来电和去电
【发布时间】:2011-10-05 00:44:32
【问题描述】:

我想了解有没有一种方法可以记录 Android 手机 2.2 及更高版本的来电和去电?

客户想要记录他们对客户的代理呼叫,以便以后可以用来填写一些材料。他们不想让客户在通话时等待,而是希望稍后再做。

这可能吗?我需要使用哪些 API?

【问题讨论】:

  • 嗨,我在三星 S7 和 S8 上都遇到了同样的问题(没有得到对方的声音),否则我的 prog 在其他手机上运行得很好 有什么想法吗? stackoverflow.com/questions/45880954/…

标签: android android-phone-call call-recording


【解决方案1】:

首先,您必须小心记录通话,因为不同国家/地区都有法律要求。

这里是blog post,介绍如何使用MediaRecorder 录制音频。

我没有尝试记录电话,但MediaRecorder AudioSource 中有一个选项:

  • VOICE_CALL - 语音呼叫上行 + 下行音频源
  • VOICE_DOWNLINK - 语音呼叫下行链路 (Rx) 音频源
  • VOICE_UPLINK - 语音呼叫上行链路 (Tx) 音频源

只要音频源选项有效,您就可以开始了。

【讨论】:

  • VOICE_CALL - 语音呼叫上行链路 + 下行链路音频源 VOICE_DOWNLINK - 语音呼叫下行链路 (Rx) 音频源 VOICE_UPLINK - 语音呼叫上行链路 (Tx) 音频源在 android 4.0 中不起作用你知道吗
  • 嗨,我在三星 S7 和 S8 上遇到了同样的问题(没有得到对方的声音),否则我的 prog 在其他手机上运行得非常好任何想法??
  • 仅使用“博客文章”链接成功录制来电者声音。但是无法录制接收端的声音...为什么?
  • 为了更清楚。这些音频源需要 CAPTURE_AUDIO_OUTPUT 权限。仅授予系统应用程序。第二件事 AudioSource.VOICE_COMMUNICATION 不需要该权限,并且在 7.0 之前的设备上运行良好。但这不会在运行 7.0 及更高版本的设备上录制对方的声音。
  • 似乎只有系统应用可以使用VOICE_CALL、UPLINK和DOWNLINK。我在我的联想 Zuk Z2 plus 手机中尝试了很多通话记录器编码,有几个音频源,但没有一个可以用来录制接收者的声音。 Cube ACR 和自动通话记录器应用程序在我的手机中运行良好。任何人请告诉我他们如何实现它?
【解决方案2】:

在安卓手机通话时点击菜单按钮进行录音,它将以 amr 格式存储对话,并在 sd 卡的根目录中存储最多 20 分钟的对话。

【讨论】:

    【解决方案3】:

    我正在使用麦克风录制通话以获得更好的支持和兼容性。

    MediaRecorder recorder = new MediaRecorder();
    recorder.reset();
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
    recorder.setOutputFile(your_desired_folder_path);
     try {
        recorder.prepare();
    } catch (java.io.IOException e) {
        recorder = null;
        return;
    }
    recorder.start();
    

    【讨论】:

    • 抱歉,麦克风录制接收器的声音不是传入的用户声音。
    • 我已经实现了这段代码,但来电几秒钟后开始录音。请提供时间管理的解决方案或建议
    • 这只是打开麦克风并开始录音。它与通话无关。
    • 是的,这是最好的录音方式,因为某些手机不允许录音。
    【解决方案4】:

    我正在使用麦克风录制电话音频,并使用电话管理器查找通话状态。

    private MediaRecorder recorder;
    
      recorder = new MediaRecorder();
            try {
                recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION);
                recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);
                recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
                recorder.setAudioSamplingRate(44100);
                recorder.setOutputFile(your_desired_files_absoulte_path);
    } catch (Exception e) {
    e.printstacktrace ;
    }
    

    之后,您可以轻松地在任何您想要的地方开始录制

    recorder.prepare();
    recorder.start();
    

    完成录制后,您也可以轻松停止录制

    recorder.stop();
    recorder.reset();
    recorder.release();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-13
      • 1970-01-01
      相关资源
      最近更新 更多