我正在尝试从Camera.PictureCallback onPictureTaken
获取Jpeg,但是当我这样做时
bitmapImage = BitmapFactory.decodeByteArray(data, 0, data.length);
这是第一次出现在 logcat 上:
将堆( fragment 情况)增长到 48.886MB,以分配 15728656 字节
当我尝试重新拍摄照片时,应用程序崩溃并显示以下堆栈跟踪:
java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeByteArray(Native Method)
at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:603)
at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:626)
at com.delsorboilario.brianzashop.Scatta$5.onPictureTaken(Scatta.java:216)
at android.hardware.Camera$EventHandler.handleMessage(Camera.java:987)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5511)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
这是代码:
android.hardware.Camera.PictureCallback jpegCallback = new android.hardware.Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] data, android.hardware.Camera camera) {
bitmapImage = BitmapFactory.decodeByteArray(data, 0, data.length);
Uri tempUri = getImageUri(getApplicationContext(), bitmapImage);
File finalFile = new File(getRealPathFromURI(tempUri));
System.out.println("aaaaaa "+finalFile);
}
};
编辑
按照 MicheleLacorte 的建议,我尝试在获取 File FinalFile
后回收位图
没问题,但是当我尝试显示该路径中的图像时,我遇到了同样的错误。
最佳答案
在 Android 中加载大位图确实很困难 看看这个
http://developer.android.com/training/displaying-bitmaps/load-bitmap.html
关于java - BitmapFactory.decodeByteArray 内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31387547/