自动生成二维码

一个简单的二维码生成demo,从别处借鉴来的:

package com.sys.android.erweima;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.ImageButton;
import android.widget.ImageView;


public class ErweimaActivity extends Activity {

private ImageButton refreshButton;
private ImageView text;
private Bitmap blank;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.main);
        //用此字符串生成二维码图像,可以随意改变此字符串
//        String str="XO11D1E1F1E1C1D1E1D1D1C1L1D1D1G1CAA";
//        String str="csdfsafgafaw";
//        String str="http://www.baidu.com";
//        String str="http://api.bbpapp.com/bodoo2.60.php?controller=exercise&action=GetAllExercise&page=1&uid=11589";
        String str="http://edit2.bbpapp.com/sale/print_guess/toy_id=126&uid=11589";
        try {
        Bitmap t=Create2DCode(str);
text = (ImageView) findViewById(R.id.text);
//text.setBackgroundResource(R.drawable.ic_launcher);
text.setImageBitmap(t);
} catch (WriterException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}    

refreshButton = (ImageButton) findViewById(R.id.refreshButton);
setListener();
    }
   
    /**
* 点击刷新按钮事件listener
*/
private void setListener() {
refreshButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
text = (ImageView) findViewById(R.id.text);
text.setImageBitmap(blank);
finish();
Intent intent = new Intent();
intent.setClass(ErweimaActivity.this, ErweimaActivity.class);
startActivity(intent);
}
});
}
   
    public Bitmap Create2DCode(String str) throws WriterException {
        //生成二维矩阵,编码时指定大小,不要生成了图片以后再进行缩放,这样会模糊导致识别失败
BitMatrix matrix = new MultiFormatWriter().encode(str,BarcodeFormat.QR_CODE, 300, 300);
int width = matrix.getWidth();
int height = matrix.getHeight();
//二维矩阵转为一维像素数组,也就是一直横着排了
int[] pixels = new int[width * height];
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
if(matrix.get(x, y)){
pixels[y * width + x] = 0xff000000;
}
}
}
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
//通过像素数组生成bitmap,具体参考api
bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
return bitmap;
    }
}

猜你喜欢

转载自gzsxt.iteye.com/blog/2009723