Zxing生成二维码 条形码

来源:互联网 发布:法文翻译软件 编辑:程序博客网 时间:2024/06/02 23:04

我是一个安卓新手 第一次写博客今天项目里面有个需求,需要动态生成一个条形码,于是 我想到了Zxing 这个开源框架。废话不多说,现在先来看代码

这里写图片描述

这是布局文件
接下来是代码

public class MainActivity extends AppCompatActivity {
private EditText mEtInput;
private Button mBtOneCode;
private Button mBtTwoCode;
private ImageView mIvCode;

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    initView();    initListener();}private void initListener() {    mBtTwoCode.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View view) {            String strs =mEtInput.getText().toString().trim();            Bitmap mBitmap=null;            Toast.makeText(getApplicationContext(),""+strs,Toast.LENGTH_LONG).show();            if(!"".equals(strs)&&strs!=null){                try{                    mBitmap=CreateTwoDcode(strs);                }catch (WriterException e){                    e.printStackTrace();                }                if (mBitmap!=null){                   mIvCode.setImageBitmap(mBitmap);                }            }        }    });    mBtOneCode.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View view) {            String str =mEtInput.getText().toString().trim();            int size=str.length();            for (int i=0;i<size;i++){                int c=str.charAt(i);                if (19968<=c&&c<40523){                    Toast.makeText(getApplicationContext(),"生成的条形码不能使中文",Toast.LENGTH_LONG).show();                    return;                }            }            Bitmap bmp=null;            try{                if (!"".equals(str)&&str!=null){                    bmp=CreateOneDcode(str);                }            }catch (WriterException e){                e.printStackTrace();            }            if (bmp!=null){                mIvCode.setImageBitmap(bmp);            }        }    });} public Bitmap CreateTwoDcode(String conternet)throws WriterException{     BitMatrix bitMatrix=new MultiFormatWriter().encode(conternet, BarcodeFormat.QR_CODE,300,300);     int width=bitMatrix.getWidth();     int height=bitMatrix.getHeight();     int[] pixels=new int[width*height];     for (int i=0;i<height;i++){         for (int j=0;j<width;j++){             if(bitMatrix.get(j,i)){                 pixels[i*width+j]=0xff000000;             }         }     }     Bitmap bitmap=Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888);     bitmap.setPixels(pixels,0,width,0,0,width,height);     return bitmap; } public Bitmap CreateOneDcode(String conternet)throws  WriterException{     BitMatrix bitMatrix=new MultiFormatWriter().encode(conternet,BarcodeFormat.CODE_128,500,200);     int width=bitMatrix.getWidth();     int height=bitMatrix.getHeight();     int[] pixels=new int[width*height];     for (int y=0;y<height;y++){         for (int x=0;x<width;x++){             if (bitMatrix.get(x,y)){                 pixels[y*width+x]=0xff000000;             }         }     }     Bitmap bitmap=Bitmap.createBitmap(width,height, Bitmap.Config.ARGB_8888);     bitmap.setPixels(pixels,0,width,0,0,width,height);    return bitmap; }private void initView() {    mEtInput= (EditText) findViewById(R.id.et_inputText);    mBtOneCode= (Button) findViewById(R.id.bt_one);    mBtTwoCode= (Button) findViewById(R.id.bt_two);    mIvCode= (ImageView) findViewById(R.id.iv_code);}

}

其中的MultiFormatWriter(), BitMatrix 等 均为Zxing的方法

注意:Zxing 是不支持中文二维码的

最后附上效果图,即可以生成二维码,又可以生成条形码
这里写图片描述

这里写图片描述

亲测 可以扫,有结果,毕竟第一发博客,我是个新人还会继续努力,希望大神指点