Android 在Cordova 3.0应用程序中捕获照片时,应用程序因内存不足而崩溃

Android 在Cordova 3.0应用程序中捕获照片时,应用程序因内存不足而崩溃,android,cordova,out-of-memory,Android,Cordova,Out Of Memory,我正在我的Android 2.3.6 Nexus One智能手机上运行一个Phonegap(Cordova 3.0)应用程序。我的问题是,当我启动相机并捕获图像时,捕获后应用程序崩溃并被迫关闭 我使用logcat应用程序查看日志,这是我所拥有的: 02-15 13:07:04.515 E/dalvikvm-heap( 5678): 3840000-byte external allocation too large for this process. 02-15 13:07:04.555

我正在我的Android 2.3.6 Nexus One智能手机上运行一个Phonegap(Cordova 3.0)应用程序。我的问题是,当我启动相机并捕获图像时,捕获后应用程序崩溃并被迫关闭

我使用logcat应用程序查看日志,这是我所拥有的:

02-15 13:07:04.515 E/dalvikvm-heap( 5678): 3840000-byte external allocation too large     for this process.
02-15 13:07:04.555 E/GraphicsJNI( 5678): VM won't let us allocate 3840000 bytes
02-15 13:07:04.555 D/dalvikvm( 5678): GC_FOR_MALLOC freed 0K, 56% free 3528K/8007K, external 21308K/23356K, paused 29ms
02-15 13:07:04.555 D/AndroidRuntime( 5678): Shutting down VM
02-15 13:07:04.555 W/dalvikvm( 5678): threadid=1: thread exiting with uncaught exception (group=0x40015560)
02-15 13:07:04.555 E/AndroidRuntime( 5678): FATAL EXCEPTION: main
02-15 13:07:04.555 E/AndroidRuntime( 5678): java.lang.OutOfMemoryError: bitmap size   exceeds VM budget
02-15 13:07:04.555 E/AndroidRuntime( 5678):     at android.graphics.Bitmap.nativeCreate(Native Method)
02-15 13:07:04.555 E/AndroidRuntime( 5678):     at android.graphics.Bitmap.createBitmap(Bitmap.java:477)
02-15 13:07:04.555 E/AndroidRuntime( 5678):     at   android.graphics.Bitmap.createBitmap(Bitmap.java:444)
02-15 13:07:04.555 E/AndroidRuntime( 5678):     at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:349)
02-15 13:07:04.555 E/AndroidRuntime( 5678):     at org.apache.cordova.camera.CameraLauncher.getScaledBitmap(CameraLauncher.java:618)
02-15 13:07:04.555 E/AndroidRuntime( 5678):     at org.apache.cordova.camera.CameraLauncher.onActivityResult(CameraLauncher.java:346)
02-15 13:07:04.555 E/AndroidRuntime( 5678):     at org.apache.cordova.CordovaActivity.onActivityResult(CordovaActivity.java:915)
02-15 13:07:04.555 E/AndroidRuntime( 5678):     at android.app.Activity.dispatchActivityResult(Activity.java:3908)
02-15 13:07:04.555 E/AndroidRuntime( 5678):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2528)
02-15 13:07:04.555 E/AndroidRuntime( 5678):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:2574)
02-15 13:07:04.555 E/AndroidRuntime( 5678):     at android.app.ActivityThread.access$2000(ActivityThread.java:117)
02-15 13:07:04.555 E/AndroidRuntime( 5678):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:961)
02-15 13:07:04.555 E/AndroidRuntime( 5678):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-15 13:07:04.555 E/AndroidRuntime( 5678):     at android.os.Looper.loop(Looper.java:130)
02-15 13:07:04.555 E/AndroidRuntime( 5678):     at android.app.ActivityThread.main(ActivityThread.java:3683)
02-15 13:07:04.555 E/AndroidRuntime( 5678):     at java.lang.reflect.Method.invokeNative(Native Method)
02-15 13:07:04.555 E/AndroidRuntime( 5678):     at java.lang.reflect.Method.invoke(Method.java:507)
02-15 13:07:04.555 E/AndroidRuntime( 5678):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-15 13:07:04.555 E/AndroidRuntime( 5678):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-15 13:07:04.555 E/AndroidRuntime( 5678):     at dalvik.system.NativeStart.main(Native Method)
02-15 13:07:04.565 W/ActivityManager(  118):   Force finishing activity com.test.app/.TelerikCallbackActivity
从日志文件中我可以了解到,内存不足,无法显示捕获的图像

我正在使用
navigator.camera.getPicture
camera.DestinationType.FILE\u URI
来捕获照片并对其进行处理。我试着将图像质量从50降低到20,但没有解决问题

从日志中,我可以了解到NexusOne拍摄的图像约为3.7MB,尽管JPEG拍摄的图像要小得多

该应用程序在我试用过的其他设备上没有崩溃,只是在我的NexusOne上,但与其他手机相比,我的NexusOne的规格最低

我不知道如何解决这个问题,需要你的帮助。谢谢


更新:我将分辨率从1600像素降低到600像素(宽度或高度的最大值),相机成功地捕获了图像。但是,我希望能够在Nexus One手机上捕获更高的分辨率,如果可能的话,至少1600像素。

检查此链接有助于解决问题,谢谢,但我仍在尝试使用Bitmap.createScaledBitmap()来解决我的问题。