离子相机崩溃android

时间:2016-12-27 10:19:41

标签: angularjs cordova ionic-framework cordova-plugins

我正在开发一个应该打开camera或从照片库中选择图片的应用,问题是如果我测试应用build with ionic(所以android-debug.apk)那里不是问题,但如果我测试signed apk(我用android studio签署了apk)如果我想从照片库中选择一个图像没有问题,但如果我想打开相机应用程序关闭并返回消息“应用程序”应用程序名称“被中断”。 我只在android上遇到这个问题,在iOS上运行正常。 我试图在谷歌搜索,但我没有发现任何东西,三周前我发布了一个相同的功能和相同的代码相同的应用程序,它的工作原理。

这是我打开相机的代码

function capturePhoto() {
      // Take picture using device camera and retrieve image as base64-encoded string
        /*navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50,
        destinationType: destinationType.DATA_URL }); */


        var srcType = Camera.PictureSourceType.CAMERA;
        var options = setOptions(srcType);
        var func = createNewFileEntry;

        /*if (selection == "camera-thmb") {
            options.targetHeight = 100;
            options.targetWidth = 100;
        }*/

        navigator.camera.getPicture(function cameraSuccess(imageUri) {

            // Do something

        }, function cameraError(error) {
            console.debug("Unable to obtain picture: " + error, "app");

        }, options);

    }

我该如何解决这个问题?

谢谢

1 个答案:

答案 0 :(得分:0)

始终尝试在此处使用服务。因为您必须在不同的控制器中使用它,

.factory('imageCapt', function($q, $cordovaCamera) {
    var image_url = "";
    var _ChoosePhoto = function () {
                  var options = {
                    quality: 75,
                    destinationType: Camera.DestinationType.DATA_URL,
                    sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
                    allowEdit: true,
                    encodingType: Camera.EncodingType.JPEG,
                    targetWidth: 300,
                    targetHeight: 300,
                    popoverOptions: CameraPopoverOptions,
                    saveToPhotoAlbum: false
                };
                    return $cordovaCamera.getPicture(options).then(function (imageData) {
                        image_url = "data:image/jpeg;base64," + imageData;
                        return image_url;
                    }, function (err) {
                        alert(err);
                        // An error occured. Show a message to the user
                    });
                }; 
    var _GetImageUrl= function(){
          var options = {
                    quality: 50,
                    destinationType: Camera.DestinationType.DATA_URL,
                    sourceType: Camera.PictureSourceType.CAMERA,
                    allowEdit: true,
                    encodingType: Camera.EncodingType.JPEG,
                    targetWidth: 100,
                    targetHeight: 100,
                    popoverOptions: CameraPopoverOptions,
                    saveToPhotoAlbum: true
                };

                    return $cordovaCamera.getPicture(options).then(function (imageData) {
                        image_url ="data:image/jpeg;base64,"+ imageData;                 
                    return image_url;
                    }, function (err) {
                        alert(err);
                        // An error occured. Show a message to the user
                    });
      // $ionicLoading.show({content: 'Loading', animation: 'fade-in',showBackdrop: true, maxWidth: 200,showDelay: 0});

    };
    return {
        GetImageUrl : _GetImageUrl,
        ChoosePhoto : _ChoosePhoto,
    };

})

注意:如果您不想使用服务,请在控制器中正确使用选项,例如

    var options = {
                quality: 50,
                destinationType: Camera.DestinationType.DATA_URL,
                sourceType: Camera.PictureSourceType.CAMERA,
                allowEdit: true,
                encodingType: Camera.EncodingType.JPEG,
                targetWidth: 100,
                targetHeight: 100,
                popoverOptions: CameraPopoverOptions,
                saveToPhotoAlbum: true
            };