android – MediaRecorder – 记录调用应用程序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android – MediaRecorder – 记录调用应用程序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2552字,纯文字阅读大概需要4分钟。
内容图文
![android – MediaRecorder – 记录调用应用程序](/upload/InfoBanner/zyjiaocheng/703/08c5249c3aed4c869a54faac000f068a.jpg)
我正在尝试开发录制通话的应用程序.
当我录制输出声音听起来非常有线 – 电子声音而不是
别人的声音.
这是我的代码:
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";
@Override
protected 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);
}
@Override
public 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 – 记录调用应用程序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。