科尔多瓦/三星Galaxy SIII - 相机崩溃应用程序

时间:2013-01-30 22:35:38

标签: cordova samsung-mobile

修正:“不要保留活动”是SG3上的默认值

三星Galaxy S3默认启用“不要保持活动”(两个位置的测试模型都出现了这个故障)

当然这意味着只要启动任何其他活动,包括来自您的Cordova / PhoneGap应用程序,您的应用程序的主要活动将被销毁。任何回调事件显然都不会发生。

关闭此选项可解决问题。

检查开发者选项,无论品牌/型号如何,例如华硕Nexus 7平板电脑没有此默认设置。


我已经设置了一个基本的测试应用。其中有一个按钮和一个img标签+未经修改的Cordova index.js

按钮onclick正在调用capturePhoto()

function onPhotoURISuccess(imageURI) {
  console.log(imageURI);
  var largeImage = document.getElementById('largeImage');
  largeImage.style.display = 'block';
  largeImage.src = imageURI;
}

function capturePhoto() {
  navigator.camera.getPicture( onPhotoURISuccess, onFail, 
     { quality: 20, allowEdit: true, destinationType: Camera.DestinationType.FILE_URI });
}

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

当我在模拟器上以及在华硕Nexus 7平板电脑上运行应用程序时,相机会按预期打开,允许拍摄并确认照片,然后使用FILE_URI返回并设置图像src属性。

然而,在三星Galaxy SIII上,(我们正在两个不同的位置进行测试)相机打开,允许捕获,并在确认后,尝试恢复测试应用程序并死亡。

有没有人知道这个问题,有没有办法解决它?

仅供参考,我在AndroidManifest.xml活动节点添加了一个额外的设置:android:screenOrientation="nosensor" - 虽然这并没有解决问题(抓住这里的稻草。)

其他信息:

  • 手机正在运行Android 4.1.2
  • 目标sdk 16
  • Cordova v 2.4.0rc1

测试版本的phonegap - 1.8 - 2.4rc(全部崩溃或无法返回图像。)

堆栈跟踪的相关部分位于:http://pastie.org/5974920

更新

  • 关于西蒙麦克唐纳的建议。

使用quality : 100

进行测试

与以前相同的结果。

  • 1.9-2.1炸弹(无消息)
  • 2.2-2.3回到应用程序,但没有图像。
  • 2.4 - 抱歉应用程序已停止 - “托管”崩溃

没有工作。

3 个答案:

答案 0 :(得分:7)

在三星Galaxy 3上,开发人员选项不保持活动默认开启。

当您启动任何其他活动时,这将垃圾收集您的主要活动,在这种情况下是相机。

关闭选项可以解决问题。

答案 1 :(得分:2)

我有三星Galaxy Note II。我有同样的问题。我在AndroidManifest.xml中对此进行了更改,现在它适用于Samsung和HTC Thunderbolt

<uses-feature android:name="android.hardware.camera" android:required="false"/>

<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="10"/>

<activity  android:configChanges="orientation|keyboardHidden" />

答案 2 :(得分:1)

您是否关闭了后台进程?如果是这样,这将打破所有Android相机。在intent中传回的数据不能为null。

此外,请务必将此添加到Android Manifest:

android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"  

2.4.x崩溃的事实是一个错误,因为在这种情况下破坏了处理恢复状态的事情,但事实是你需要后台进程将数据从一个意图传递到另一个意图,否则这不会适用于任何Android应用程序。我们至少开始优雅地处理这种情况。我认为应用程序关闭可能是一个错误,所以我有兴趣在这里看到一张票:https://issues.apache.org/jira/browse/CB

更新:请参阅https://issues.apache.org/jira/browse/CB-2533