📜  Android MediaRecorder示例(1)

📅  最后修改于: 2023-12-03 14:59:15.221000             🧑  作者: Mango

Android MediaRecorder示例

Android MediaRecorder是用于录制音频或视频的API。它可以很容易地从麦克风或摄像头录制音频或视频,并将其保存为可视化的媒体文件。在这个示例中,我们将学习如何使用MediaRecorder API来录制音频并将其保存为.mp3文件。

功能
  • 启动、停止录音
  • 保存录音文件至SD卡
  • 可配置音质参数(比特率、采样率、音频编码等)
实现步骤
配置应用程序权限

在manifest文件中添加以下权限:

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
布局资源文件

在layout资源文件中添加以下代码:

    <Button
        android:id="@+id/start_record"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="开始录音" />

    <Button
        android:id="@+id/stop_record"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="停止录音" />
定义全局变量

在activity中定义全局变量:

private MediaRecorder recorder;
private String pathSave = Environment.getExternalStorageDirectory().getPath() + "/test.mp3";
实现录制功能

在activity中添加以下代码片段来实现录制功能:

findViewById(R.id.start_record).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        startRecording();
    }
});

findViewById(R.id.stop_record).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        stopRecording();
    }
});

private void startRecording() {
    if (recorder == null) {
        recorder = new MediaRecorder();
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
        recorder.setAudioEncodingBitRate(16 * 44100);
        recorder.setAudioSamplingRate(44100);
        recorder.setOutputFile(pathSave);

        try {
            recorder.prepare();
            recorder.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

private void stopRecording() {
    if (recorder != null) {
        try {
            recorder.stop();
            recorder.release();
            recorder = null;
        } catch (RuntimeException ex) {
            recorder = null;
            ex.printStackTrace();
        }
    }
}
实现运行效果

在MainActivity.java中实现录制功能后,点击运行即可看到以下效果:

recording_example.gif

结论

MediaRecorder API是一个用于录制音频或视频的强大API。通过这个示例,我们看到了如何使用MediaRecorder API来录制音频文件并将其保存到SD卡。在实际开发中,我们可以根据自己的需求配置参数,以达到最佳的音质和性能。