ZXING-二维码扫面

来源:互联网 发布:网络流行语遇上古诗词 编辑:程序博客网 时间:2024/04/27 15:42

转载:https://github.com/yipianfengye/android-zxingLibrary

使用方式:

  • 集成默认的二维码扫描页面

在具体介绍该扫描库之前我们先看一下其具体的使用方式,看看是不是几行代码就可以集成二维码扫描的功能。

  • 在module的build.gradle中执行compile操作
compile 'cn.yipianfengye.android:zxing-library:2.1'
  • 在demo Application中执行初始化操作
@Override    public void onCreate() {        super.onCreate();        ZXingLibrary.initDisplayOpinion(this);    }
  • 在代码中执行打开扫描二维码界面操作
/**         * 打开默认二维码扫描界面         */        button1.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent intent = new Intent(MainActivity.this, CaptureActivity.class);                startActivityForResult(intent, REQUEST_CODE);            }        });

这里的REQUEST_CODE是我们定义的int型常量。

  • 在Activity的onActivityResult方法中接收扫描结果
/**         * 处理二维码扫描结果         */        if (requestCode == REQUEST_CODE) {            //处理扫描结果(在界面上显示)            if (null != data) {                Bundle bundle = data.getExtras();                if (bundle == null) {                    return;                }                if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_SUCCESS) {                    String result = bundle.getString(CodeUtils.RESULT_STRING);                    Toast.makeText(this, "解析结果:" + result, Toast.LENGTH_LONG).show();                } else if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_FAILED) {                    Toast.makeText(MainActivity.this, "解析二维码失败", Toast.LENGTH_LONG).show();                }            }        }
  • 集成对二维码图片的解析功能

  • 调用系统API打开图库

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);intent.addCategory(Intent.CATEGORY_OPENABLE);intent.setType("image/*");startActivityForResult(intent, REQUEST_IMAGE);
  • 在Activity的onActivityResult方法中获取用户选中的图片并调用二维码图片解析API
if (requestCode == REQUEST_IMAGE) {            if (data != null) {                Uri uri = data.getData();                ContentResolver cr = getContentResolver();                try {                    Bitmap mBitmap = MediaStore.Images.Media.getBitmap(cr, uri);//显得到bitmap图片                    CodeUtils.analyzeBitmap(mBitmap, new CodeUtils.AnalyzeCallback() {                        @Override                        public void onAnalyzeSuccess(Bitmap mBitmap, String result) {                            Toast.makeText(MainActivity.this, "解析结果:" + result, Toast.LENGTH_LONG).show();                        }                        @Override                        public void onAnalyzeFailed() {                            Toast.makeText(MainActivity.this, "解析二维码失败", Toast.LENGTH_LONG).show();                        }                    });                    if (mBitmap != null) {                        mBitmap.recycle();                    }                } catch (Exception e) {                    e.printStackTrace();                }            }

执行效果

  • 生成二维码图片

  • 生成带Logo的二维码图片:

/**         * 生成二维码图片         */        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                String textContent = editText.getText().toString();                if (TextUtils.isEmpty(textContent)) {                    Toast.makeText(ThreeActivity.this, "您的输入为空!", Toast.LENGTH_SHORT).show();                    return;                }                editText.setText("");                mBitmap = CodeUtils.createImage(textContent, 400, 400, BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));                imageView.setImageBitmap(mBitmap);            }        });
  • 生成不带logo的二维码图片
/**         * 生成不带logo的二维码图片         */        button1.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                String textContent = editText.getText().toString();                if (TextUtils.isEmpty(textContent)) {                    Toast.makeText(ThreeActivity.this, "您的输入为空!", Toast.LENGTH_SHORT).show();                    return;                }                editText.setText("");                mBitmap = CodeUtils.createImage(textContent, 400, 400, null);                imageView.setImageBitmap(mBitmap);            }        });
  • 支持控制闪光灯
/** * 打开闪光灯 */CodeUtils.isLightEnable(true);/** * 关闭闪光灯 */ CodeUtils.isLightEnable(false);

原创粉丝点击