在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();
答案 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