在开发之前要先下载zxing包对其简化,新建一个android工程,把zxing包中的android和android-code中的文件复制到相应的文件夹里面

其中的libs文件夹里需要zxing包中的core文件编译成.jar放在libs文件中,如果出现swich中的r.id.xx报错吧swich改成if语句,如:

 if (message.what == R.id.decode) {decode((byte[]) message.obj, message.arg1, message.arg2);} else if (message.what == R.id.quit) {running = false;Looper.myLooper().quit();}

然后右键项目选择属性勾选 is library

然后将新建我们的项目,同样右键选择属性add一下刚刚创建的library然后ok

接下来首先要在项目中添加相应的权限

    <uses-permission android:name="android.permission.VIBRATE" /> <!-- 震动权限 --><uses-permission android:name="android.permission.CAMERA" /><uses-feature android:name="android.hardware.camera" /> <!-- 使用照相机权限 --><uses-feature android:name="android.hardware.camera.autofocus" /> <!-- 自动聚焦权限 -->

然后再activity中添加相应的布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/LinearLayout1"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="${relativePackage}.${activityClass}" ><Buttonandroid:id="@+id/btn_scan"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="扫描二维码" /><TextViewandroid:id="@+id/tv_scan"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="word" /><EditTextandroid:id="@+id/input"android:layout_width="fill_parent"android:layout_height="wrap_content"android:hint="请输入要编码的内容"></EditText><Buttonandroid:id="@+id/gen"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="生成二维码" /><Buttonandroid:id="@+id/genone"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="生成一维码" /><ImageViewandroid:id="@+id/imsge"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal" /><TextView android:id="@+id/tv_textone"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"/></LinearLayout>

生成二维码的相关代码,传入要编码的参数,其中的大小也可写成参数传入,这里就不信写

 /** 二维码*/public Bitmap CreateTwoDCode(String content) throws WriterException {// 生成二维矩阵,编码时指定大小,不要生成了图片以后再进行缩放,这样会模糊导致识别失败BitMatrix matrix = new MultiFormatWriter().encode(content,BarcodeFormat.QR_CODE, 300, 300);int width = matrix.getWidth();int height = matrix.getHeight();// 二维矩阵转为一维像素数组,也就是一直横着排了int[] pixels = new int[width * height];for (int y = 0; y < height; y++) {for (int x = 0; x < width; x++) {if (matrix.get(x, y)) {pixels[y * width + x] = 0xff000000;}}}Bitmap bitmap = Bitmap.createBitmap(width, height,Bitmap.Config.ARGB_8888);// 通过像素数组生成bitmap,具体参考apibitmap.setPixels(pixels, 0, width, 0, 0, width, height);return bitmap;}

生成一维码的代码,参数同上

/** 一维码*/public Bitmap CreateOneDCode(String content) throws WriterException {// 生成一维条码,编码时指定大小,不要生成了图片以后再进行缩放,这样会模糊导致识别失败BitMatrix matrix = new MultiFormatWriter().encode(content,BarcodeFormat.CODE_128, 500, 200);int width = matrix.getWidth();int height = matrix.getHeight();int[] pixels = new int[width * height];for (int y = 0; y < height; y++) {for (int x = 0; x < width; x++) {if (matrix.get(x, y)) {pixels[y * width + x] = 0xff000000;}}}Bitmap bitmap = Bitmap.createBitmap(width, height,Bitmap.Config.ARGB_8888);// 通过像素数组生成bitmap,具体参考apibitmap.setPixels(pixels, 0, width, 0, 0, width, height);return bitmap;}

所有代码(记得注册页面)

package com.example.myscan;import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;import com.google.zxing.BarcodeFormat;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.client.android.CaptureActivity;
import com.google.zxing.common.BitMatrix;public class MainActivity extends Activity implements OnClickListener {private Button btn, genone, gen;private TextView tv, textone;private ImageView img;private EditText et;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);gen = (Button) findViewById(R.id.gen);img = (ImageView) findViewById(R.id.imsge);btn = (Button) findViewById(R.id.btn_scan);tv = (TextView) findViewById(R.id.tv_scan);et = (EditText) findViewById(R.id.input);genone = (Button) findViewById(R.id.genone);textone = (TextView) findViewById(R.id.tv_textone);btn.setOnClickListener(this);gen.setOnClickListener(this);genone.setOnClickListener(this);initView();}private void initView() {// TODO Auto-generated method stub}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);if (resultCode == RESULT_OK) {String str = data.getExtras().getString("result");tv.setText(str);}}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubtextone.setText("");switch (v.getId()) {case R.id.btn_scan:Log.i("tag", "--->1");Intent intent = new Intent(MainActivity.this, CaptureActivity.class);Log.i("tag", "--->3");startActivityForResult(intent, 0);Log.i("tag", "--->4");break;case R.id.gen:String str = et.getText().toString();if (str.equals("")) {Toast.makeText(MainActivity.this, "请输入信息", Toast.LENGTH_SHORT).show();} else {try {Bitmap bit = CreateTwoDCode(str);img.setImageBitmap(bit);} catch (WriterException e) {// TODO Auto-generated catch blocke.printStackTrace();}}break;case R.id.genone:String strr = et.getText().toString();if (strr.equals("")) {Toast.makeText(MainActivity.this, "请输入信息", Toast.LENGTH_SHORT).show();} else {try {Bitmap bit = CreateOneDCode(strr);img.setImageBitmap(bit);textone.setText(strr);} catch (WriterException e) {// TODO Auto-generated catch blocke.printStackTrace();}}break;default:break;}}/** 二维码*/public Bitmap CreateTwoDCode(String content) throws WriterException {// 生成二维矩阵,编码时指定大小,不要生成了图片以后再进行缩放,这样会模糊导致识别失败BitMatrix matrix = new MultiFormatWriter().encode(content,BarcodeFormat.QR_CODE, 300, 300);int width = matrix.getWidth();int height = matrix.getHeight();// 二维矩阵转为一维像素数组,也就是一直横着排了int[] pixels = new int[width * height];for (int y = 0; y < height; y++) {for (int x = 0; x < width; x++) {if (matrix.get(x, y)) {pixels[y * width + x] = 0xff000000;}}}Bitmap bitmap = Bitmap.createBitmap(width, height,Bitmap.Config.ARGB_8888);// 通过像素数组生成bitmap,具体参考apibitmap.setPixels(pixels, 0, width, 0, 0, width, height);return bitmap;}/** 一维码*/public Bitmap CreateOneDCode(String content) throws WriterException {// 生成一维条码,编码时指定大小,不要生成了图片以后再进行缩放,这样会模糊导致识别失败BitMatrix matrix = new MultiFormatWriter().encode(content,BarcodeFormat.CODE_128, 500, 200);int width = matrix.getWidth();int height = matrix.getHeight();int[] pixels = new int[width * height];for (int y = 0; y < height; y++) {for (int x = 0; x < width; x++) {if (matrix.get(x, y)) {pixels[y * width + x] = 0xff000000;}}}Bitmap bitmap = Bitmap.createBitmap(width, height,Bitmap.Config.ARGB_8888);// 通过像素数组生成bitmap,具体参考apibitmap.setPixels(pixels, 0, width, 0, 0, width, height);return bitmap;}}

其中实现了一维码和二维码的生成和扫描,其中的条形码还没有加只能输入数字的限制,看效果图(没有扫描的图)

使用zxing包生成和扫描二维码和一维码相关推荐

  1. 生成和扫描二维码(ZXing库)

    生成和扫描二维码(ZXing库) 一.ZXing概述 ZXing是谷歌自己推出的一个开源源码的二维码框架,可以实现使用手机的摄像头完成条形码的扫描和解码. 二.整合ZXing框架 将预先获取的core ...

  2. 只需3个步骤,轻松解决程序员在Java中生成、扫描二维码难题

    条形码包含有关产品或公司的信息,以机器可读的形式直观地表示.条码广泛用于跟踪货物和库存管理.我们可以在 WPF 应用程序中轻松生成各种类型的条码.二维码广泛用于分享重要信息.对于不同的要求,您可能希望 ...

  3. Android 简单直接--无需jar包zing实现生成、扫描二维码

    Zing 导入依赖 生成二维码 扫描二维码 扫描回调 工具类 设置竖屏扫描 不多逼逼,直接上代码 导入依赖 implementation 'com.google.zxing:core:3.3.0' i ...

  4. C#利用ZXing.Net生成条形码,二维码和带Logo的二维码

    本文是利用ZXing.Net在WinForm中生成条形码,二维码的小例子,仅供学习分享使用,如有不足之处,还请指正. 什么是ZXing.Net? ZXing是一个开放源码的,用Java实现的多种格式的 ...

  5. java利用zxing来生成和解析二维码,支持中文

    java在二维码的生成和解析上,网上有些人说如果要解析中文,得去修改工具包的Encoder类中的 static final String DEFAULT_BYTE_MODE_ENCODING = &q ...

  6. 转【微信小程序 四】二维码生成/扫描二维码

    原文:https://blog.csdn.net/xbw12138/article/details/75213274 前端  二维码生成  二维码要求:每分钟刷新一次,模拟了个鸡肋,添加了个按分钟显示 ...

  7. 【微信小程序 四】二维码生成/扫描二维码

    前端 二维码生成 二维码要求:每分钟刷新一次,模拟了个鸡肋,添加了个按分钟显示的时间加在二维码中,起到刷新的作用,在onshow中每次打开界面就会刷新显示 var QR = require(" ...

  8. Android 详解使用 Zxing实现前置摄像头扫描二维码、生成二维码

    本文同步到简书 现在二维码使用越来越广泛了,几乎处处可见,并且 公司相关的项目中几乎全部都和二维码扫描有关,所以总结一下自己的使用心路历程,总觉得要做点什么来记录自己的成长,让自己的成长有迹可循,如果 ...

  9. Android之ZXing扫描二维码以及生成二维码

    Android之ZXing扫描二维码以及生成二维码 ZXIng项目地址:ZXing地址 项目结构 扫描二维码:使用 CaptureActivity类 项目代码: import android.cont ...

最新文章

  1. java接口多实现super_Java 8:自动合成多个接口的默认方法
  2. 红黑树的理解与 Java 实现
  3. ubuntu快捷键收集
  4. 分享:When.js 2.0.0 发布,Promises/A 的实现
  5. CodeForces - 1453E Dog Snacks(树形dp+贪心)
  6. Indent Guides for Visual Studio 代码格式化收缩插件
  7. matplotlib mysql_matplotlib简介
  8. 单例设计模式 优缺点 及 使用场景
  9. lua与python结合_从Python到Lua
  10. 零基础学python-零基础如何开始学习 Python?看完这篇从小白变大牛!
  11. MapOnline在线地图插件,ArcGIS的得力助手
  12. shotcut添加字幕
  13. MaxKey单点登录认证系统微服务架构v3.0.0GA发布
  14. 医疗卫生行业如何做好数字化转型?
  15. POS打印机一些特殊控制
  16. PyTorch模型训练的几个加速技巧
  17. Axure 交互学习1 基础页面跳转、鼠标悬停样式
  18. 大扇区硬盘的出现与分析
  19. 可转债历史最低最高价格统计表
  20. Rockchip3066 修改开机 LOGO 和开机动画

热门文章

  1. 写代码宜工工整整,忌放飞自我|Python代码规范
  2. H3C模拟器LITO 连接 本地网卡
  3. keil5 添加注释说明模板
  4. opencv人脸识别考勤 python_GitHub - lisanshui007/python-opencv: 基于python opencv人脸识别的员工考勤系统...
  5. gopro7怎么回看视频_如何从gopro hero 7恢复已删除的视频(免费技术支持)
  6. 大数据自学要多久?为什么零基础自学大数据那么久?
  7. 一键提取app源码_照片图片转文字提取器下载-照片图片转文字提取器app下载
  8. Google Earth Engine APP——在线计算Landsat 和 sentinel数据的23类植被指数的应用
  9. 【下载】2019考研视频教程大全
  10. 软件技术团队员工能力考核标准和具体实施方案