在开发之前要先下载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. Oracle的外部表
  2. 超级计算机预测2月有雪寒潮,神预测!中国超级计算提前半个月预测了美国的寒潮...
  3. parameter与define 区别
  4. oracle 使从表中随机取出一行记录数据
  5. 左值和左值引用、右值和右值引用
  6. HDU2650(高斯整数环)
  7. PowerDesigner(五)-概念数据模型(CDM生成LDM,PDM和OOM)
  8. 遭做空后又被律所调查 贾跃亭的FF上市不到3个月股价已近腰斩
  9. web前端基础(06css)
  10. day2_windows下zip安装wamp环境
  11. WIN10 VMWARE 虚拟机安装WIN10 64系统
  12. linux中可以使用-af含义,关于Windows中的linux:AF_UNIX
  13. 股票和数据分析--加权平均数
  14. 网络计算机和弱电,弱电工程师和网络工程师的区别,你知道吗?
  15. linux壁纸图片不让复制,一些不常见到的LINUX壁纸,老规矩只提供给红联的兄弟姐妹...
  16. deepin 更新企业微信最新版本方法
  17. 服务器审计资质证书,利用ACS服务器实现用户的认证、授权和审计
  18. 报错Exception opening port “18080“ (port may be in use), cause: “java.net.BindException: Address alrea
  19. 对自己未来生活的一些规划
  20. java复习之tomcat配置详解

热门文章

  1. 十月英语——ready for it?
  2. Eigen官方文档中文翻译——切片和索引——Eigen: Slicing and Indexing
  3. vue+element-ui 实现table单元格点击编辑,并且按上下键移动
  4. android截包方法
  5. linux下系统调用接口,LINUX系统调用
  6. vi 和vim 的区别
  7. oracle查看cpu内存,查看Oracle CPU情况
  8. 解决com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link
  9. Centos7篇---Centos7 卸载nvidia驱动和CUDA toolkit
  10. 如何在开发者生态系统的各类资源中修改您的主邮箱(Primary Email Address)?