新建项目

布局截图如下(一个输入框,一个按钮,一个imageview),输入想要的东西(文字,数字,网站链接等)然后点击按钮生成二维码,然后可以扫描识别。

首先需要一个谷歌的一个jar包

activity的代码

  1. private EditText et1;
  2. private Button btn1;
  3. private ImageView iv1;
  4.  
  5. private static final int IMAGE_HALFWIDTH = 35;//图片宽度值大小

  

找到输入框,和按钮,imageview

  1. et1 = (EditText)findViewById(R.id.editText1);
  2. btn1 = (Button)findViewById(R.id.button1);
  3. iv1 = (ImageView)findViewById(R.id.imageView1);

  按钮点击事件

  1. btn1.setOnClickListener(new OnClickListener() {
  2.  
  3. @Override
  4. public void onClick(View v) {
  5. // TODO Auto-generated method stub
  6. String toMakePic_string = et1.getText().toString().trim();
  7. Bitmap logo= BitmapFactory.decodeResource(getResources(),R.drawable._netcfg);
  8.  
  9. try {
  10. Bitmap bm=createCode(toMakePic_string,logo,BarcodeFormat.QR_CODE); //一个方法在下面
  11. iv1.setImageBitmap(bm);
  12. } catch (WriterException e) {
  13. e.printStackTrace();
  14. }
  15. }
  16. });

  

  1. createCode方法 返回bitmap
  1. public Bitmap createCode(String string,Bitmap mBitmap, BarcodeFormat format)throws WriterException {
  2. //Matrix,中文里叫矩阵,在图像处理方面,主要是用于平面的缩放、平移、旋转等操作。
  3. Matrix m = new Matrix();
  4. float sx = (float) 2 * IMAGE_HALFWIDTH / mBitmap.getWidth();
  5. float sy = (float) 2 * IMAGE_HALFWIDTH / mBitmap.getHeight();
  6. m.setScale(sx, sy);//设置缩放信息
  7. //将logo图片按martix设置的信息缩放
  8. mBitmap = Bitmap.createBitmap(mBitmap, 0, 0,mBitmap.getWidth(), mBitmap.getHeight(), m, false);
  9. MultiFormatWriter writer = new MultiFormatWriter();
  10. Hashtable hst = new Hashtable();
  11. hst.put(EncodeHintType.CHARACTER_SET, "UTF-8");//设置字符编码
  12. //生成二维码矩阵信息
  13. BitMatrix matrix = writer.encode(string, format, 800, 800, hst);
  14. int width = matrix.getWidth();//矩阵高度
  15. int height = matrix.getHeight();//矩阵宽度
  16. int halfW = width / 2;
  17. int halfH = height / 2;
  18. int[] pixels = new int[width * height];//定义数组长度为矩阵高度*矩阵宽度,用于记录矩阵中像素信息
  19. for (int y = 0; y < height; y++) {//从行开始迭代矩阵
  20. for (int x = 0; x < width; x++) {//迭代列
  21. if (x > halfW - IMAGE_HALFWIDTH && x < halfW + IMAGE_HALFWIDTH && y > halfH - IMAGE_HALFWIDTH && y < halfH + IMAGE_HALFWIDTH) {
  22. //该位置用于存放图片信息
  23. //记录图片每个像素信息
  24. pixels[y * width + x] = mBitmap.getPixel(x - halfW+ IMAGE_HALFWIDTH, y - halfH + IMAGE_HALFWIDTH);
  25. }
  26. else {
  27. if (matrix.get(x, y)) {
  28. //如果有黑块点,记录信息
  29. pixels[y * width + x] = 0xff000000;//记录黑块信息
  30. }
  31. }
  32. }
  33. }
  34. Bitmap bitmap = Bitmap.createBitmap(width, height,Bitmap.Config.ARGB_8888);
  35. // 通过像素数组生成bitmap
  36. bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
  37. return bitmap;
  38. }

  

完成截图(写什么都可以)【】

android生成二维码的更多相关文章

  1. Android生成二维码--保存和分享二维码图片

    之前写过生成自定义二维码的两篇文章:<Android生成自定义二维码><Android生成二维码–拍照或从相册选取图片>,下面就介绍一下Android应用内如何保存以及分享二维 ...

  2. Android生成二维码--拍照或从相册选取图片

    拍照或从相册选择图片是我们日常开发中经常使用到的,可以说是必须掌握的东西.上一篇我介绍了如何生成自定义二维码<Android生成自定义二维码>,其中logo和代替黑色色块的图片都是写死的, ...

  3. Android zxing 解析二维码,生成二维码极简demo

    zxing 官方的代码很多,看起来很费劲,此demo只抽取了有用的部分,实现了相机预览解码,解析本地二维码,生成二维码三个功能. 简化后的结构如下: 废话少说直接上代码: BaseDecodeHand ...

  4. Android平台二维码之生成,扫描 & 识别

    1.二维码的前世今生 “二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的:在代码编制上巧妙地利 ...

  5. Android实例-实现扫描二维码并生成二维码(XE8+小米5)

    相关资料: 第三方资料太大没法写在博文上,请下载CSDN的程序包. 程序包下载: http://download.csdn.net/detail/zhujianqiangqq/9657186 注意事项 ...

  6. 玩转Android之二维码生成与识别

    二维码,我们也称作QRCode,QR表示quick response即快速响应,在很多App中我们都能见到二维码的身影,最常见的莫过于微信了.那么今天我们就来看看怎么样在我们自己的App中集成二维码的 ...

  7. Android二维码开源项目zxing用例简化和生成二维码、条形码

    上一篇讲到:Android二维码开源项目zxing编译,编译出来后有一个自带的測试程序:CaptureActivity比較复杂,我仅仅要是把一些不用的东西去掉,用看起来更方便,二维码和条形码的流行性自 ...

  8. android 使用开源库zxing生成二维码,扫描二维码【转】

    转自:http://blog.csdn.net/qq_16064871/article/details/52422723 zxing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库 ...

  9. Android:使用ZXing生成二维码(支持加入Logo图案)

    ZXing是谷歌的一个开源库.能够用来生成二维码.扫描二维码.本文所介绍的是第一部分. 首先上效果图: ZXing相关各种文件官方下载地址:https://github.com/zxing/zxing ...

随机推荐

  1. QT QString转char*,char*转QString;简单明了,看代码。

    //原始QStringQString qs = QString::fromLocal8Bit("我的");std::string strQs = qs.toStdString(); ...

  2. v880 debug

    zte v880手机,ubuntu中配置真机调试, 1.开启手机调试模式2.增加/etc/udev/rules.d/51-android.rules. 内容如下:SUBSYSTEM=="us ...

  3. 原生javascript操作class-元素查找-元素是否存在-添加class-移除class

    //判断元素是否有classfunction hasClass(ele, cls) { return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\ ...

  4. PHP 面向对对象基础(接口,类)

    介绍PHP面向对象的基础知识 1. 接口的定义interface ,类定义class,类支持abstract和final修饰符,abstract修饰为抽象类,抽象类 不支持直接实例化,final修饰的 ...

  5. 国内国外最好的java开发论坛及站点 [转]

    国内: www.chinajavaworld.com -论坛人很多,高手也多,不过好像都在潜水    www.cn-java.com -也很不错,文章很好,但是就是商业性浓了点.    www.chi ...

  6. OnClose()和 OnDestroy()

    OnClose()和 OnDestroy() 基于对话框的MFC程序,发现每次程序退出时,托盘的小图标不能自动消失,鼠标移上去之后才能消失,比较不爽. 后来发现我删除这个图标的代码是在自己重写的OnC ...

  7. ProfessionalKnowledgeArchitecture

  8. iOS: 学习笔记, 用代码驱动自动布局实例

    iOS自动布局是设置iOS界面的利器. 本实例展示了如何使用自动布局语言设置水平布局, 垂直布局 1. 创建空白iOS项目 2. 添加一个控制器类, 修改YYAppDelegate.m文件 #impo ...

  9. debug(fmt,args...)调试

    1.定义宏(debug.h) #ifndef __DEBUG__H #define __DEBUG__H #include <stdio.h> #ifdef DEBUG #define d ...

  10. mvc action 参数绑定——值提供器【学习笔记】

    每次http请求的各种数据(表单数据.url的数据.路由数据等等)都保存在不同的IValueProvider接口的实现类中. 而IValueProvider接口的实现类是通过ValueProvider ...