二维码的生成与识别

来源:互联网 发布:python dateutil 编辑:程序博客网 时间:2024/06/04 20:39

二维码QRcode全称Quick Response Code

随着微信时代的到来,二维码逐渐进入了人们的视线,人们使用二维码的地方越来越多,二维码也越来越火。二维码常用于个人名片、商品信息,店铺信息以及企业信息,我们还可以通过扫描二维码加好友,下载软件等等···

    二维码比较有名的二维码第三方库ZXing (谷歌所开源的二维码扫描库,用于在Android、javaSE)

Zxing是谷歌开放源码的,用Java实现的多种格式的1d、2d条码图像处理,它包含联系到其他语言的端口

ZXing可以实现使用手机的内置的摄像头完成条形码扫描和解码

https://github.com/ThePacific/zxing-barcode

但由于谷歌的ZXing开源库功能过于强大,而且比较难以快捷集成到我们的项目中,因此提供一个ZXing经过处理的第三方开源库,方便大家使用。下载地址:https://y


unpan.cn/cPaUIBZE3Npiy  访问密码 b316

使用工具:Android Studio

将libzxing工程导入我们自己的项目,具体步骤如下:

第一步:需要引入libzxing工程    选择菜单:File/new/import module

第二步:将libzxing工程引入到项目中  右键项目选择菜单openmodule settings

           选择app/ dependencies/+加号/Module dependencies,把libzxing选择并添加进去

第三步:在工程中创建MainActivity(Activity)

MainActivity代码示例:
  import android.content.Intent;  import android.graphics.Bitmap;  import android.graphics.BitmapFactory;  import android.hardware.camera2.CaptureRequest;  import android.support.v7.app.AppCompatActivity;  import android.os.Bundle;  import android.util.Log;  import android.view.View;  import android.widget.CheckBox;  import android.widget.EditText;  import android.widget.ImageView;  import android.widget.TextView;  import android.widget.Toast;  import com.xys.libzxing.zxing.activity.CaptureActivity;  import com.xys.libzxing.zxing.encoding.EncodingUtils; public class MainActivity extends AppCompatActivity {    private TextView tv_ScanResult;    private EditText et_Text;    private ImageView imgv_QRcode;    private CheckBox cb_includeLogo;      @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_zxing_main);        tv_ScanResult= (TextView) findViewById(R.id.tv_ScanResult);        et_Text= (EditText) findViewById(R.id.et_Text);        imgv_QRcode= (ImageView) findViewById(R.id.imgv_QRcode);        cb_includeLogo= (CheckBox) findViewById(R.id.cb_includeLogo);    }    //直接调用第三方ZXing库的api进行扫描    public void scan(View view){        startActivityForResult(new Intent(XZingMainActivity.this,                CaptureActivity.class),0);    }     @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        if (resultCode==RESULT_OK){            Bundle bundle=data.getExtras();//通过Bundle获取扫描后的结果数据            String sResult=bundle.getString("result");            tv_ScanResult.setText(sResult);             System.out.println("查看读取结果"+sResult);        }    }     public void CreateQRode(View view){        String sInput=et_Text.getText().toString();        if (sInput.equals("")){            Toast.makeText(XZingMainActivity.this,"请输入要生成二维码的内容",Toast.LENGTH_SHORT).show();        }else{            if (cb_includeLogo.isChecked()==false){                //调用ZXing类库的createQRCode生成二维码----不包含图片                Bitmap bitmap= EncodingUtils.createQRCode(sInput,500,500,null);                imgv_QRcode.setImageBitmap(bitmap);            }else{                //调用ZXing类库的createQRCode生成二维码----包含图片                Bitmap bitmap= EncodingUtils.createQRCode(sInput,500,500,                        BitmapFactory.decodeResource(getResources(),R.drawable.appicon));                imgv_QRcode.setImageBitmap(bitmap);            }         }      }}

activity_main.xml布局示例

<?xml version="1.0" encoding="utf-8"?>  <LinearLayout 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:orientation="vertical"    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=".XZingMainActivity"     <Button        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="扫描二维码"        android:id="@+id/btn_scan"        android:layout_alignParentLeft="true"        android:layout_alignParentStart="true"        android:onClick="scan" />     <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="---显示扫描结果----"        android:textSize="22dp"        android:id="@+id/tv_ScanResult" />      <EditText        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/et_Text"        android:hint="这里请输入你要生成二维码的内容" />      <CheckBox        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="二维码是否要包含图片Logo"        android:id="@+id/cb_includeLogo"        android:checked="false" />    <Button         android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="生成二维码QRcode"        android:id="@+id/btn_CreateQRcode"        android:onClick="CreateQRode" />      <ImageView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/imgv_QRcode"        android:layout_gravity="center_horizontal"        android:background="@drawable/appicon" />  </LinearLayout>

希望此文章能够使大家对二维码的研究有帮助啦!


0 0
原创粉丝点击