我想通过一个字节[]持有音乐文件到我的应用程序中的另一个活动。但是当我这样做时,我得到失败的活页夹错误,这意味着音乐文件的大小太大(超过2MB)。然后我继续尝试用下面的方法压缩它,但仍然给我错误。我如何获得1MB以下的文件来传递它的意图或有没有使用意图的另一种方式来实现这一点?传递字节数组之间的活动android
压缩代码:
public static byte[] zipByteArray(byte[] file)
throws IOException{
byte[] byReturn = null;
Deflater oDeflate = new Deflater(Deflater.DEFLATED, false);
oDeflate.setInput(file);
oDeflate.finish();
ByteArrayOutputStream oZipStream = new ByteArrayOutputStream();
try {
while (! oDeflate.finished()){
byte[] byRead = new byte[ZIP_BUFFER_SIZE];
int iBytesRead = oDeflate.deflate(byRead);
if (iBytesRead == byRead.length){
oZipStream.write(byRead);
}
else {
oZipStream.write(byRead, 0, iBytesRead);
}
}
oDeflate.end();
byReturn = oZipStream.toByteArray();
}
finally {
oZipStream.close();
}
return byReturn;
}
*小心*使用静态数据成员。通过“小心”,我的意思是确保不会泄漏2MB的byte []'。 – CommonsWare 2015-02-23 22:36:36
我认为你可以尝试另一种方式,在活动A中将其写入磁盘并将该位置传递给活动B,然后再读取它。在内存读取中可能效率不高。 – kosa 2015-02-23 22:36:46