如何在Android应用中录制音频并保存到本地?

作者: Android学习网 分类: Android多媒体技术 发布时间: 2023-08-05 22:35

在Android应用中录制音频并保存到本地是一个常见的需求。下面是一个示例代码和详细解释,帮助你实现这个功能。

示例代码如下所示:

public class MainActivity extends AppCompatActivity {

    private MediaRecorder mediaRecorder;
    private String audioFilePath;

    private Button startButton;
    private Button stopButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        startButton = findViewById(R.id.startButton);
        stopButton = findViewById(R.id.stopButton);

        audioFilePath = getExternalFilesDir(null).getAbsolutePath() + "/audio_record.3gp";

        startButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startRecording();
            }
        });

        stopButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                stopRecording();
            }
        });
    }

    private void startRecording() {
        mediaRecorder = new MediaRecorder();
        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        mediaRecorder.setOutputFile(audioFilePath);
        mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

        try {
            mediaRecorder.prepare();
            mediaRecorder.start();
            Toast.makeText(this, "开始录音", Toast.LENGTH_SHORT).show();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private void stopRecording() {
        if (mediaRecorder != null) {
            mediaRecorder.stop();
            mediaRecorder.release();
            mediaRecorder = null;
            Toast.makeText(this, "录音已停止", Toast.LENGTH_SHORT).show();
        }
    }
}

在这个示例中,我们假设你的布局文件为activity_main.xml,其中包含两个按钮,一个用于开始录音,一个用于停止录音。

解释:

  1. 首先,我们在onCreate方法中通过findViewById方法获取到布局文件中的按钮,并将其赋值给对应的成员变量。
  2. 然后,我们获取外部存储目录的路径,并在路径后面拼接上音频文件的名称和扩展名,用于保存录音文件。
  3. 在开始录音的点击事件监听器中,我们创建一个MediaRecorder对象,并设置音频源、输出格式、输出文件路径和音频编码器等参数。
  4. 调用prepare方法准备MediaRecorder对象,并调用start方法开始录音。
  5. 在停止录音的点击事件监听器中,我们停止录音、释放MediaRecorder对象,并显示相应的提示信息。

通过以上代码,你可以在Android应用中实现录制音频并保存到本地的功能。记住,这只是一个简单的示例,你可以根据实际需求进行适当的调整和修改。希望这个示例代码和文章能够帮助你实现音频录制功能。