CameraPreview takePicture()不返回

时间:2017-08-16 05:06:49

标签: android cordova typescript ionic-framework ionic2

我一直在尝试更新旧应用程序,该应用程序具有旧版本的相机预览插件,该插件仍然具有允许我返回图像网址的setOnPictureTakenHandler方法。

新版本的插件使用takePicture()方法,我可以在其中定义一个将被调用onSuccess的函数,我定义了该函数以返回所拍摄图像的URL。但我无法在onSuccess函数之外获取该网址!

我刚刚转向打字稿,所以我猜这是管理变量的一些错误。我正在使用cameraPreview的提供程序,我已经为插件的takePicture()方法创建了一个信封。该信封应该将URL返回给我已注入提供者的控制器。

以下是提供商的信封代码:

url:string;
takePictures2() :string {    
    this.cameraPreview.takePicture(function(imgData){
        this.url = "data:image/jpeg;base64" + imgData;
    }).then();    
    return this.url;
};

这是控制器代码:

takePictures() {
    let url : string = this.cameraPreview.takePictures2();
    console.log(url);
}

1 个答案:

答案 0 :(得分:0)

我还没有测试下面的代码,但我会:

1)Promisify takePicture2。它包装插件的takePicture方法并在完成时解析URL:

takePictures2(): Promise<string> {
    return new Promise((resolve, reject) => {
        this.cameraPreview.takePicture(function(imgData) {
            resolve("data:image/jpeg;base64" + imgData);
        });
    };
};

2)让takePictures等待takePictures2解决:

takePictures() {
    let url : string;
    this.cameraPreview.takePictures2().then(url => {
        this.url = url;
        console.log(url);
    );
};