如何从输入流中获取short []

时间:2013-05-29 03:26:36

标签: android audio

我正在制作录音系统。如何从java中的输入流中创建数组short []

2 个答案:

答案 0 :(得分:2)

首先,使用InputStream.read(byte[] buffer)将数据存储到字节数组中。然后使用这样的东西将其转换为SHORT []。

byte[] bBuffer; // your buffer containing your byte[] data
short[] sBuffer;
ByteBuffer.wrap(bBuffer).order(ByteOrder.LITTLE_ENDIAN).asShortBuffer().get(sBuffer);

虽然除非你真的需要一个short [],否则我会在运行中使用字节进行处理,以便更加优化。

换句话说,您只需将put()用于ByteBuffer的短缓冲区表示即可。所以,像:

byte[] bBuffer;
short[] sBuffer;  // your buffer containing your byte[] data
yourByteBuffer.asShortBuffer().put(sBuffer);

答案 1 :(得分:1)

嗯......如果您只是想从InputStream中读取并将其存储在byte []变量中,您只需要使用InputStream的read方法:

InputStream inputStream;
byte[] bytes;

...

inputStream.read(bytes);

但是,正如你所说的那样,你正在研究录音系统,我建议你看一下AudioRecord Class。您可以轻松地使用它来录制声音并读取数据。