gpt4 book ai didi

android - 从 FileDescriptor 读取流字节

转载 作者:行者123 更新时间:2023-11-29 23:28:57 25 4
gpt4 key购买 nike

我是 android 和 java 的初学者。

但是,我想使用 MediaRecorder 来录制语音并将数据记录为 byte[],我编写了以下代码:

ParcelFileDescriptor[] fileDescriptors = ParcelFileDescriptor.createPipe();
ParcelFileDescriptor readFD = fileDescriptors[0];
ParcelFileDescriptor writeFD = fileDescriptors[1];
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(writeFD.getFileDescriptor());
recorder.setMaxDuration(6000);
recorder.prepare();
recorder.start();

recorder.setOnErrorListener(new MediaRecorder.OnErrorListener() {
@Override
public void onError(MediaRecorder mediaRecorder, int i, int i1) {
mediaRecorder.stop();
Log.d("voice", "onError");
mediaRecorder.release();
}
});
recorder.setOnInfoListener(new MediaRecorder.OnInfoListener() {
@Override
public void onInfo(MediaRecorder mediaRecorder, int i, int i1) {
mediaRecorder.stop();
Log.d("voice", "onInfo");
mediaRecorder.release();
}
});

InputStream inputStream = new ParcelFileDescriptor.AutoCloseInputStream(readFD);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();


int read = -1;
byte[] data = new byte[4000];


while ((read = inputStream.read(data, 0, data.length)) != -1) {
byteArrayOutputStream.write(data, 0, read);
}

byte[] byteResult = byteArrayOutputStream.toByteArray();
byteArrayOutputStream.flush();
byteArrayOutputStream.close();
return byteResult;

我对此有一个大问题,我调试代码,当我到达这一行时:

while ((read = inputStream.read(data, 0, data.length))  != -1) {
byteArrayOutputStream.write(data, 0, read);
}

几圈后,android studio 向我显示消息并说:“应用程序正在运行”,我不得不停止它....

任何人都可以帮助我并告诉我代码有什么问题吗?

最佳答案

你可以使用这个功能available()

while ((inputStream.read(data, 0, data.length))  != -1) {
read = inputStream.read(data, 0, data.length);
byteArrayOutputStream.write(data, 0, read);
}

关于android - 从 FileDescriptor 读取流字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53042877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com