您的位置:首页 > 其它

生成二维码

2016-08-22 08:33 44 查看
public class CodeActivity extends Activity implements OnClickListener {

    private ImageView qr_code_image;

    private ImageView image_back_about;

    private final static int SCANNIN_GREQUEST_CODE = 1;

    private static final int QR_WIDTH = 200;

    private static final int QR_HEIGHT = 200;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_code);

        // 初始化控件

        initview();

        //生成二维码

        createQRCodeImage();

    }

    /**

     * 初始化控件

     */

    private void initview() {

        

        // 生成二维码的图片

        qr_code_image = (ImageView) findViewById(R.id.qr_code_image);

        image_back_about = (ImageView) findViewById(R.id.image_back_about);

        

        image_back_about.setOnClickListener(this);

    }

    protected void createQRCodeImage() {

        // TODO Auto-generated method stub

        QRCodeWriter writer = new QRCodeWriter();

        String text = "御泥坊";

        /**

         * 排除情况

         */

        if (text == null || "".equals(text) || text.length() < 1) {

            return;

        }

        /**

         * 把输入的文本转为二维码

         */

        try {

            BitMatrix martix = writer.encode(text, BarcodeFormat.QR_CODE,

                    QR_WIDTH, QR_HEIGHT);

            Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();

            hints.put(EncodeHintType.CHARACTER_SET, "utf-8");

            BitMatrix bitMatrix = new QRCodeWriter().encode(text,

                    BarcodeFormat.QR_CODE, QR_WIDTH, QR_HEIGHT, hints);

            int[] pixels = new int[QR_WIDTH * QR_HEIGHT];

            for (int y = 0; y < QR_HEIGHT; y++) {

                for (int x = 0; x < QR_WIDTH; x++) {

                    if (bitMatrix.get(x, y)) {

                        pixels[y * QR_WIDTH + x] = 0xff000000;

                    } else {

                        pixels[y * QR_WIDTH + x] = 0xffffffff;

                    }

                }

            }

            Bitmap bitmap = Bitmap.createBitmap(QR_WIDTH, QR_HEIGHT,

                    Bitmap.Config.ARGB_8888);

            bitmap.setPixels(pixels, 0, QR_WIDTH, 0, 0, QR_WIDTH, QR_HEIGHT);

            /**

             * 显示

             */

            qr_code_image.setImageBitmap(bitmap);

        } catch (WriterException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

    @Override

    public void onClick(View v) {

        // TODO Auto-generated method stub

        switch (v.getId()) {

        

        case R.id.image_back_about:

            finish();

            break;

        default:

            break;

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: