如何在 Android 应用中录制声音
Posted
技术标签:
【中文标题】如何在 Android 应用中录制声音【英文标题】:How to record sound in Android app 【发布时间】:2014-07-09 08:41:35 【问题描述】:我正在开发一个android应用程序,这个应用程序的一部分是一个简单的木琴,我要做的是实现一个功能,记录用户按下按钮时的木琴声音。
当用户按下按钮时,例如 do、re mi 等,声音会使用保存在 raw 文件夹中的 mp3 播放...
1) 可以这样做吗? 2)有人可以解释我如何“捕获”声音并将其记录在SD卡中吗? 3) 是否可以实现“录制”“播放”“停止”“再现”功能?
【问题讨论】:
【参考方案1】:您可以使用此代码录制音频:
private void startRecording()
mRecorder = new MediaRecorder();
mRecorder.setAudiosource(MediaRecorder.AudioSource.CAMCORDER);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(mFileName);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try
mRecorder.prepare();
catch (IOException e)
Log.e(LOG_TAG, "prepare() failed");
mRecorder.start();
我正在寻找如何使用耳机录制音频,而不是来自 演讲者如果有人对此有想法,请在评论中分享链接。
【讨论】:
【参考方案2】:如果没有 root,Android 无法在内部(或说“数字”)录制扬声器或耳机发出的声音。原因可能是版权问题,因此无法生成通过 Android 设备播放的内容的数字副本。
当然,如果信号足够响亮,您可以使用内置麦克风进行录制,但质量损失很大。此外,您的木琴上还有背景噪音和用户指尖的敲击噪音。
最好的解决方案是您以编程方式混合与按键对应的样本,并将结果发送到扬声器,同时发送到声音文件中。复杂,但最佳。
【讨论】:
【参考方案3】:是的,您可以捕获音频并将其存储在 sd 中,然后再播放。查看这些链接。
http://developer.android.com/reference/android/media/MediaRecorder.html
http://www.tutorialspoint.com/android/android_audio_capture.htm
【讨论】:
这个解决方案的唯一问题是录音是使用麦克风完成的!我需要的是在没有麦克风的情况下录制声音,因为我想播放唯一的木琴声音 我不明白你。如果你想要默认的木琴声音,你可以从网上下载。 如果你想存储整个序列,你可以合并相应的mp3文件。 我已经创建了允许你播放木琴的Android应用程序,当用户按下与你播放声音的音符对应的按钮时,(我下载并插入到我的项目中,带有mp3的声音) .我现在要做的是让用户可以录制他播放的音乐。 我不确定你如何录制正在播放的音乐。尝试是否可以合并多个 mp3 文件(木琴音调)并适当延迟以获得完整的音乐。【参考方案4】:MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(PATH_NAME);
recorder.prepare();
recorder.start(); // Recording is now started
...
recorder.stop();
recorder.reset(); // You can reuse the object by going back to setAudioSource() step
recorder.release(); // Now the object cannot be reused
【讨论】:
以上是关于如何在 Android 应用中录制声音的主要内容,如果未能解决你的问题,请参考以下文章