Android中用MediaRecorder进行录影的实例代码



import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import androidx.appcompat.app.AppCompatActivity;

import java.io.File;
import java.io.IOException;

public class VideoRecorderActivity extends AppCompatActivity {

    private MediaRecorder mediaRecorder;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        // 设置视频输出文件
        File videoFile = new File(Environment.getExternalStorageDirectory(), "myvideo.mp4");
        
        // 初始化MediaRecorder
        mediaRecorder = new MediaRecorder();
        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); // 设置音频源为麦克风
        mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); // 设置视频源为摄像头

        // 设置输出格式和编码器
        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);

        // 设置视频分辨率
        mediaRecorder.setVideoSize(640, 480);

        // 设置输出文件
        mediaRecorder.setOutputFile(videoFile.getAbsolutePath());

        // 准备录制
        try {
            mediaRecorder.prepare();
            mediaRecorder.start(); // 开始录制

            // 注意:实际使用中,应该在某个适当的时机停止录制
            // 例如,用户点击了停止按钮后,调用 mediaRecorder.stop();

        } catch (IOException e) {
            e.printStackTrace();
        }

        // 注意:此处仅为示例,实际开发中应在合适的时机释放资源
        // 例如,在Activity的onDestroy方法中调用 releaseMediaRecorder();
    }

    private void releaseMediaRecorder() {
        if (mediaRecorder != null) {
            mediaRecorder.stop(); // 停止录制
            mediaRecorder.release(); // 释放资源
            mediaRecorder = null;
        }
    }

    // 注意:由于篇幅限制,未展示完整的生命周期管理和错误处理逻辑
}

**注意**:此代码示例仅用于展示如何在Android中使用`MediaRecorder`进行视频录制的基本流程。在实际应用中,你需要处理更多的细节,如请求运行时权限(特别是存储权限和相机权限)、处理录制过程中的异常情况、在Activity的适当生命周期方法中管理`MediaRecorder`的生命周期等。此外,由于Android版本更新,某些API可能在不同版本上有所不同,因此请确保测试你的应用以兼容目标Android版本。