gpt4 book ai didi

android - PhoneGap : Application crash taking portrait picture

转载 作者:太空宇宙 更新时间:2023-11-03 10:25:39 24 4
gpt4 key购买 nike

我正在使用 jQuery Mobile 和 PhoneGap 创建一个应用程序,允许用户拍照,在屏幕上查看,然后将其上传到服务器应用程序,最终将其发布到网站上。

如果我在横向模式下拍照,这会很好用,但当我拍摄纵向照片时,应用程序会崩溃。正如您从下面的代码 fragment 中看到的那样,我正在使用 correctOrientation 参数尝试在拍摄照片后调整照片的方向。如果没有此参数,应用程序不会崩溃,但是照片在显示时方向错误。

现在我正在 Sony XPERIA android 手机上对此进行测试。

这里是负责工作的代码。

function onPhotoFail(message) {
alert('Failed because: ' + message);
}

function onPhotoSuccess(imageURI) {
var $image = $("img#upload-image");
$image.attr("src", imageURI);
}

function capturePhoto() {
navigator.camera.getPicture(onPhotoSuccess, onPhotoFail, { quality: 50, destinationType: Camera.DestinationType.FILE_URI , correctOrientation: true });
}

这是堆栈跟踪:

E/AndroidRuntime(31760): FATAL EXCEPTION: main
E/AndroidRuntime(31760): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
E/AndroidRuntime(31760): at android.graphics.Bitmap.nativeCreate(Native Method)
E/AndroidRuntime(31760): at android.graphics.Bitmap.createBitmap(Bitmap.java:477)
E/AndroidRuntime(31760): at android.graphics.Bitmap.createBitmap(Bitmap.java:444)
E/AndroidRuntime(31760): at org.apache.cordova.CameraLauncher.getRotatedBitmap(CameraLauncher.java:483)
E/AndroidRuntime(31760): at org.apache.cordova.CameraLauncher.onActivityResult(CameraLauncher.java:326)
E/AndroidRuntime(31760): at org.apache.cordova.DroidGap.onActivityResult(DroidGap.java:823)
E/AndroidRuntime(31760): at android.app.Activity.dispatchActivityResult(Activity.java:3908)
E/AndroidRuntime(31760): at android.app.ActivityThread.deliverResults(ActivityThread.java:2549)
E/AndroidRuntime(31760): at android.app.ActivityThread.handleSendResult(ActivityThread.java:2595)
E/AndroidRuntime(31760): at android.app.ActivityThread.access$2000(ActivityThread.java:121)
E/AndroidRuntime(31760): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:973)
E/AndroidRuntime(31760): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(31760): at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime(31760): at android.app.ActivityThread.main(ActivityThread.java:3701)
E/AndroidRuntime(31760): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(31760): at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime(31760): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
E/AndroidRuntime(31760): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624)
E/AndroidRuntime(31760): at dalvik.system.NativeStart.main(Native Method)

我已经做了一些搜索,但我没有看到任何人遇到这个确切的问题。感谢任何帮助

最佳答案

我必须查看您的堆栈跟踪才能确定,但​​它可能是一个 OutOfMemoryException。 Android 非常糟糕地处理图像处理。它基本上需要将整个图像加载到每个像素为 4 字节的内存中,这意味着对于许多现代手机摄像头来说高达 40 兆字节。

我现在唯一的建议是尝试将质量切换到 100。我知道这听起来违反直觉,但它可以避免在后台进行太多处理。

您可以阅读我的博客文章,讨论相机的一些问题:

http://simonmacdonald.blogspot.ca/2012/07/change-to-camera-code-in-phonegap-190.html

此外,如果我能看到堆栈跟踪,那将会有所帮助。

关于android - PhoneGap : Application crash taking portrait picture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13068764/

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