Ядро Nativescript Cameraplus с проблемой Ml-kit для фотографирования
Я использую оптическое распознавание ядра NativeScript с плагином cameraplus и ml-kit от firebase. У меня есть этот код для просмотра:
<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: Невозможно прочитать свойство then для неопределенного
когда я держу только метод:
camera.takePicture({ saveToGallery: false })
это работает, поэтому должна быть проблема с JS. Идея состоит в том, чтобы соединить эту фотографию с ml-kit (я должен использовать плагин cameraplus, потому что он должен быть интегрирован вместо запуска приложения камеры, как в плагине камеры (основной)
1 ответ
Пожалуйста, внимательно ознакомьтесь с документацией, возвращаемое значение takePicture
метод void
не Promise
, Вы должны слушать photoCapturedEvent
на CameraPlus
составная часть.
Обновить:
Если вы используете NativeScript Core, вам придется добавлять слушателя программно. Выполнение этого из XML может не работать.