2012-02-07 38 views
5

Trong Android, bạn có thể ghi âm cuộc gọi thoại trong khi gọi đến/đi mà không cần mở loa di động. Tôi đã nhìn thấy một ứng dụng trong thị trường Android. Nó không chính xác ghi lại giọng nói bên khác mà không cần mở loa bởi vì nó sử dụng mic cho mục đích ghi âm. Có thể nó được thực hiện bởi một số kỹ thuật khác?Có thể trong android để ghi âm cuộc gọi trong khi gọi đến hoặc gọi đi

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(); 
+2

mặc dù nó có thể ghi lại, nhưng ở một số nước là bất hợp pháp, lâu lắm rồi chúng tôi đã thực hiện một Blackberry App nhưng điều đó đã bị cấm do vi phạm một số luật riêng tư. – Yuvi

+0

Có thể, hãy kiểm tra [this] (http://stackoverflow.com/questions/6839297/record-call-in-android-2-2) liên kết. Bạn cũng có thể tìm mã mẫu để ghi. – Lucifer

+0

là nó có thể mà không cần mở loa của điện thoại di động? – shyam

Trả lời

2

Bạn cần sử dụng MediaRecorder lớp như sau,

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 
+0

là nó có thể mà không cần mở loa của điện thoại di động? – shyam

+0

bất kỳ giới hạn thiết bị nào? – shyam

0

điện thoại Android (để kiến ​​thức của tôi) có một bộ xử lý ứng dụng và một bộ xử lý modem. Khi điện thoại đang trong cuộc gọi thoại, dữ liệu âm thanh được định tuyến (trừ khi có sự thay đổi HW) từ bộ xử lý modem sang phần cứng âm thanh trực tiếp. Bộ xử lý ứng dụng là không biết rõ về dữ liệu âm thanh, nhưng chỉ biết trạng thái cuộc gọi.

Vì vậy, trong ngắn hạn, bạn sẽ không thể ghi lại dữ liệu âm thanh mà không cần hỗ trợ HW thích hợp.

+0

loại hỗ trợ phần cứng nào yêu cầu Android không có trong tất cả các phiên bản .. có hạn chế cho các phiên bản Android không? – shyam

+0

Nó không liên quan gì đến phiên bản Android. Hỗ trợ HW ngụ ý các đường PCM sẽ được rút ra từ bộ xử lý modem đến bộ xử lý ứng dụng. – santosh

0

Thiết lập nguồn âm thanh để MIC làm việc cho tôi ..

CallRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 

Nhưng không phải tất cả các thiết bị cung cấp hỗ trợ phần cứng để ghi âm cuộc gọi. Tham khảo [link] này: http://forum.xda-developers.com/showthread.php?t=926498.

Kết quả là ở một số điện thoại, cả giọng nói của người gọi và giọng nói đều được ghi lại trong khi ở những người khác chỉ có giọng nói của người nói được ghi lại.

0

Bạn có thể kiểm tra cả hai nguồn âm thanh MediaRecorder.AudioSource.VOICE_DOWNLINK & MediaRecorder.AudioSource.VOICE_UPLINK vào thời điểm.

Giải pháp này phù hợp với tôi.

Callrecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_DOWNLINK | MediaRecorder.AudioSource.VOICE_UPLINK); 
Các vấn đề liên quan