【问题标题】:phonegap android app crashing due to low memory on opening camera由于打开相机时内存不足,phonegap android应用程序崩溃
【发布时间】:2012-01-18 11:36:07
【问题描述】:

我正在使用 phonegap v1.3.0 开发一个 android phonegap 应用程序
我的应用程序有一个按钮,当点击时使用 phonegap api 启动相机,当用户捕获图像时返回照片路径。
但是发生的情况是应用程序在相机返回之前崩溃,所以当相机返回时,应用程序会重新启动。所以我没有得到捕获的图像。

在检查日志时,我看到内核在相机启动后将 sigkill 发送到我的应用程序。
需要注意的一点是,当我杀死所有正在运行的应用程序然后启动我的应用程序并拍照时,它会正常返回而不会导致应用程序崩溃。
这个问题类似于https://github.com/callback/phonegap/issues/5
请告诉我可能出了什么问题?

这里是日志 - https://github.com/ghostCoder/Logs/blob/master/e2o.mobile-logs.txt
我的应用程序的名称是 e2o.mobile

这是我的 manifest.xml 的内容--

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="xyz.test"
  android:versionCode="1"
  android:versionName="1.0">


<supports-screens
    android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
    android:resizeable="true"
    android:anyDensity="true"
    />


<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.RECORD_VIDEO"/>  
<uses-permission android:name="android.permission.STORAGE"/>  



<application android:debuggable="true" android:icon="@drawable/icon" android:label="@string/app_name">
   <activity android:configChanges="orientation|keyboardHidden" android:name=".Home" android:label="@string/app_name" android:launchMode="singleTop" android:imeOptions="actionSend|flagNoEnterAction">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>

<activity android:configChanges="orientation|keyboardHidden" android:name="com.phonegap.DroidGap" android:label="@string/app_name" android:launchMode="singleTop" android:imeOptions="actionSend|flagNoEnterAction">


</activity>
</application>
<uses-sdk android:minSdkVersion="7" />
</manifest>

【问题讨论】:

  • im developing an android phonegap app 你的问题。使用第三方框架来创建应用程序会让您完全受制于该框架的稳定性。我意识到它很有用,因为您可以为许多平台构建,但我总是建议不要这样做。每个平台的特性和功能差异很大,使用一个代码库几乎不是一个好主意。在这种情况下,除非你做错了什么,否则它可能是 phonegap 的一个怪癖。我会与他们一起提交错误报告并等待查看结果。
  • 实际上这可能是由索尼相机意图的糟糕实现引起的。许多 Android 制造商在 Android 发行版中添加了“臃肿软件”,这往往会使事情变得混乱。我喜欢 Android 并且喜欢为它开发,但这些类型的问题让我彻夜难眠。字面上地!一位遇到类似问题的 PhoneGap 用户让他的用户安装了第三方相机应用程序并使用它来拍照和 BOOM!问题消失了。我尽量不在这里使用 13 个字母的 F 字。
  • 我正在尝试为这个问题设计一个解决方法,除了使用第三方相机应用程序解决方案。该应用程序被杀死(在相机启动后),并在相机返回时重新启动。重新启动后,它可以查看它是否在文件捕获期间崩溃并检索捕获的图像。我写了一个phonegap插件来做到这一点,但我遇到了一个问题。请检查stackoverflow.com/questions/8910443/…
  • @SimonMacDonald 我安装了相机应用程序,例如 Camera 360、灯箱,并尝试使用它拍照,通过应用程序而不是使用默认相机。但是该应用程序在相机启动后仍然崩溃。所以我的问题仍然没有解决。 :(你能推荐点别的吗?
  • @ghostCoder manifest.xml 中的最小 sdk 值是多少?您针对什么 SDK 构建? manifest.xml 中的活动行是什么样的?

标签: android cordova


【解决方案1】:

将质量参数从 50 降低到 30 可阻止相机 API 使我的 HTC Evo 上的应用程序崩溃。

【讨论】:

  • 把它带到了 10,行为上没有差异 :(
【解决方案2】:

尝试使用 targetWidth 和 targetHeight 减小图像大小。 使用 DestinationType FILE_URI。

【讨论】:

  • 缩小尺寸无济于事。同样的问题。 :(
猜你喜欢
  • 2011-04-29
  • 1970-01-01
  • 2013-06-15
  • 2012-07-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多