【问题标题】:Barcode Scanner add button inside scanning page条码扫描仪在扫描页面内添加按钮
【发布时间】:2016-05-13 07:39:45
【问题描述】:

我已经为我的 Ionic 项目实现了条码扫描器,适用于 iOS 和 Android。 但是当我的扫描仪启动时,我想在视图中添加一个按钮并向其中添加一个事件。 我正在使用phonegap-plugin-barcodescanner 插件

请帮助我如何在扫描视图中附加一些内容。

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 我创建了一个服务来调用扫描仪。请看这个 sn-p :: cordova.plugins.barcodeScanner.scan( function (result) { // 成功 deferred.resolve({'error':false, 'result': result}); }, function (error) { // 失败 deferred.resolve({'error':true, 'result': error.toString()}); } );
  • @SSen 试试我在下面发布的答案,我测试过,它似乎工作正常。

标签: ionic-framework barcode-scanner


【解决方案1】:

如果您想在扫描仪的布局中添加内容,您需要在插件本身中编写代码。

您不能直接与来自 JS 的扫描仪交互。

事实上,您使用的插件使用 cordova.exec 来通过传递参数来启动扫描仪视图。

  • 对于 Android,您只需了解 Java 和一些 XML。
  • 对于 iOS,您必须了解 Objective-C / Swift。

对于 Android,您可能需要修改 4 个文件:

  • plugin.xml : 所有依赖项的主页
  • Your_Activity.java:允许通过调用按钮、文本视图、布局等与扫描仪视图本身进行交互的 java 文件...
  • Your_Main.java :从插件的 js 文件获取和返回参数的 java 文件
  • Your_Layout.xml : res/layout 中的 xml 文件,由 java 解释的 xml 属性组成

除此之外,我还从 GitHub 找到了两个不错的 cordova/ionic 应用插件:

  • phonegap/phonegap-plugin-barcodescanner
  • tjwoon/csZBar

还有一个昂贵的 Scandit,它可以解决您的所有问题,每月大约 200 美元,请查看他们提出的每个解决方案的定价。

如果您使用他们的 SDK,由于他们的工作,您可能能够从 js 文件与扫描仪视图进行交互,但他们是我所知道的唯一一家这样做的公司。 (也许是 ManateeWorks...)

这部分是我从 7 月中旬以来一直在做的事情,目的是给你一些想法。


我目前正在为我的 ionic 应用程序制作 ANDROID 扫描仪布局。 你可以找到我的 GitHub 存储库 here,我从 tjwoon 的 csZBar 分叉了它,并添加了一些我的 ionic 应用程序需要的东西。

我什么都不保证,但我很确定我很快就会实现一个 iOS 布局(至少我会尝试),不幸的是我并不真正了解 android / iOS 移动编程。

Here's a screenshot of the layout

我制作了一个由 3 个图像按钮组成的“标签栏”,一个由文本视图和图像按钮组成的“顶部栏”。扫描仪嵌入在这两者之间。

应用程序功能的弹出窗口会暂停扫描仪并响应点击事件。

有关详细信息,请参阅 README 和 Java 文件 (csZBar/android/)。

不要犹豫,提出问题和/或检查我的代码。


警告

  • 1) 它目前正在开发中,因此使用它需要您自担风险(使用分支 master,而不是开发)
  • 2) 我只修改了android部分,没有修改iOS!
  • 3) 不适用于 Windows phone...

【讨论】:

    【解决方案2】:

    添加插件后,installngCordovabower install ngCordova

    在上面引用cordova.js的JS文件中添加ng-cordova.js的链接:

    index.html

    <script src="lib/ngCordova/dist/ng-cordova.js"></script>
    <script src="cordova.js"></script>
    

    另外,别忘了添加 ngCordova 模块:

    app.js

    angular.module('myApp', ['ngCordova'])
    

    现在您可以像这样使用插件了:

    控制器:

    var module = angular.module('starter.controllers', []);
    module.controller('BarcodeCtrl', function($scope, $cordovaBarcodeScanner, $ionicPlatform) {
      $ionicPlatform.ready(function(){
        $scope.scan = function() {
            $cordovaBarcodeScanner
              .scan()
              .then(function(barcodeData) {
                alert(JSON.stringify(barcodeData));
              }, function(error) {
                alert(error);
              });
          };
      });
    });
    

    查看:

    <button ng-click="scan()">Scan</button>
    

    【讨论】:

    • Prashant,这已经在工作了。但这只会打开带有文本消息的扫描仪“在取景器矩形内放置条形码以进行扫描”。在页面底部。我需要在此文本上方添加一个按钮。
    • 对我来说,我可以扫描二维码/条形码并提醒数值。对不起,我误解了,但你想完成什么?
    • 是的,我也能做到。但现在我需要在扫描仪视图中添加一个按钮,以便在我想退出扫描过程时恢复到某个页面。
    • 我怀疑您是否可以在相机视图中添加自定义按钮,因为一旦您进入该视图,一切都由插件控制(并且文档没有显示任何内容)。我可以看到 iOS 的 Cancel 按钮,关于 android 的 IDK。
    • 我也需要在windows中实现。不,android中没有可见的取消按钮。所以我必须在里面包含一个按钮。我在移动应用程序中看到过,其中包含一个按钮,因此必须有一些出路。我会继续努力的。如果您也找到方法,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 2020-11-18
    • 1970-01-01
    相关资源
    最近更新 更多