【问题标题】:Barcode Scanner in ionic 2ionic 2 中的条码扫描器
【发布时间】:2017-08-04 23:58:43
【问题描述】:

我正在尝试使用 ionic2 在 android 手机中使用条形码扫描仪扫描条形码。我是离子的新学习者。我尝试了一些代码,

home.ts

  import { Component } from '@angular/core';

  import { NavController } from 'ionic-angular';
  declare var cordova:any;
  @Component({
  selector: 'page-home',
  templateUrl: 'home.html'
  })
  export class HomePage {

  constructor(public navCtrl: NavController) {

  }

  scan() {
  var me = this;
  if (cordova.plugins.barcodeScanner) {
    cordova.plugins.barcodeScanner.scan((imageData) => {
        alert(imageData.text);

    }, (error) => {
        alert("An error happened -> " + error);         
    });
  }

  }
  }

home.html

  <ion-navbar *navbar>
  <ion-title>
    Home
  </ion-title>
  </ion-navbar>

 <ion-content class="home">
 <button primary (click)="scan()">Scan</button>
 </ion-content>

但我得到一个错误是“找不到变量:Cordova”。

我用过这个插件 -

https://ionicframework.com/docs/v2/native/barcode-scanner/

用于ionic2中的条码扫描器

谢谢你的回答。

【问题讨论】:

  • 进行上述更改后是否仍然出现错误?通过在命令提示符下键入“ionic build android”来构建应用程序。然后在手机上运行apk文件。浏览器出现这个错误是正常的。

标签: angular ionic2 qr-code barcode-scanner


【解决方案1】:

你需要添加:

import { BarcodeScanner } from 'ionic-native';

之后,您可以使用 BarcodeScanner.scan() 方法从条形码或二维码中获取信息。试试这个代码: home.ts

import { Component } from '@angular/core';    
import { NavController } from 'ionic-angular';
import { BarcodeScanner } from 'ionic-native';

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {

  constructor(public navCtrl: NavController) {}

  click() {
    BarcodeScanner.scan()
      .then((result) => {
        alert(
          "We got a barcode\n" +
          "Result: " + result.text + "\n" +
          "Format: " + result.format + "\n" +
          "Cancelled: " + result.cancelled
        )
      })
      .catch((error) => {
        alert(error);
      })
  }
}

home.html

<ion-header>
  <ion-navbar>
    <ion-title>
      Ionic Blank
    </ion-title>
  </ion-navbar>
</ion-header>

<ion-content padding>
  <h1>Scan</h1>
  <button block (click)="click()" color="primary">Scan</button>
</ion-content>

【讨论】:

  • 感谢您的回答。导入后 - import { BarcodeScanner } from 'ionic-native';也有同样的错误
  • 删除带有 declare var cordoba 的行;仅使用对象 BarcodeScan
  • 谢谢。错误已解决,但它显示一个带有“cordova_not_available”的警告框。
  • 您在浏览器中尝试吗?您应该在手机上进行测试,因为这是本机功能。
  • 当您尝试使用 scan() 方法时,甚至删除 cordova.plugin。仅使用 BarcodeScanner.scan()
【解决方案2】:

在文档中,您需要这样做才能将条形码扫描仪与 ionic 2 一起使用

import { BarcodeScanner } from 'ionic-native';

BarcodeScanner.scan().then((barcodeData) => {
    // Success! Barcode data is here
  }, (err) => {
   // An error occurred
});

安装后,需要从ionic-native导入到你的页面中,然后调用它来使用它的功能。

希望对你有帮助:D

【讨论】:

  • 感谢您的回答。导入后 - import { BarcodeScanner } from 'ionic-native';也有同样的错误
【解决方案3】:

要使用条形码扫描仪,您必须添加

import { BarcodeScanner } from 'ionic-native';

并创建一个这样的函数

barcode() {
  BarcodeScanner.scan()
  .then((result) => {
     if (!result.cancelled) {
       alert("Success"+result);
     }
  })
  .catch((err) => {
    alert(err); 
   })
 }

现在您可以在 html 中的任意位置调用 barcode() 函数进行扫描

【讨论】:

  • 感谢您的回复。
【解决方案4】:

1.将插件添加到您的应用中,见下文

离子插件添加phonegap-plugin-barcodescanner

npm install --save @ionic-native/barcode-scanner

2.导入

从 'ionic-native' 导入 { BarcodeScanner };

从“xml2js”导入*为xml2js;

  1. BarcodeScanner.scan().then((barcodeData) => {

变量名,uid;

xml2js.parseString(barcodeData.text,{trim: true}, 函数 (err, 结果){调试器;

name=result.PrintLetterBarcodeData.$.name; uid=result.PrintLetterBarcodeData.$.uid; });

调试器; this.AdharCardName=名称; this.AdharcardUid=uid;
}, (错误) => {

});

【讨论】:

    【解决方案5】:
    How to create perfect Barcode/QR Scanner. let's do it.
    

    首先,安装

    1. ionic cordova 插件添加 phonegap-plugin-barcodescanner
    2. npm install --save @ionic-native/barcode-scanner
    3. npm install @ionic-native/core --save
    4. cordova 平台更新 android

    全部完成..import BarcodeScanner in app.module.ts .like this
    import { BarcodeScanner } from '@ionic-native/barcode-scanner' ;

    提供者:[ 扫码机 ]

    之后,我们必须在您将使用的打字稿文件中声明
    import { BarcodeScanner } from '@ionic-native/barcode-scanner';

    scan(){
          this.barcodeScanner.scan().then((barcodeData) => {
            console.log(JSON.stringify(barcodeData))  
          }, (err) => {  
           //error 
          });
        }
    

    在这种情况下。您可能会遇到这样的错误,
    ERR_FILE_NOT_FOUND (file:///android_asset/www/index.html):
    *Unexpected token ) in main.ts *
    别担心..从命令提示符中删除 android/ios 插件。 并安装它。
    cordova 平台更新 android

    希望新的好。 间谍

    【讨论】:

      【解决方案6】:

      首先导入你的项目:

      $ ionic cordova plugin add phonegap-plugin-barcodescanner
      $ npm install --save @ionic-native/barcode-scanner
      

      组件文件:

      import { Component } from '@angular/core';
      import { NavController } from 'ionic-angular';
      import { BarcodeScanner } from '@ionic-native/barcode-scanner';
      
      @Component({
        selector: 'page-home',
        templateUrl: 'home.html',
        providers: [ BarcodeScanner ]
      })
      export class HomePage {
      
        constructor(
          private barcodeScanner: BarcodeScanner,
          public navCtrl: NavController) {
      
        }
      
        scan() {
         this.barcodeScanner.scan().then((barcodeData) => {
              console.log(JSON.stringify(barcodeData))
            }, (err) => {
             //error
            });
        }
      
      }
      

      【讨论】:

        【解决方案7】:

        1.

        $cordova 插件添加 phonegap-plugin-barcodescanner

        $ npm install --save @ionic-native/barcode-scanner

        2.

        app.module.ts

        import { BarcodeScanner } from '@ionic-native/barcode-scanner';
           @NgModule({
        
           ......
        
           providers: [
             BarcodeScanner,
             {provide: ErrorHandler, useClass: IonicErrorHandler}
           ]
         })
         export class AppModule {}
        

        scanner.ts

         import { Component } from '@angular/core';
         import { NavParams, NavController } from 'ionic-angular';
         import { BarcodeScanner } from '@ionic-native/barcode-scanner';
        
         @Component({
            selector: 'page-contact',
            templateUrl: 'contact.html'
         })
        export class ContactPage {
            constructor( public nacCtrl: NavController,
            public NavParams: NavParams,
            private barcodeScanner: BarcodeScanner) { }
        
          takeScan(){
              this.barcodeScanner.scan().then((barcodeData) => {
              // Success! Barcode data is here
              alert(barcodeData.text);
              console.log("Barcode Format -> " + barcodeData.format);
              console.log("Cancelled -> " + barcodeData.cancelled);
        
           }, (err) => {
              // An error occurred
             console.log("An error happened -> " + err);
           });
         }
        
        }
        

        【讨论】:

          猜你喜欢
          • 2018-10-19
          • 2016-05-08
          • 2020-10-06
          • 1970-01-01
          • 1970-01-01
          • 2012-01-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多