【问题标题】:Nativescript core cameraplus with Ml-kit problem taking photosNativescript core cameraplus 与 Ml-kit 拍照问题
【发布时间】:2018-12-03 23:27:16
【问题描述】:

我正在使用带有 cameraplus 插件和来自 firebase 的 ml-kit 的 NativeScript 核心 OCR。我有这个视图代码:

<Page navigatingTo="onNavigatingTo" xmlns:Cam="@nstudio/nativescript-camera-plus">

    <StackLayout>

        <Cam:CameraPlus 
            id="camPlus"
            height="70%"
            width="70%"     
            showCaptureIcon="false"
            showGalleryIcon="false"
            showToggleIcon="false"       
            showFlashIcon="false"
            confirmPhotos="false" 
            debug="true">
        </Cam:CameraPlus>

    <Button text="test" tap="onCapture" />

    </StackLayout>

</Page>

这对于 js :

const HomeViewModel = require("./home-view-model");
const firebase = require("nativescript-plugin-firebase");
const imageSourceModule = require("tns-core-modules/image-source");
const CameraPlus = require("@nstudio/nativescript-camera-plus");

exports.onNavigatingTo = function (args) {
    page = args.object;
    mv = page.bindingContext = new HomeViewModel();
};

exports.onCapture = function() {

    camera = page.getViewById("camPlus");
    camera.takePicture({ saveToGallery: false }) 
        .then(function (imageAsset) {

          const source = new imageSourceModule.ImageSource();
          source.fromAsset(imageAsset).
               then((imageSource) => {
               getTextFromPhoto(imageSource);
          });

          }).catch(function (err) {
               console.log("Error -> " + err.message);
          });

};

我遇到了一个错误:

System.err: TypeError: Cannot read property 'then' of undefined

当我只保留方法时:

camera.takePicture({ saveToGallery: false }) 

它可以工作,所以一定有一个js问题。这个想法是将该照片与 ml-kit 连接(我必须使用 cameraplus 插件,因为它需要集成而不是像在相机(基本)插件中那样启动相机应用程序

【问题讨论】:

    标签: javascript camera nativescript firebase-mlkit


    【解决方案1】:

    请仔细参考documentationtakePicture方法的返回值是void而不是Promise。您必须在CameraPlus 组件上收听photoCapturedEvent

    更新:

    如果您使用的是 NativeScript Core,则必须以编程方式添加侦听器。从 XML 执行此操作可能行不通。

    【讨论】:

    • 我尝试在 Cam:CameraPlus 中使用 photoCapturedEvent="photoCapturedEvent",但它似乎从未使用 export.photoCapturedEvent = function() { alert('Test'); };
    • 尝试在CameraPlus/Page的加载事件上以编程方式添加事件监听器。
    • 哦!好的,所以我认为它在 CameraPlus 元素绘制时消失了,并且必须重新参与该事件。非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 2018-07-10
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    相关资源
    最近更新 更多