在Android中,MediaRecorder类用于录制音频和视频。为了处理回调,您需要设置一个监听器来接收和处理MediaRecorder的事件。以下是一个简单的示例,展示了如何使用MediaRecorder的回调来处理录制完成事件:
- 首先,创建一个实现
MediaRecorder.OnInfoListener
接口的类:
public class MyMediaRecorderListener implements MediaRecorder.OnInfoListener { @Override public void onInfo(MediaRecorder mr, int what, int extra) { if (what == MediaRecorder.INFO_STARTED) { // 录制已经开始 } else if (what == MediaRecorder.INFO_STOPPED) { // 录制已经完成 } } }
- 然后,在您的Activity或Fragment中设置MediaRecorder的回调:
MediaRecorder mediaRecorder = new MediaRecorder(); MyMediaRecorderListener myMediaRecorderListener = new MyMediaRecorderListener(); mediaRecorder.setOnInfoListener(myMediaRecorderListener);
- 接下来,配置MediaRecorder并开始录制:
// 配置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.setOutputFile("/path/to/output/file"); // 开始录制 try { mediaRecorder.prepare(); mediaRecorder.start(); } catch (IOException e) { e.printStackTrace(); }
-
当录制完成时,
onInfo
方法将被调用。您可以在该方法中执行所需的操作,例如停止录制、保存文件等。 -
最后,记得在适当的时候停止录制并释放资源:
// 停止录制 mediaRecorder.stop(); // 释放资源 mediaRecorder.release(); // 取消回调 mediaRecorder.setOnInfoListener(null);
这样,您就可以使用MediaRecorder的回调来处理录制完成事件了。请注意,这个示例仅适用于音频录制。如果您还需要处理视频录制,您需要实现MediaRecorder.OnVideoSizeChangedListener
接口并在onVideoSizeChanged
方法中处理视频尺寸变化。