在Android设备上的Cordova / Phonegap 3.2应用中捕获照片时出现问题。
当我运行navigator.camera.getPicture
功能时,相机会在大约30秒后返回成功,有时会更长。但是,当我再次点击相机按钮(再次运行navigator.camera.getPicture函数,而不捕获镜头)时,它会立即将控件返回到应用程序并恢复应用程序的进程。
它看起来就像我捕获图像后它停留的应用程序(虽然我确实在相机完成拍摄照片后返回应用程序),以及导致相机继续操作并进入{的唯一因素{1}}是再次运行success function
功能。
这不会发生在iOS7上,我只在Android上体验过它(尝试使用Android版本2.3.5,4.1.2 )。
我在getPicture
来电之前发出了提示,但运行正常。我还在成功功能中发出警报,但它没有运行。所以我假设捕获插件中的其他内容会导致延迟。
我已经检查了CPU并且它很低。我禁用了任何其他后台进程和webservice调用,以确保它不会导致此行为。
我还使用了非常小的图像尺寸,以确保图像的大尺寸不会导致此问题。所以我也消除了图像尺寸因子。
getPicture函数:
navigator.camera.getPicture
LOG For Behavior 1:
保存图像后:
navigator.camera.getPicture(function () {
// On get photo success
that._onPhotoURISuccess.apply(that, arguments);
return false;
}, function (err) {
}, {
quality: CAPTURED_PHOTO_IMAGE_QUALITY,
destinationType: Camera.DestinationType.FILE_URI,
encodingType: Camera.EncodingType.JPEG,
saveToPhotoAlbum: SETTINGS_SAVE_TO_PHOTO_ALBUM,
allowEdit: false,
sourceType: Camera.PictureSourceType.CAMERA,
targetWidth: maxSize, // <= 1024
targetHeight: maxSize,
correctOrientation: true,
});
两分钟后,我决定再次点击相机按钮:
03-27 21:11:10.812: V/webview(11988): singleCursorHandlerTouchEvent -getEditableSupport FASLE
03-27 21:11:11.281: D/CordovaActivity(11988): Paused the application!
03-27 21:11:11.281: D/CordovaWebView(11988): Handle the pause
03-27 21:11:11.296: W/PluginManager(11988): THREAD WARNING: exec() call to Camera.takePicture blocked the main thread for 33ms. Plugin should use CordovaInterface.getThreadPool().
03-27 21:11:11.382: W/PluginManager(11988): THREAD WARNING: exec() call to WebSocket.send blocked the main thread for 18ms. Plugin should use CordovaInterface.getThreadPool().
03-27 21:11:12.117: W/IInputConnectionWrapper(11988): showStatusIcon on inactive InputConnection
03-27 21:11:17.070: D/CordovaActivity(11988): Incoming Result
03-27 21:11:17.070: D/CordovaActivity(11988): Request code = 34
03-27 21:11:17.070: D/CordovaActivity(11988): We have a callback to send this result to
03-27 21:11:17.585: D/dalvikvm(11988): GC_EXTERNAL_ALLOC freed 563K, 52% free 4167K/8519K, external 5208K/5208K, paused 85ms
03-27 21:11:18.734: D/dalvikvm(11988): GC_EXPLICIT freed 19K, 52% free 4161K/8519K, external 8280K/8422K, paused 64ms
03-27 21:11:18.750: D/Whitelist(11988): Unlimited access to network resources
03-27 21:11:18.757: I/CordovaLog(11988): Found start page location: index.html
03-27 21:11:18.757: D/Config(11988): The <log> tags is deprecated. Use <preference name="loglevel" value="DEBUG"/> instead.
03-27 21:11:18.757: I/CordovaLog(11988): Changing log level to DEBUG(3)
03-27 21:11:18.757: D/CordovaActivity(11988): Resuming the App
03-27 21:11:18.757: D/CordovaActivity(11988): CB-3064: The errorUrl is null
03-27 21:11:18.789: V/webview(11988): OnSizeChanged: Enter
03-27 21:11:18.804: D/SoftKeyboardDetect(11988): Ignore this event
03-27 21:11:19.125: V/webview(11988): OnSizeChanged: Enter
更新2:我注意到了另一件事。当我对getPicture函数的错误回调发出警告时,我得到了#34; Cameera取消了#34;错误。虽然当我再次启动相机时,会调用成功回调。
更新3: experienced the same issue
的其他人我在更多细节中遇到的三种行为:
行为1:
行为2:
行为3:
这些是主要问题。当我用第二个摄像头getPicture调用中断延迟(按下摄像头按钮)时,这三个的常见是长时间延迟和立即继续回调功能。
问题不一致。在极少数情况下,它确实按预期工作,没有延迟,但大多数时候我遇到这些问题。这些问题可能在我启动应用程序后或一段时间后发生,并且没有办法调试它们,因为延迟发生在相机插件本身,而不是我的代码中。
答案 0 :(得分:0)
我在phonegap 2.9.0上面临同样的问题,经过多次失败的试验来解决问题后,我做了以下
我创建了一个新的phonegap 3.5.0项目
我从CLI构建了android平台
我将www文件夹复制到新项目根文件夹
我使用CLI
我在图标和启动画面的顶级config.xml文件中进行了必要的更改,因为文件构造不同
我运行了项目,现在没问题了。