我正在尝试开发录制通话的应用程序.
当我录制输出声音听起来非常有线 – 电子声音而不是
别人的声音.
这是我的代码:
public class MainActivity extends Activity implements OnClickListener {private Boolean Recording;private button btn_REC;private MediaRecorder mrec;private file audiofile = null;private static final String TAG = "SoundRecordingDemo";@OverrIDeprotected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.main); Recording = false; mrec = new MediaRecorder(); btn_REC = (button) findVIEwByID(R.ID.btn_record); btn_REC.setonClickListener(this);}@OverrIDepublic voID onClick(VIEw v){ if (!Recording) { try { startRecording(); Recording = true; } catch (IOException e1) { e1.printstacktrace(); } btn_REC.setText("RECORDING"); } else { stopRecording(); btn_REC.setText("RECORD"); }}protected voID startRecording() throws IOException { mrec.setAudioSource(MediaRecorder.AudioSource.VOICE_DOWNlink); mrec.setoutputFormat(MediaRecorder.OutputFormat.THREE_GPP); mrec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); if (audiofile == null) { file sampleDir = Environment.getExternalStorageDirectory(); try { audiofile = file.createTempfile("ibm", ".3gp", sampleDir); } catch (IOException e) { Log.e(TAG, "sdcard access error"); return; } } mrec.setoutputfile(audiofile.getabsolutePath()); mrec.prepare(); mrec.start();}protected voID stopRecording() { mrec.stop(); mrec.release(); processaudiofile();}protected voID processaudiofile() { ContentValues values = new ContentValues(3); long current = System.currentTimeMillis(); values.put(MediaStore.Audio.Media.Title, "audio" + audiofile.getname()); values.put(MediaStore.Audio.Media.DATE_ADDED, (int) (current / 1000)); values.put(MediaStore.Audio.Media.MIME_TYPE, "audio/3gpp"); values.put(MediaStore.Audio.Media.DATA, audiofile.getabsolutePath()); ContentResolver contentResolver = getContentResolver(); Uri base = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; Uri newUri = contentResolver.insert(base, values); sendbroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_file, newUri));}
}
当我试图将AudioSource更改为上行链路或语音呼叫时,它仍然是相同的.
当我把它定义为MIC时,所有工作都很好,但当我打电话时,这个奇怪的声音开始……
有什么想法吗?
谢谢!
解决方法:
使用mRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
但是,由于Call Recording不合法,所以许多设备不支持(MediaRecorder.AudioSource.VOICE_CALL / MediaRecorder.AudioSource.VOICE_DOWNlink),可以在某些设备上运行.
我在LG测试过它并且工作正常,但没有使用Nexus设备.
所以相反,它们使用所有设备都允许的MediaRecorder.AudioSource.MIC.
总结以上是内存溢出为你收集整理的android – MediaRecorder – 记录调用应用程序全部内容,希望文章能够帮你解决android – MediaRecorder – 记录调用应用程序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)