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
作为视频源。