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
作為視頻源。