我想通過一個字節[]持有音樂文件到我的應用程序中的另一個活動。但是當我這樣做時,我得到失敗的活頁夾錯誤,這意味着音樂文件的大小太大(超過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