gpt4 book ai didi

java - 在android Activity 之间传递字节数组

转载 作者:行者123 更新时间:2023-12-02 04:56:50 25 4
gpt4 key购买 nike

我正在尝试将保存音乐文件的字节[]传递给我的应用程序中的另一个 Activity 。但是当我这样做时,我收到失败的绑定(bind)器错误,这意味着音乐文件的大小太大(超过 2MB)。然后我继续尝试用下面的方法压缩它,但这仍然给了我错误。我怎样才能获得小于 1MB 的文件以通过 Intent 传递它,或者是否有其他方法可以在不使用 Intent 的情况下实现此目的?

压缩代码:

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;
}

最佳答案

将文件作为参数直接传递给 Intent 并不是一个好主意(或者 Intent 的设计目的)。尝试压缩它是一种创可贴措施,如果限制发生变化或文件本身需要更改为不适合您的压缩格式的文件,该措施就会失效。

您应该创建一个临时文件(或您可以从 Intent 引用的其他临时存储),并通过您的 Intent 传递对它的引用。静态成员可能会起作用,但您必须非常小心,不要将引用保留太久,否则可能会导致内存泄漏。

关于java - 在android Activity 之间传递字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28684858/

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