Android AudioRecord 支持的采样率

android

1个回答

写回答

史赛娅

2025-07-06 10:10

+ 关注

Android
Android

Android AudioRecord是Android系统中的一个类,用于实时录制音频数据。它支持多种采样率,可根据需要选择合适的采样率进行录制。本文将介绍Android AudioRecord支持的采样率,并附带案例代码。

Android AudioRecord支持的采样率

Android AudioRecord支持的采样率范围相对较广,常见的采样率有8000Hz、11025Hz、16000Hz、22050Hz、44100Hz、48000Hz等。不同的采样率适用于不同的应用场景。一般来说,较低的采样率可以节省存储空间和带宽,但会损失一定的音质;较高的采样率可以获得更好的音质,但需要消耗更多的存储空间和带宽。

案例代码

以下是一个简单的示例代码,演示了如何使用Android AudioRecord录制音频数据,并设置采样率为44100Hz:

Java

import Android.media.AudioFormat;

import Android.media.AudioRecord;

import Android.media.MediaRecorder;

import Android.util.Log;

public class AudioRecordExample {

private static final String TAG = "AudioRecordExample";

private static final int SAMPLE_RATE = 44100;

private AudioRecord audioRecord;

private boolean isRecording = false;

public void startRecording() {

int bufferSize = AudioRecord.getMinBufferSize(SAMPLE_RATE, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);

audioRecord = new AudioRecord(MediaRecorder.AudIOSource.MIC, SAMPLE_RATE, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize);

audioRecord.startRecording();

isRecording = true;

// 开启一个线程读取音频数据

new Thread(new Runnable() {

@Override

public void run() {

byte[] buffer = new byte[bufferSize];

while (isRecording) {

int bytesRead = audioRecord.read(buffer, 0, bufferSize);

// 处理音频数据

processAudioData(buffer, bytesRead);

}

}

}).start();

}

public void stopRecording() {

isRecording = false;

audioRecord.stop();

audioRecord.release();

}

private void processAudioData(byte[] buffer, int bytesRead) {

// 处理音频数据的逻辑代码

Log.d(TAG, "Read audio data: " + bytesRead + " bytes");

}

}

以上代码中,我们使用AudioRecord类创建一个录音实例,并设置采样率为44100Hz。在startRecording方法中,我们开启一个线程读取音频数据,并在processAudioData方法中处理音频数据。stopRecording方法用于停止录制。

Android AudioRecord是Android系统中用于录制音频数据的类,支持多种采样率。本文介绍了Android AudioRecord支持的采样率范围,并提供了一个简单的示例代码,演示了如何使用AudioRecord录制音频数据。开发者可以根据自己的需求选择合适的采样率进行录制。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号