欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

基于barcodescanner实现Android二维码扫描功能

程序员文章站 2022-08-08 09:59:36
二维码扫描现在成为一种非常常见的app基础功能,附录1是我曾经用过的二维码/条形码扫描开源项目,但是附录1的项目集成和二次定制比较繁琐和麻烦,因此可以发现不少人基于zxin...

二维码扫描现在成为一种非常常见的app基础功能,附录1是我曾经用过的二维码/条形码扫描开源项目,但是附录1的项目集成和二次定制比较繁琐和麻烦,因此可以发现不少人基于zxing做了二次的开发,并贡献出这些项目,发到github上,其中barcodescanner就是这样的项目,barcodescanner的github项目地址: ,barcodescanner简化了zxing的集成和二次定制难度,方便快速集成和开发,并且扫描性能和结果比较稳定,现在给出基于barcodescanner的二维码扫描示例。

第一, 先引入对barcodescanner的引用,需要在build.gradle里面添加依赖:

compile 'me.dm7.barcodescanner:core:1.9'
compile 'me.dm7.barcodescanner:zxing:1.9'

第二, 写布局:

<?xml version="1.0" encoding="utf-8"?>
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent">

 <me.dm7.barcodescanner.zxing.zxingscannerview
 android:id="@+id/scannerview"
 android:layout_width="match_parent"
 android:layout_height="match_parent" />

 <button
 android:id="@+id/light"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignparentbottom="true"
 android:layout_centerhorizontal="true"
 android:text="开/关灯" />

</relativelayout>

第三, 上层java代码:

package zhangphil.mgscanner;

import android.app.activity;
import android.os.bundle;
import android.view.view;
import android.widget.toast;

import com.google.zxing.result;

import me.dm7.barcodescanner.zxing.zxingscannerview;

public class mainactivity extends activity {
 private boolean mflash;
 private zxingscannerview mscannerview;

 private zxingscannerview.resulthandler mresulthandler = new zxingscannerview.resulthandler() {
 @override
 public void handleresult(result result) {
  mscannerview.resumecamerapreview(mresulthandler); //重新进入扫描二维码

  toast.maketext(getapplicationcontext(), "内容=" + result.gettext() + ",格式=" + result.getbarcodeformat().tostring(), toast.length_short).show();
 }
 };

 @override
 public void oncreate(bundle state) {
 super.oncreate(state);
 setcontentview(r.layout.activity_main);

 mscannerview = (zxingscannerview) findviewbyid(r.id.scannerview);
 mscannerview.setresulthandler(mresulthandler);

 findviewbyid(r.id.light).setonclicklistener(new view.onclicklistener() {
  @override
  public void onclick(view view) {
  toggleflash();
  }
 });
 }

 @override
 public void onresume() {
 super.onresume();
 mscannerview.setresulthandler(mresulthandler);
 mscannerview.startcamera();
 }

 @override
 public void onpause() {
 super.onpause();
 mscannerview.stopcamera();
 }

 private void toggleflash() {
 mflash = !mflash;
 mscannerview.setflash(mflash);
 }
}

不要忘记添加相机和闪光灯权限:

<uses-permission android:name="android.permission.camera" />
<uses-permission android:name="android.permission.flashlight" />

代码运行结果如图:

基于barcodescanner实现Android二维码扫描功能

附录:android实现基于zxing快速集成二维码扫描功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。