zoukankan      html  css  js  c++  java
  • Android二维码工具zxing使用

    二维码在我们生活中随处可见。在我眼里简直能够用“泛滥”来形容啦。那怎样在我们Android项目中扫描识别二维码或生成二维码图片呢?
    我们通常使用的开源框架是zxing。在github上的开源地址:https://github.com/zxing/zxing,眼下在做的项目中也用到这个框架,     
    所以自己做了个demo,方便学习及下次使用。
    

    识别二维码

     /**
     * 扫描二维码演示样例
     */
    public class ScanCodeActivity extends Activity implements View.OnClickListener {
        private Button start_scan;
        private TextView result_tv;
        private final static int REQUEST_CODE = 100;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_scan);
            this.start_scan = (Button) findViewById(R.id.start_scan);
            this.result_tv = (TextView) findViewById(R.id.result_tv);
            this.start_scan.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) {
            if (v.getId() == R.id.start_scan) {
                //zxing框架已经帮我们封装好相应的实现类。直接调用startActivityForResult就可以
                Intent intent = new Intent(this, CaptureActivity.class);
                startActivityForResult(intent, REQUEST_CODE);
            }
        }
    
        /**
         * 在onActivityResult中处理数据
         * @param requestCode
         * @param resultCode
         * @param data
         */
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
                Bundle bundle = data.getExtras();
                String scanResult = bundle.getString("result");
                this.result_tv.setText(scanResult);
            }
            super.onActivityResult(requestCode, resultCode, data);
        }
    }
    

    生成二维码:

    /**
     * 生成二维码演示样例
     */
    public class MadeCodeActivity extends Activity implements View.OnClickListener {
        private EditText code_edt;
        private Button made_code;
        private ImageView result_iv;
        private CheckBox logo_cb;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_made);
            this.code_edt = (EditText) findViewById(R.id.code_edt);
            this.made_code = (Button) findViewById(R.id.made_code);
            this.result_iv = (ImageView) findViewById(R.id.result_iv);
            logo_cb = (CheckBox) findViewById(R.id.logo_cb);
            this.made_code.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) {
            if (v.getId() == R.id.made_code) {
                String content = code_edt.getText().toString().trim();
                boolean isAddLogo = logo_cb.isChecked();
                if (TextUtils.isEmpty(content)) {
                    Toast.makeText(this, "输入内容不能为空", Toast.LENGTH_LONG).show();
                    return;
                }
                madeCode(content, isAddLogo);
            }
        }
    
        /**
         * 生成二维码
         *
         * @param content   要生成图片的文字内容
         * @param isAddLogo 是否在二维码中加入LOGO图片
         */
        private void madeCode(String content, boolean isAddLogo) {
            String bitmapPath;
            if (!isAddLogo) {//不带LOGO
                bitmapPath = EncodeUtil.createQRImage(this, content, 300, 300, null);
            } else {//带Logo,R.mipmap.ic_launcher就是LOGO相应图片,自行加入
                bitmapPath = EncodeUtil.createQRImage(this, content, 300, 300, BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
            }
            if (!TextUtils.isEmpty(bitmapPath)) {
                result_iv.setImageBitmap(BitmapFactory.decodeFile(bitmapPath));
            }
        }
    }
    

    完毕的项目(AndroidStudio项目)下载地址:
    http://download.csdn.net/detail/true100/9487162

  • 相关阅读:
    为mongoDB加用户权限管理
    手机号归属地查询接口
    关于微信小程序
    linux交互执行命令,expect
    apache配置跨域请求代理
    Linux(Mac)常用命令
    解决:配置虚拟主机,重启apache,[warn] _default_ VirtualHost overlap on port 80, the first has precedence
    linux下grep分析apache日志的命令集合
    解决Macbook Pro蓝牙不可用问题
    Apache如何开启Gzip压缩
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/7225527.html
Copyright © 2011-2022 走看看