在传入或传出呼叫期间,是否可以在android中记录呼叫

时间:2012-02-07 06:33:45

标签: android

在Android中,可以在拨入/拨出电话期间录制语音呼叫而无需打开移动扬声器。我在Android市场上看过一个应用程序。如果不打开扬声器,它就无法正确录制其他侧面声音,因为它使用麦克风进行录制。可以通过其他一些技术来完成吗?

final MediaRecorder callrecorder = new MediaRecorder();

callrecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
callrecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
callrecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
callrecorder.setOutputFile(recordPath);
callrecorder.prepare();
callrecorder.start();

5 个答案:

答案 0 :(得分:0)

将音频源设置为MIC对我有用..

CallRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);

但并非所有设备都为呼叫录音提供硬件支持。请参阅[link]:http://forum.xda-developers.com/showthread.php?t=926498

结果是,在某些手机中,来电者和被叫者的声音都被记录下来了,而在其他手机中只记录了发言者的声音。

答案 1 :(得分:-1)

Android手机(据我所知)有一个应用程序处理器和一个调制解调器处理器。当电话处于语音呼叫中时,音频数据被直接从调制解调器处理器路由到音频硬件(除非有硬件改变)。应用处理器幸福地不知道音频数据,但只知道呼叫状态。

因此,简而言之,如果没有适当的硬件支持,您将无法录制音频数据。

答案 2 :(得分:-1)

您可以同时检查音频来源MediaRecorder.AudioSource.VOICE_DOWNLINK& MediaRecorder.AudioSource.VOICE_UPLINK时间。

这个解决方案对我有用。

Callrecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_DOWNLINK | MediaRecorder.AudioSource.VOICE_UPLINK);

答案 3 :(得分:-1)

您可以按以下方式使用MediaRecorder类:

 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
    <script src="typeahead.min.js"></script>
    <script>
    $(document).ready(function(){
    $('input.typeahead').typeahead({
        name: 'typeahead',
        remote:'search.php?key=%QUERY',
        limit : 10
    });
});
</script>

答案 4 :(得分:-2)

您需要使用 MediaRecorder 类,如下所示,

recorder = new MediaRecorder();
int audioSource = MediaRecorder.AudioSource.VOICE_CALL;
recorder.setAudioSource(audioSource);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
final String filePath = Environment.getExternalStorageDirectory() + "/record.3gpp";
final File file = new File(filePath);
file.getParentFile().mkdirs();
recorder.setOutputFile(filePath);
recorder.prepare();
recorder.start(); // Recording is now started