如何在 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 应用中录制声音的主要内容,如果未能解决你的问题,请参考以下文章

在android中将录制的声音调制成不同的效果?

Android - 如何录制简单的声音片段?

如何在 iOS 中录制声音?

如何在 UILocalNotification 中播放录制的声音

如何在 iPhone 应用程序中录制和播放声音?

Android录制我们自己的应用程序的声音