Android使用AudioRecord录音,手机息屏一分钟后录音采样值全为0。
部分代码如下:
try {
OutputStream os = new FileOutputStream(file);
BufferedOutputStream bos = new BufferedOutputStream(os);
DataOutputStream dos = new DataOutputStream(bos);
// Create a new AudioRecord object to record the audio.
mRecordBufferSize = AudioRecord.getMinBufferSize(mSampleRateInHz, channelConfiguration, audioEncoding) * 2;
//录音类
AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, mSampleRateInHz, channelConfiguration, audioEncoding, mRecordBufferSize);
short[] buffer = new short[mRecordBufferSize];
audioRecord.startRecording();
mStopRecording = false;
/*
对录音数据保存到本地并添加到缓存数组中
*/
while (mStartRecording) {
short bufferx;
int bufferReadResult = audioRecord.read(buffer, 0, mRecordBufferSize);
for (int i = 0; i < bufferReadResult; i++) {
bufferx = Short.reverseBytes(buffer[i]);
dos.writeShort(bufferx);
}
writeBuffer(buffer);
}
//停止录音
audioRecord.stop();
dos.close();
bos.close();
os.close();
息屏1分钟(很准确的1分钟)后bufferx全为0,唤醒屏幕后又能正常录音。
如何解决这个问题?项目需求息屏时也能完全正常录音。