保存用相机和旋转手机拍摄的图像时,Android 应用程序死机

Posted

技术标签:

【中文标题】保存用相机和旋转手机拍摄的图像时,Android 应用程序死机【英文标题】:Android app dies when saving image captured with camera and rotating phone 【发布时间】:2012-09-10 23:45:31 【问题描述】:

[编辑]

我实际上解决了这个问题,在我的活动清单中添加了以下行:

android:configChanges="orientation|keyboardHidden"

我正在尝试使用 phonegap 保存我的 android 手机拍摄的图像,但是 80% 的时间我按下保存按钮,在拍照后,我的应用程序就死了......

我发现这是 phonegap + android 的常见问题。我已经尝试过降低图像质量,清理手机内存,擦除应用程序的缓存目录......到目前为止,我仍然会出现这种随机行为。

我尝试过使用 imageData 和 imageURI,但仍然出现错误。

需要注意的是,每次我旋转手机时,我的应用都会死掉。有时当我保存图像时,屏幕会自动旋转,这也会杀死应用程序。

这是我到目前为止的代码......

            // Called when a photo is successfully retrieved
            //
            function onPhotoURISuccess(imageURI) 
                // Uncomment to view the image file URI
                // console.log(imageURI);

                $('#my_div') // this div belongs to my html markup (see bellow)
                    .empty()
                    .append(
                        $('<image>')
                            .attr('src', imageURI)
                            .attr('width', '100')
                            .attr('height', '100')
                            .css(
                                'background-color' : 'red',
                                 '-webkit-border-radius': '15px',
                                 '-moz-border-radius': '15px',
                                 'border-radius': '15px'
                            )
                );
            

            // A button will call this function
            //
            function getPhoto(source) 
                // Retrieve image file location from specified source
                navigator.camera.getPicture(
                    function (imageUri) 
                        onPhotoURISuccess(imageUri, photo_div_id);   
                    , 
                    onFail, 
                        quality: 30,
                        destinationType: Camera.DestinationType.FILE_URI,
                        sourceType: source
                    
                );
            

<div   id="my_div" class= "iconP">
   <input type="button"  name="photo_1" id="photo_1" onclick ="getPhoto()" value="photo 1"/>
</div>

【问题讨论】:

如果你得到的答案没有帮助,你应该去检查你的 LogCat,让我们知道错误是什么。如果是 Bitmap 超出 VM 预算类型错误,这是一种问题,如果是权限问题,则完全不同。 【参考方案1】:

您需要向 mainfest 添加更多内容,否则您将再次遇到此问题。添加以下内容:android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"

【讨论】:

这正是 phonegap 建议添加的行,但是,如果我添加完整的字符串,我的应用程序将不会启动,这就是我必须删除最后三个名称的原因。无论哪种方式,+1 帮助 :) 我仍然建议您接受他的答案作为正确的答案,因为它对您有所帮助……而且因为过去 3 年没有人回答。

以上是关于保存用相机和旋转手机拍摄的图像时,Android 应用程序死机的主要内容,如果未能解决你的问题,请参考以下文章

Android:BroadcastReceiver 意图检测拍摄的相机照片?

如何找到 Android 手机的相机图像文件夹?

在android中设置相机拍摄的图像?

Android将图片旋转90度(由相机拍摄)[重复]

如何实现 Android 相机以任何屏幕方向拍照?

Android中Camera方向问题总结