【问题标题】:Ionic camera plugin getPicture ignored离子相机插件getPicture被忽略
【发布时间】:2017-05-04 11:37:16
【问题描述】:

这把我吓坏了。我有一个简单的应用程序,您可以在其中按下按钮并拍照,然后用户可以做其他事情,但问题是有时会忽略 getPicture 函数并且相机永远不会显示,这里有一些信息和简单的代码:

$ ionic info

Your system information:

Cordova CLI: 6.5.0 
Ionic CLI Version: 2.2.2
Ionic App Lib Version: 2.2.1
ios-deploy version: 1.9.1 
ios-sim version: 5.0.13 
OS: macOS Sierra
Node Version: v6.10.2
Xcode version: Xcode 8.3.2 Build version 8E2002

Installed platforms:
  android 6.0.0
  ios 4.3.1

已安装插件

$ ionic plugin ls
WARN: ionic.project has been renamed to ionic.config.json, please rename it.
com.googlemaps.ios 2.1.1 "Google Maps SDK for iOS"
cordova-plugin-camera 2.4.0 "Camera"
cordova-plugin-compat 1.1.0 "Compat"
cordova-plugin-console 1.0.3 "Console"
cordova-plugin-device 1.1.2 "Device"
cordova-plugin-file 4.3.1 "File"
cordova-plugin-file-transfer 1.6.1 "File Transfer"
cordova-plugin-geolocation 2.4.2 "Geolocation"
cordova-plugin-googlemaps 1.4.0 "phonegap-googlemaps-plugin"
cordova-plugin-screen-orientation 1.4.2 "Screen Orientation"
cordova-plugin-splashscreen 3.2.2 "Splashscreen"
cordova-plugin-statusbar 2.1.3 "StatusBar"
cordova-plugin-whitelist 1.2.2 "Whitelist"
ionic-plugin-keyboard 2.2.1 "Keyboard"

然后我们有一个带有这个按钮的 HTML

<button class="button button-full button-positive" ng-click="take_picture()">Take photo</button>

并将函数放入控制器

$scope.take_picture = function()
{
    screen.lockOrientation('portrait');
    var options = {
        quality: 25,
        destinationType: Camera.DestinationType.DATA_URL,
        sourceType: Camera.PictureSourceType.CAMERA,
        encodingType: Camera.EncodingType.JPEG,
        saveToPhotoAlbum: false,
        correctOrientation: true,
        allowEdit: false,
        targetHeight: 200,
        targetwidth: 200
    };

    $cordovaCamera.getPicture(options).then(function(imageURI) {
        $scope.image_uri = imageURI;
        $scope.marcar_gps();
        $cordovaCamera.cleanup(); 
    }, function(err) {
      console.log('error ',err);
      $cordovaCamera.cleanup();
      $ionicLoading.hide();
    });

};

希望有人可以提供帮助。 最好的!


编辑

当在 xCode 控制台上跳过相机时,我得到了这个: 警告:尝试展示已经展示的对象

【问题讨论】:

    标签: ionic-framework plugins cordova-plugins


    【解决方案1】:

    避免使用 DATA_URL 目的地类型并将其替换为 FILE_URI,因为它可能会消耗旧手机上的大量内存。当您使用 FILE_URI 作为destinationType 时,您可以使用cordova 文件插件将图像传输到外部/内部存储,然后您可以调用图像src 链接到您的本地设备url。


    编辑

    相机插件和方向插件不是最新的。所以需要它从版本 2.4.0“相机”和 1.4.2“屏幕方向”更新到 2.4.1“相机”和 2.0.1“屏幕方向”

    【讨论】:

    • 但这发生在 iphone 7 上,你认为这可能是那部手机的内存问题吗?超时是一种技巧,可以避免用户按太多次按钮
    • 照片拍摄完成后,回调被调用,即图片完全返回。您不需要在超时中包装隐藏加载。从ngcordova.com/docs/plugins/cameracameracleanup 如果您仅使用 FILE_URI 则使用,如果使用 DATA_URL 则不需要。谢谢。
    • 我发现在 XCode 控制台上,当相机被跳过时,它返回这个警告:尝试在 上呈现 已经呈现 跨度>
    • 尝试在take_picture函数的最后一行添加return true。
    • thanks digit,我试过了,但仍然得到:警告:尝试在 上呈现 已经呈现
    猜你喜欢
    • 1970-01-01
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多