Andoid开发中生成二维码

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

第一步:

        确定我们二维码的位置,即是在我们应用的哪个页面的哪个位置,简单讲就是用一个ImageView把二维码展示出来,我们就把二维码展示在下面布局activity_main.xml中的ImageView上:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><LinearLayout android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="horizontal"android:gravity="center_horizontal"><ImageViewandroid:id="@+id/imag"android:layout_width="100dp"android:layout_height="100dp"android:scaleType="fitXY"android:src="@drawable/ic_launcher"android:layout_gravity="center"></ImageView></LinearLayout></LinearLayout>

第二步:定义一个生成二维码的工具类:QRUtils.java  (注意:定义之前不要忘记在项目中要导入ZXing相关的jar包)

core.jar这个包  jar包下载地址  最近使用

182940_X15q_2407682.jpg

package com.utils;import java.util.EnumMap;
import java.util.Map;import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.text.TextUtils;import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;public class QRUtils {private static final int WHITE = 0xFFFFFFFF;private static final int BLACK = 0xFF000000;/*** 将字符串按照指定大小生成二维码图片*/public static Bitmap encodeToQR(String contentsToEncode, int dimension)throws Exception {if (TextUtils.isEmpty(contentsToEncode))return null;BarcodeFormat format = BarcodeFormat.QR_CODE;Map hints = new EnumMap(EncodeHintType.class);hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");BitMatrix result = new MultiFormatWriter().encode(contentsToEncode,format, dimension, dimension, hints);int width = result.getWidth();int height = result.getHeight();int[] pixels = new int[width * height];for (int y = 0; y < height; y++) {int offset = y * width;for (int x = 0; x < width; x++) {pixels[offset + x] = result.get(x, y) ? BLACK : WHITE;}}Bitmap bitmap = Bitmap.createBitmap(width, height,Bitmap.Config.ARGB_8888);bitmap.setPixels(pixels, 0, width, 0, 0, width, height);return bitmap;}public static Bitmap encodeToQRWidth(String contentsToEncode, int dimension)throws Exception {if (TextUtils.isEmpty(contentsToEncode))return null;BarcodeFormat format = BarcodeFormat.QR_CODE;@SuppressWarnings("unchecked")Map hints = new EnumMap(EncodeHintType.class);hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");BitMatrix result = new MultiFormatWriter().encode(contentsToEncode,format, dimension, dimension, hints);int width = result.getWidth();int height = result.getHeight();boolean isFirstBlack = true;int startX = 0;int startY = 0;int[] pixels = new int[width * height];for (int y = 0; y < height; y++) {int offset = y * width;for (int x = 0; x < width; x++) {pixels[offset + x] = result.get(x, y) ? BLACK : WHITE;if (result.get(x, y) && isFirstBlack) {isFirstBlack = false;startX = x;startY = y;}}}Bitmap bitmap = Bitmap.createBitmap(width, height,Bitmap.Config.ARGB_8888);bitmap.setPixels(pixels, 0, width, 0, 0, width, height);Matrix m = new Matrix();float sx = (width + 2f * startX) / width;float sy = (height + 2f * startY) / height;m.postScale(sx, sy);Bitmap qrBitmap = Bitmap.createBitmap(width, height,Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(qrBitmap);canvas.translate(-startX, -startY);Paint paint = new Paint();paint.setAntiAlias(true);canvas.drawBitmap(bitmap, m, paint);canvas.save();return qrBitmap;}}

第三步:在我们既我们的主Activity:MainActivity.java

package com.action;import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.Toast;
import com.utils.*;public class MainActivity extends Activity {private ImageView imag;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initViews();}protected void initViews() {imag = (ImageView) findViewById(R.id.imag);DisplayMetrics outMetrics = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(outMetrics);int w = outMetrics.widthPixels * 8 / 11;// 设置宽度ViewGroup.LayoutParams layoutParams = imag.getLayoutParams();layoutParams.height = layoutParams.width = w;// 设置高度imag.setLayoutParams(layoutParams);try {Bitmap bitmap = QRUtils.encodeToQRWidth("http://write.blog.csdn.net/", w);// 要生成二维码的内容,我这就是一个网址imag.setImageBitmap(bitmap);} catch (Exception e) {e.printStackTrace();Toast.makeText(this, "生成二维码失败", Toast.LENGTH_SHORT);}}}

三步完成我们的二维码生成,是不是很简单!!

转载于:https://my.oschina.net/symahll/blog/482474

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux用户及权限操作

用户和用户组 说明&#xff1a;在Linux中只有超级管理员权限才能对用户和用户组进行设置&#xff0c;其他的用户一律没有权限设置&#xff1a; 用户管理 语法&#xff1a;#useradd 用户名 添加一个新用户 注&#xff1…

第6章 服务模式 Service Interface(服务接口)

Service Interface&#xff08;服务接口&#xff09;上下文您正在设计企业应用程序&#xff0c;并且需要能够通过网络使用其部分功能。此功能需要能够被各类系统使用&#xff0c;因此互操作性是设计的重要方面。除互操作性之外&#xff0c;可能还需要支持不同的通信协议&#x…

linux目录规范及简单说明

Linux系统目录结构以及简单说明 linux目录图&#xff1a; / root --- 启动Linux时使用的一些核心文件。如操作系统内核、引导程序Grub等。home --- 存储普通用户的个人文件 ftp --- 用户所有服务httpdsambauser1user2 bin --- 系统启动时需要的执行文件&#xff08;二进制&…

Flask中的session操作

https://www.cnblogs.com/notzy/p/9187304.html 一、配置SECRET_KEY 因为flask的session是通过加密之后放到了cookie中。所以有加密就有密钥用于解密&#xff0c;所以&#xff0c;只要用到了flask的session模块就一定要配置“SECRET_KEY”这个全局宏。一般设置为24位的字符。…

逆向Android软件的步骤

2019独角兽企业重金招聘Python工程师标准>>> 逆向Android软件的步骤&#xff1a; 首先使用反编译的工具对反编译&#xff0c;然后阅读反汇编代码&#xff0c;如果有必要还会对其进行动态调试&#xff0c;找到突破口后注入或直接修改反汇编代码&#xff0c;最后重新编…

Flask Sessions会话

与Cookie不同&#xff0c;会话数据存储在服务器上。会话是客户端登录到服务器并注销的时间间隔。需要在此会话中进行的数据存储在服务器上的临时目录中。 与每个客户端的会话分配一个会话ID。会话数据存储在cookie顶部&#xff0c;服务器以加密方式签名。对于这种加密&#xf…

linux rsync 远程同步

rsync(Remote Sync) 是一个Unix/linux系统下的文件同步和传输工具。Rsync通过“rsync算法”提供了一个客户机和远程文件服务器的文件同步的快速方法。工作机制&#xff1a; 在远程同步任务中&#xff0c;负责发起rsync同步操作的客户机称为发起端&#xff0c;而负责响应来自客…

Windows下使用VisualSVN Server搭建SVN服务器

2019独角兽企业重金招聘Python工程师标准>>> 使用 VisualSVN Server来实现主要的 SVN功能则要比使用原始的 SVN和Apache相配合来实现源代码的 SVN管理简单的多&#xff0c;下面就看看详细的说明。 VisualSVN Server的下载地址如下&#xff0c;是免费的&#xff0c;随…

Aspx 页面生命周期

ASP.NET 页运行时&#xff0c;此页将经历一个生命周期&#xff0c;在生命周期中将执行一系列处理步骤。这些步骤包括初始化、实例化控件、还原和维护状态、运行事件处理程序代码以及进行呈现。了解页的生命周期非常重要&#xff0c;这样就能在合适的生命周期阶段编写代码&#…

Python 练习册,每天一个小程序

Python 练习册&#xff0c;每天一个小程序说明&#xff1a;Python 练习册&#xff0c;每天一个小程序。注&#xff1a;将 Python 换成其他语言&#xff0c;大多数题目也适用不会出现诸如「打印九九乘法表」、「打印水仙花」之类的题目点此链接&#xff0c;会看到每个题目的代码…

不同网段虚拟机,互相访问时的路由配置,附路由知识学习

事情实例&#xff1a; 虚拟主机&#xff1a;192.168.90.247需要访问192.168.91.XX网段的数据库&#xff0c;无法访问。 1、这里要考虑一下添加一个路由&#xff0c;目的地址为192.168.91.XX,掩码为255.255.255.0&#xff0c;网关为如图所示 2、这里添加一个路由为&#xff1a;…

iOS使用自定义字体(添加字体包)

转载请注明出处&#xff01;&#xff01;&#xff01; 首先是最简单也普遍的做法&#xff0c;打包内置字符库文件&#xff1a; 步骤如下&#xff1a; 1.第一步找到你想用的字体的 ttf 格式。加入到你的工程的resouce目录下。 2.在工程的plist中AddRow&#xff0c;“Fonts provi…

TP5:框架下载与安装——1

哪里下载&#xff1f; 一、百度搜索&#xff1a;ThinkPHP5.0完全开发手册 可以在找到安装TP5的介绍&#xff0c;分别有官网下载安装、Composer安装、Git安装三种方式下载 二、下载好文件 这里我们选择了GIT方式安装&#xff0c;要注意的是&#xff0c;要同时下载应用项目和核…

游戏密保卡图片识别

识别主要步骤 1.图像预处理。包括确认图片有效区域&#xff0c;灰度化&#xff0c;二值化。 2.字符分割。即将识别信息最小化。由于密保卡图片文字宽度固定且无粘连&#xff0c;只需要使用固定宽度切割。 3.对分割后的信息提取特征,建立特征库 4.提取特征和特征库样本进行匹配&…

基于visual Studio2013解决C语言竞赛题之0505选数

&#xfeff;&#xfeff;题目解决代码及点评/************************************************************************/ /* 5&#xff0e; 输入N个数到数组中&#xff0c;选出其中最大的数和最小的数&#xff0c;并分别将它们与最前面和最后面的数互换 */ /*************…

TP5:缩短访问路径和路由的使用——2

一、缩短访问路径 1、如图访问该文件路径 没有缩短之前&#xff0c;访问的路径是 http://localhost/zerg_new/public/index.php/api/v1/banner/1 缩短后&#xff0c;访问的路径是 http://z_new.cn/api/v1/banner/1 2、缩短路径步骤 本机apache配置&#xff0c;小编使用的…

10个加速Table Views开发的Tips

2019独角兽企业重金招聘Python工程师标准>>> 本文由CocoaChina译者yake_099&#xff08;博客&#xff09;翻译&#xff0c;作者&#xff1a;David McGraw 原文&#xff1a;10 Actionable Performance Tips To Speed Up Your Table View 在我们开始之前&#xff0c;…

TP5:验证器的封装——5

TP5的独立验证器如图所示&#xff1a; $validate new Validate([name > require|max:25,email > email ]); $data [name > thinkphp,email > thinkphpqq.com ]; if (!$validate->check($data)) {dump($validate->getError()); } 现在我们把验证器的封装…

flask蓝图的使用

flask蓝图的使用 首先&#xff0c;我对蓝图的理解相对通俗&#xff0c;就是觉得蓝图对于视图方法模块化、大项目协同开发过程中的一个很好的工具. 1.下图是我们通常情况下使用的项目组织结构 看一下视图方法: #views.py1 from app import app2 3 4 app.route(/user/index)5 d…

TP5:异常处理封装——3

如果不进过异常封装&#xff0c;如果抛出一异常只会只会上图所示&#xff0c;大部分时候&#xff0c;用户只需要知道Division by zero就够了。 1、首先先建一个类BaseException并继承Exception&#xff0c;这里有三个参数 $code 400; $msg ; $errorCode ;并处理当抛出异常时的…