Android onPictureTaken回调在Bitmap.decodeByteArray中抛出内存不足异常

时间:2012-12-05 14:09:39

标签: android camera out-of-memory

我拥有一台三星Galaxy S3,能够捕捉大小~3000 x 2000的小天使。而且,我目前正在开发一种需要拍摄照片的应用程序。我使用手机作为调试器,并设置了设备为捕获图片提供的最佳尺寸。

但是,如果我使用此设置,回调onPictureTaken会在Bitmap.decodeByteArray方法的第一行给出内存不足错误,我尝试将捕获的字节解码为位图。如果我使用Bitmap.Options.inSampleSize = 2,则不会发生内存不足错误。

我希望应用程序能够捕获设备提供的最佳功能,并且设备在其自己的相机应用程序中执行此操作,但我不能在我的应用程序中。我不明白。我怎样才能克服这个问题?

2 个答案:

答案 0 :(得分:1)

http://www.youtube.com/watch?v=_CruQY55HOkAndroid custom view Bitmap memory leak。另外看看这个视频。谈论MAT分析器应该有所帮助。在不使用时也回收位图

答案 1 :(得分:0)

android中的应用程序必须使用16mb左右的内存。如果您要将inSampleSize设置为一个非常大的数字以获得图像质量,或者如果您不执行采样,那么它很可能会给您带来内存不足的异常。

查看此链接和示例应用程序: Displaying Bitmaps Efficiently