是否可以在Ionic / Cordova中使用相机预览和扫描条形码?

时间:2016-12-20 12:15:20

标签: android ios angularjs cordova camera

因此,我目前正在网上游玩,试图调查已经存在哪些内容仅适用于iOS和Android上的Cordova / Ionic / AngularJS;下面是我所见到的快速视图,然后我将解释我想要实现的目标。我遇到了cordova-plugin-camera-preview,这对于我想采取的方法来说绝对是理想的;基本上,将其嵌入我的HTML而不离开我的应用程序。我也遇到了quaggaJS这似乎是一个有趣的条形码扫描仪。现在我使用了cordovaBarcodeScanner但这似乎退出了我的应用程序,这不是我的理想方法。

我想要实现的目标

在我的Ionic / Cordova移动应用程序中,我正在尝试实现实时预览条形码扫描仪。因此,我的想法是导航到我的应用程序中的一个页面,该页面将启动嵌入式摄像机视图并提供通过我的相机可以看到的内容的实时馈送(cordova-plugin-camera-preview提供的这种方法非常完美)但当然此插件不提供任何条形码(EAN)扫描功能。所以在这一点上我发现quaggaJS似乎是一个很好的方法,但是,我目前未能让quaggaJS与我的Cordova项目合作,这是一种耻辱。

我尝试实现的目标是否已经存在,或者是否有可能获得我所指的两个插件,以便与Cordova项目合作?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

到目前为止,我发现Scandit SDK提供了您想要的功能,但付费且价格昂贵。

到目前为止我所做的是使用你提到的这个库和qrcode javascript库来解码我从相机预览中得到的图片,但它没有Scandit那么快。如果您找到更好的东西,请告诉我们。

答案 1 :(得分:0)

您可以使用QR Scanner Ionic Native Plugin 但由于它仅配置为扫描QRCode,因此您必须进行编辑 添加所需条形码格式的来源。

对于Android,请编辑以下文件:/platforms/android/app/src/main/java/com/bitpay/cordova/qrscanner/QRScanner.java 在457行之后:

B[0][0] = A[0]
B[0][1] = A[1]

B[1][0] = A[0]
B[1][1] = A[1]

对于IOS,请编辑以下文件: /platforms/ios/yourapp/Plugins/cordova-plugin-qrscanner/QRScanner.swift

第156行:

formatList.add(BarcodeFormat.QR_CODE);
// add your [BarcodeFormat][2] here.

您还必须编辑第250行:

metaOutput!.metadataObjectTypes = [AVMetadataObject.ObjectType.qr, ... comma_seperated_formats_here]

像这样:

if ( (found.type == (AVMetadataObject.ObjectType.qr) && found.stringValue != nil) )