二维码(android)

我们都知道一般的二微码都是以不同形式显示有的是登入,有的是网页,其实二维码只是一个字符串。到这里我们就有一个疑问那二维码是这样判断是网站或者是登入功能的呢?

其实这些判断部分,二维码生成器早就给你完成了,我们只需导入一个core-3.2.1.jar包就行。那接下来我们来做一个简单的小案例,进一步了解二维码。

一、新建项目

1、我们建一个名为"weima"的项目。

2、在该项目libs下导入一个core-3.2.1.jar包(注:下载地址:http://pan.baidu.com/s/1i5FiYXZ),你也可以在百度搜索。

3、我们都发现常见的二维码中间有个小图片,所以我们先下载一张图片放入res下的drawable—hdpi处。

                    

二、布局文件

1、首先我们添加一个EditText输入框和一个Button按钮,一个ImageView控件用来显示二维码的图标。

2、当我们在输入框输入完数字或网址时,点击Button按钮后,就会在ImageView控件生成一个二维码。

3、当我们添加EditText,可能由于版本问题会出现无法点击界面,以下问题。

4、EditText由于版本问题所以要将版本调到19,调版本的在右上角安卓机器人图标处。

activity_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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.weima.MainActivity" >

     <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="38dp"
        android:layout_marginTop="33dp"
        android:ems="10" >

        <requestFocus />
    </EditText>

   <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/editText1"
        android:layout_below="@+id/editText1"
        android:layout_marginRight="20dp"
        android:layout_marginTop="22dp"
        android:text="Button" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/editText1"
        android:layout_below="@+id/button1"
        android:layout_marginLeft="14dp"
        android:layout_marginTop="47dp" />

</RelativeLayout>

三、MainActivity的代码

MainActivity.java文件:

public class MainActivity extends Activity {

    private EditText ent;
    private Button btn;
    private ImageView img;
    private static final int IMAGE_HALFWIDTH = 35;//图片宽度值大小
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ent=(EditText)findViewById(R.id.editText1);
        img=(ImageView)findViewById(R.id.imageView1);
        btn=(Button)findViewById(R.id.button1);
        btn.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //取出字符串
                String entText=ent.getText().toString();
                Bitmap log=BitmapFactory.decodeResource(getResources(), R.drawable.weixintubiao);

                try {
                    Bitmap bm=createCode(entText,log,BarcodeFormat.QR_CODE);
                    img.setImageBitmap(bm);
                } catch (WriterException e) {
                    e.printStackTrace();
                }
            }});
    }

    public Bitmap createCode(String string,Bitmap mBitmap, BarcodeFormat format)throws WriterException
    {

        //Matrix,中文里叫矩阵,在图像处理方面,主要是用于平面的缩放、平移、旋转等操作。
        Matrix mat=new Matrix();
        float imgX=(float)2*IMAGE_HALFWIDTH/mBitmap.getWidth();
        float imgY=(float)2*IMAGE_HALFWIDTH/mBitmap.getHeight();
        mat.setScale(imgX,imgY);//设置缩放信息
        //将logo图片按martix设置的信息缩放
        mBitmap = Bitmap.createBitmap(mBitmap, 0, 0,mBitmap.getWidth(), mBitmap.getHeight(), mat, false);
        MultiFormatWriter writer=new MultiFormatWriter();
        Hashtable htable=new Hashtable();
        htable.put(EncodeHintType.CHARACTER_SET, "UTF-8");//设置字符编码
        //生成二维码矩阵信息
        BitMatrix matrix = writer.encode(string, format, 800, 800, htable);
        int width=matrix.getWidth();//矩阵宽度
        int height=matrix.getHeight();//矩阵高度
        int matW=width/2;
        int matH=height/2;
        int[] pixels = new int[width * height];//定义数组长度为矩阵高度*矩阵宽度,用于记录矩阵中像素信息
        for(int y=0;y<height;y++){//从行开始迭代矩阵
        for(int x=0;x<width;x++)//迭代列
        {
            if (x > matW - IMAGE_HALFWIDTH && x < matW + IMAGE_HALFWIDTH && y > matH - IMAGE_HALFWIDTH && y < matH + IMAGE_HALFWIDTH) {
                //该位置用于存放图片信息
                //记录图片每个像素信息
                pixels[y * width + x] = mBitmap.getPixel(x - matW+ IMAGE_HALFWIDTH, y - matH + IMAGE_HALFWIDTH);
            }
            else {
                if (matrix.get(x, y)) {
                    //如果有黑块点,记录信息
                    pixels[y * width + x] = 0xff000000;//记录黑块信息
                }
            }
        }
    }
        Bitmap bitmap = Bitmap.createBitmap(width, height,Bitmap.Config.ARGB_8888);
        // 通过像素数组生成bitmap
        bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
        return bitmap;
    }

}

1、首先我们定义三个控件变量,通过R文件找到控件ID进行相关的操作,为Button控件添加的相关的onClick点击事件。

2、通过调用系统的Bitmap类对来对图片进行相关的操作。

3、通过createCode生成二维码并嵌入图标。

最终效果图:

时间: 2024-12-11 14:46:31

二维码(android)的相关文章

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

相关资料: 第三方资料太大没法写在博文上,请下载CSDN的程序包. 程序包下载: 过几天,刚上传的包,都没有办法显示. 注意事项: 如果只加了Lib,然没有改AndroidManifest.xml,App在呼叫BarCode时会ANR没反应.开始可能没有官方的classes.dex,但如果发现编译出错后,请再检查一下.TMessageManager须加System.Messaging单元. 使用DelphiXE7加入JavaLibrary后,呼叫Zxing相机1.新建一个DelphiXE工程,双

Android之二维码的扫描与生成

今天,来学习使用怎么实现二维码的扫一扫和二维码的生成. 要想实现二维码的扫一扫与二维码的生成,就得必须了解二维码的特征. QRcode: QRCode简介: QRCode全称Quick Response Code. 通过在一个矩形区域内使用黑白像素来进行编码. 高纠错性.高可用性.高识别性. ZXing简介: ZXing是一个开放源码的,用java实现的多种格式为1D/2D条码图形处理库,它包含了联系到其他语言的端口. ZXing可以实现使用手机的内置的摄像头完成条形码的扫描与解码. ZXing

二维码生成和扫描

下载类库https://yunpan.cn/cBAZaMg5t2BXH  访问密码 5a55 1.项目外层的settings.gradle 中添加 include ':App',':libzxing' 2.libzxing的build.gradle中修改成和自己app相同的版本 compileSdkVersion 23buildToolsVersion "23.0.3" defaultConfig { minSdkVersion 15 targetSdkVersion 23 3.在 b

使用ZXing扫描二维码和生成二维码

二维码在APP中的使用越来越多,于是就是找了相关的资料写了一个二维码扫描和生成二维码的Demo. 本Demo使用了第三方的ZXing库.github的地址: Zxing AndroidStudio中的引用: File---New---import  module导入ZXing的第三方库然后选中项目按F4, 点击加号选择File dependency将ZXing库导入. 接下来就开始写布局文件 activity_main.xml <?xml version="1.0" encodi

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

ZXing是谷歌的一个开源库.能够用来生成二维码.扫描二维码.本文所介绍的是第一部分. 首先上效果图: ZXing相关各种文件官方下载地址:https://github.com/zxing/zxing/releases 或者在这里下载(仅仅有本项目所用的jar包,版本:3.2.0):链接: http://pan.baidu.com/s/1hq3s5EW password: mvg7 1.生成二维码的工具类 /** * 二维码生成工具类 */ public class QRCodeUtil { /

Android二维码之创建

1.Android 有自带的jar包可以生成二维码core-3.0.0.jar,其中的com.google.zxing包 2.写一个二维码生成的工具类,网上搜的话应该一大堆. 1 package com.example.administrator.twocodedemo; 2 3 import android.content.Context; 4 import android.graphics.Bitmap; 5 import android.graphics.Bitmap.Config; 6

完美解决Android使用Zxing扫描二维码改成竖屏后,后面的预览画面出现了拉伸,扭曲的情况

完美解决解决Android使用Zxing扫描二维码改成竖屏后,后面的预览画面出现了拉伸,扭曲的情况 第一步:找到com.zxing.camera包下的CameraConfigurationManager.java文件中的void initFromCameraParameters(Camera camera)方法 第二步:在 Log.d(TAG, "Screen resolution: " + screenResolution);后加上如下的代码 Point screenResoluti

【转】Android 二维码 生成和识别(附Demo源码)--不错

原文网址:http://www.cnblogs.com/mythou/p/3280023.html 今天讲一下目前移动领域很常用的技术——二维码.现在大街小巷.各大网站都有二维码的踪迹,不管是IOS.Android.WP都有相关支持的软件.之前我就想了解二维码是如何工作,最近因为工作需要使用相关技术,所以做了初步了解.今天主要是讲解如何使用ZXing库,生成和识别二维码.这篇文章实用性为主,理论性不会讲解太多,有兴趣可以自己查看源码. 1.ZXing库介绍 这里简单介绍一下ZXing库.ZXin

Android二维码功能实现,在程序内嵌入ZXing项目

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9526247 最近二维码真是越来越火了,随便电视上.网络上.商场里,到处都是二维码.而内嵌二维码扫描功能的软件也越来越多,QQ.微信.UC浏览器等等应用都可以对着二维码扫一扫,感觉我们自己的应用里不加上二维码扫描功能,都跟不上时代潮流了.所以今天我就将带着大家一起,在我们自己的程序里加入二维码扫描的功能. 不过,二维码功能如果真要做起来还是非常复杂的,从零开始实现不太现实,比较好的

Android开发之扫描二维码开发

原贴地址:http://www.cnblogs.com/Fndroid/p/5540688.html 二维码其实有很多种,但是我们常见的微信使用的是一种叫做QRCode的二维码,像下面这样的,可以放心的扫,这只是我的博客主页链接啦: 关于QR码编码的二维码,我们要知道几个特点: 1. 扫描时可以从各个角度去扫,也就是旋转多少度都没关系,不信吗?下次去肯德基买单试试咯. 2. 二维码有容错率,容错率越大,生成的二维码也就越复杂,但是越不容易出错,并且,当二维码被遮挡的时候也越容易扫描出来.这里我上