最近闲得无趣,于是写点技术知识放到博客上,希望以后对自己有所帮助。随着时代的发展,二维码已经悄悄的被时代所认可,不管是个人或者公司,二维码受到很多人的认可,如今在互联网上二维码几乎随处可见。废话不多说,下面进入主题。

首先展示一下效果图:

 http://

        本应用引入的是android提供的zxing2.2的核心包zxing-2.2-core.jar;

步骤一:将下载的jar包文件复制到libs文件夹下,myeclipse会自动加载

步骤二:编写界面的布局文件main.xml,代码如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/tips_tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_alignParentTop="true"android:layout_margin="15dp"android:textColor="#000000"android:textSize="20sp"android:text="@string/tips" /><EditText android:id="@+id/input_et"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="@string/input_content"android:layout_margin="10dp"android:layout_below="@id/tips_tv"/><LinearLayoutandroid:id="@+id/select_btn"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/input_et"android:layout_margin="15dp"android:orientation="horizontal"><Button android:id="@+id/btn_one"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1.0"android:text="@string/one_code"/><Button android:id="@+id/btn_two"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1.0"android:text="@string/two_code"/></LinearLayout><ImageView android:id="@+id/qr_code"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:src="@drawable/ic_launcher"android:contentDescription="@string/image_content_description"android:layout_below="@id/select_btn"android:layout_margin="20dp"/>
</RelativeLayout>

效果图:

步骤三:编写布局文件对应的主Activity,MainActivity.java文件,代码如下:

package com.zyz.qrcodetest;import com.google.zxing.BarcodeFormat;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
/*** 思路:* 1、初始化界面和控件* 2、添加按钮监听事件* 3、用户输入合法性验证* 4、调用生成条形码或二维码的方法* 5、界面显示生成的图片*/
public class MainActivity extends Activity {//用户输入的需要转换的字符输入框private EditText inputET;//条形码和二维码按钮private Button btnOne,btnTwo;//生成的条形码或二维码的图片private ImageView qrCode;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//设置界面无标题requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.main);//初始化界面,实例化对象initView();//给相应的控件添加监听器addListener();}private void addListener() {/*** 设置条形码按钮监听器*/btnOne.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//该变量用于保存用户输入的字符串String url = inputET.getText().toString().trim();//判断用户输入的字符串是否包含中文for(int i = 0;i<url.length();i++){int c = url.charAt(i);//若包含中文,提示用户条形码不能包含中文,同时结束该操作if(19968<=c && c<40623){//提示用户Toast.makeText(MainActivity.this, "不能包含中文", Toast.LENGTH_SHORT).show();return;}}//生成的条形码图片Bitmap image = null;try {//当用户输入的url不为空时if(url != null && !"".equals(url)){//将用户输入的url作为参数,调用创建条形码的方法,生成条形码图片image = createOneQRCode(url);}} catch (Exception e) {e.printStackTrace();}if(image != null){//将生成的条形码显示到界面的图片中qrCode.setImageBitmap(image);}}});/*** 设置二维码按钮的监听器*/btnTwo.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//用户输入的需要生成二维码的url字符串String url = inputET.getText().toString().trim();//声明生成的二维码图片Bitmap image = null;try {//当用户输入的字符串url不为空时if(url != null && !"".equals(url)){//将用户输入的url作为参数,调用创建二维码的方法image = createTwoQRCode(url);}} catch (Exception e) {e.printStackTrace();}//若生成的二维码不为空,即生成二维码成功if(image != null){//将生成的二维码显示给用户qrCode.setImageBitmap(image);}}});}/*** 初始化界面和控件*/private void initView() {inputET = (EditText)findViewById(R.id.input_et);btnOne = (Button)findViewById(R.id.btn_one);btnTwo = (Button)findViewById(R.id.btn_two);qrCode = (ImageView)findViewById(R.id.qr_code);}/*** 创建条形码的方法* @return* @throws Exception */public Bitmap createOneQRCode(String content) throws Exception {// 生成一维条码,编码时指定大小,不要生成了图片以后再进行缩放,这样会模糊导致识别失败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;}}}//根据颜色数组来创建位图/*** 此函数创建位图的过程可以简单概括为为:更加width和height创建空位图,* 然后用指定的颜色数组colors来从左到右从上至下一次填充颜色。* config是一个枚举,可以用它来指定位图“质量”。*/Bitmap bm = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);// 通过像素数组生成bitmap,具体参考apibm.setPixels(pixels, 0, width, 0, 0, width, height);//将生成的条形码返回给调用者return bm;}/*** 创建二维码的方法* @return* @throws Exception */public Bitmap createTwoQRCode(String content) throws Exception {// 生成二维码,编码时指定大小,不要生成了图片以后再进行缩放,这样会模糊导致识别失败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;}}}//根据颜色数组来创建位图/*** 此函数创建位图的过程可以简单概括为为:更加width和height创建空位图,* 然后用指定的颜色数组colors来从左到右从上至下一次填充颜色。* config是一个枚举,可以用它来指定位图“质量”。*/Bitmap bm = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);// 通过像素数组生成bitmap,具体参考apibm.setPixels(pixels, 0, width, 0, 0, width, height);//将生成的条形码返回给调用者return bm;}/*** 重写创建菜单项方法*/@Overridepublic boolean onCreateOptionsMenu(Menu menu) {//添加一个退出的菜单项menu.add(0, 0, 0, "退出");return super.onCreateOptionsMenu(menu);}/*** 重写菜单项点击事件处理方法*/@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case 0://结束退出this.finish();break;}return super.onOptionsItemSelected(item);}
}

至此程序基本完成,下面是strings.xml文件过得内容:

<?xml version="1.0" encoding="utf-8"?>
<resources><string name="app_name">QRCodeTest</string><string name="action_settings">Settings</string><string name="tips">请输入你要生成的内容:</string><string name="input_content">输入你需要转换的内容</string><string name="one_code">一维码</string><string name="two_code">二维码</string><string name="image_content_description">生成的图片</string>
</resources>

步骤四:测试

至此,本文章结束。

碎步二:zxing核心包生成条形码和二维码相关推荐

  1. C# 利用ZXing.Net来生成条形码和二维码

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

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

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

  3. 用ZXing 生成条形码和二维码图片

    关于ZXing 就不用多介绍了,本问主要介绍如何使用ZXing 生成条形码和二维码的图片. Release 版本的dll下载地址:http://zxingnet.codeplex.com/ 下载完成后 ...

  4. JAVA使用barcode4j生成条形码和二维码图片以及带logo的二维码,验证码图片

    二维码 1.Maven引入barcode4j依赖 <!-- 条形码生成 --><dependency><groupId>net.sf.barcode4j</g ...

  5. ZXing生成条形码、二维码、带logo二维码

    采用的是开源的ZXing,Maven配置如下,jar包下载地址,自己选择版本下载,顺便推荐下Maven Repository <!-- https://mvnrepository.com/art ...

  6. Java分别使用zxing及qrcode-plugin生成各种样式二维码

    二维码 二维条形码能够在横向和纵向两个方位同时表达信息,因此能在很小的面积内表达大量的信息. 二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动 ...

  7. java生成条形码和二维码

    文章目录 MAVEN配置 生成条形码 生成二维码 使用的包 zxing和 barcode4j. MAVEN配置 <project xmlns="http://maven.apache. ...

  8. 使用js生成条形码以及二维码

    一.用js生成条形码这种业务场景不是很常见的,最近刚好又接到这种需求 Google一下,发现github还真有这方面的轮子,感谢github,省去了我们很多造轮子的过程, 好了言归正传,首先引入jsb ...

  9. vue生成条形码和二维码并打印

    文章目录 前言 一.生成条形码 二.生成二维码 三.效果图 四.打印 前言 最近有一个需求,需要将产品信息生成标签,每个信息生成一个条形码,拿到所有数据生成二维码,最后打印标签. 一.生成条形码 使用 ...

最新文章

  1. 全球UML模型共享设计下载中心--www.euml.org上线
  2. Python3中Pillow(PIL)介绍
  3. JavaScript 四. Math对象的属性和方法
  4. linux下配置DHCP中继代理
  5. 修改FTP密码的三种方法
  6. 从外网 SSH 进局域网,反向代理+正向代理解决方案
  7. storm和vgj vgj_VGJ改名J.Storm专注北美赛区 收编新队
  8. php上传文件插件怎么用,使用jquery-fileupload上传插件
  9. 计算机视觉之语义分割
  10. 操作系统实验·动态分区分配算法
  11. IT之路,从迷茫“愤青”到团队项目经理,他是如何一步步走出来的?
  12. 关于 HTTP 长连接
  13. win10怎样更改系统字体_掌阅F1系统设置及字体更改、水墨屏阅读软件、打卡必备软件...
  14. HDU 5857 Median (推导)
  15. 在ubuntu 的QT中不能使用搜狗输入法
  16. A Survey on Deep Learning Techniques for Stereo-based Depth Estimation论文阅读
  17. 阿里那些吊炸天的开源工具,你知道几个?
  18. ausu-fx80-efi黑苹果10.15.7
  19. 【plotly】ImportError: The plotly.plotly module is deprecated, please install the chart-studio package
  20. uniapp详细介绍

热门文章

  1. python中的pip更新详细方法
  2. 纳米技术及纳米二氧化钛在水处理和废水回收中的应用
  3. 如何让2007Office兼容低版本的文档?
  4. docker系列--1.docker基础--1.4.启动时挂载数据卷-v
  5. 华强LED网闪耀2017广州光亚展,更多精彩服务等你来
  6. 一文读懂HTML微数据
  7. 005-PS基础学习笔记记录-持续更新
  8. 激光雷达lidar知识点滴
  9. Springboot输出PDF文件
  10. C#调用存储过程的类