首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在低cpu和低空间的java (android)中存储short[]

在低cpu和低空间的java (android)中存储short[]
EN

Stack Overflow用户
提问于 2011-11-24 17:32:54
回答 2查看 1.4K关注 0票数 1

在流媒体音乐时,我得到了short[]类型的pcm数据,我想把它保存到我的安卓设备中的文件中,这样我以后就可以再次播放它(使用AudioTrack)。我不希望音乐的存储在内存和cpu上是有效的。

如何将short[]保存到文件中,因为我看不到任何函数in.write(short[])?

如何减少用于保存此文件的\cpu空间?

EN

回答 2

Stack Overflow用户

发布于 2011-11-24 17:40:25

用DataOutputStream包装你的FileOutputStream:

代码语言:javascript
复制
DataOutputStream doStream = new DataOutputStream(new BufferedOutputStream(fileOutputStream));
doStream.writeInt(numberArray.length); //Save size
for (int i=0;i<numberArray.length;i++) {
    doStream.writeShort(numberArray[i]); //Save each number
}

回读的方法也是一样:

代码语言:javascript
复制
DataInputStream diStream = new DataInputStream(new BufferedInputStream(fileInputStream));
int size = diStream.readInt(); //Read size
short[] data = new short[size]; //Create new array with required length
for (int i=0;i<size;i++) {
    data[i] = diStream.readShort(); //Read each number
}
票数 3
EN

Stack Overflow用户

发布于 2011-11-24 17:49:10

不需要对MP3或类似的代码进行任何编码,您总是可以这样做。

代码语言:javascript
复制
short[] sound = ...;
ByteBuffer byteMyShorts = ByteBuffer.allocate(sound.length * 2);
ShortBuffer shortBytes = byteMyShorts.asShortBuffer();
shortBytes.put(sound);
byteMyShorts.flip();

// byteMyShorts.array() now contains your short[] array as an
// array of bytes.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8254804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档