二维码、条形码的扫描

一、概述
现在对于二维码条形码的扫描,目前来说主流框架有两个,一个是Zxing,另一个是Zbar,两者我都使用过,可能是因为我下载的版本的原因,我在使用Zbar的时候有点卡顿,甚至是读取有点慢,Zxing在维护方面做的还是i比较好的,下面我们来看下Zxing如何集成到项目中来;

二、集成Zxing

开源项目地址是 https://code.google.com/p/zxing/

首先,需要下载ZXing项目所依赖的Jar包的源码。

下载地址是 http://repo1.maven.org/maven2/com/google/zxing/core/2.2/core-2.2-sources.jar

然后再来下载ZXing项目,下载地址是 https://zxing.googlecode.com/files/ZXing-2.2.zip

在ZXing项目中直接导入core-3.0.0的Jar包是无法正常运行的,所以我们只能通过将core-2.2的源码加入到ZXing项目中来实现。下载好以上两个文件后,先解压core-3.0.0-sources.jar文件,然后将其copy到Zxing的文件夹下,下面我们来看下目录结构:
这里写图片描述

我们新建的MainActivity是显示二维码扫描界面的,应在Androidmenifest文件中配置android:screenOrientation=”portrait”,设置为竖屏状态,下面我们来看下布局及代码:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button scanBtn;
    private TextView resultTv;
    private static final String DECODED_CONTENT_KEY = "codedContent";
    private static final String DECODED_BITMAP_KEY = "codedBitmap";
    private static final int REQUEST_CODE_SCAN = 0x0000;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        scanBtn = (Button) findViewById(R.id.scanBtn);
        resultTv = (TextView) findViewById(R.id.resultTv);
        scanBtn.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.scanBtn:
            //开启扫描的界面
                Intent intent = new Intent(MainActivity.this,
                        CaptureActivity.class);
                startActivityForResult(intent, REQUEST_CODE_SCAN);
                break;
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // 扫描二维码/条码回传
        if (requestCode == REQUEST_CODE_SCAN && resultCode == RESULT_OK) {
            if (data != null) {
                String content = data.getStringExtra(DECODED_CONTENT_KEY);
                Bitmap bitmap = data.getParcelableExtra(DECODED_BITMAP_KEY);
                resultTv.setText("解码结果: \n" + content);
            }
        }
    }
}

有一点是需要注意的,core-3.0.0.jar要添加作为一个libiary,右键找到as a libiary后,重新build下project即可引用里面的相关包,我们来看下最终的扫描界面

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值