Android的MediaRecorder类用于录制音频、视频和元数据。以下是使用MediaRecorder录制音频的基本步骤:
获取MediaRecorder实例:
MediaRecorder mediaRecorder = new MediaRecorder();
设置音频源:
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); // 使用麦克风作为音频源
设置输出格式:
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); // 设置输出格式为3GPP
设置音频编码器:
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); // 设置音频编码器为AMR_NB
准备MediaRecorder:
try {
mediaRecorder.prepare();
} catch (IOException e) {
e.printStackTrace();
}
开始录制:
mediaRecorder.start();
停止录制:
mediaRecorder.stop();
释放资源:
mediaRecorder.release();
以下是一个完整的示例代码,展示了如何使用MediaRecorder录制音频:
import android.media.MediaRecorder;
import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MediaRecorderExample";
private MediaRecorder mediaRecorder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化MediaRecorder
mediaRecorder = new MediaRecorder();
try {
// 设置音频源
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
// 设置输出格式
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
// 设置音频编码器
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
// 准备MediaRecorder
mediaRecorder.prepare();
} catch (IOException e) {
Log.e(TAG, "prepare() failed", e);
}
// 开始录制
mediaRecorder.start();
Log.d(TAG, "Recording started");
// 这里可以添加代码来控制录制的时长或其他逻辑
// 停止录制
mediaRecorder.stop();
Log.d(TAG, "Recording stopped");
// 释放资源
mediaRecorder.release();
Log.d(TAG, "MediaRecorder released");
}
}
请注意,在实际应用中,你可能需要处理更多的细节,例如错误处理、权限请求、录制时长的控制等。此外,对于视频录制,你需要设置视频源、视频编码器和输出格式,并使用MediaRecorder.VideoSource.CAMERA
作为视频源。