Android 项目中Zxing的接入(1)

现在每一个APP都会有扫一扫的功能,而这个功能就是在github上下载的一个开源库做成的,在我们实际的生活中应用的十分广泛,如支付宝等等基本都是利用这个开源库Zxing做出来的;今天我就和大家一起来学习2种方法将这个功能接入到我们的实际项目中;

一.第一种方式:

1.倒入libzxing这个库(as用户);

链接: https://pan.baidu.com/s/1slpKFm9 密码: rc53

2.布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.zxing.MainActivity">

    //显示扫描结果
    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    //点击后扫描
    <Button
        android:id="@+id/btn"
        android:layout_width="match_parent"
        android:layout_height="200dp" />
    //制作二维码显示时使用
    <ImageView
        android:id="@+id/iv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />


</LinearLayout>
  1. 代码
//android 6.0以后的要加上这行代码,因为扫二维码需要调用摄像头,侵犯用户隐私:1代码请求码
//兄弟们,看好了参数类型是数组,就是说我们可以一次性请求多个权限;
requestPermissions(new String[]{Manifest.permission.CAMERA},1);

//上面这个请求权限的方法会回调这个方法,进行权限判断
@Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        switch (requestCode) {
            case 1:
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    // 成功获取权限
                    findView();

                    //下面的这几行代码是用于生成二维码的
                    //第一个参数是二维码包含的内容,第二个和第三个是宽高,第四个是你的二维码中间的那个小图标,参数类型是bitmap
                    Bitmap bitmap = EncodingUtils.createQRCode("hello world, my name is wang shaolong ,is from China! ", 200, 200, BitmapFactory.decodeResource(getResources(), R.mipmap.mine));
                    //将生成的二维码显示到imageview组件上
                    iv.setImageBitmap(bitmap);



                } else {
                    // 权限获取失败
                    Toast.makeText(MainActivity.this, "CALL_PHONE Denied", Toast.LENGTH_SHORT)
                            .show();
                }
                break;
            default:
                super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }


    //找组件
    private void findView() {

        Button btn = (Button) findViewById(R.id.btn);
        tv = (TextView) findViewById(R.id.tv);
        iv = (ImageView) findViewById(R.id.iv);
    //点击    
        btn.setOnClickListener(this);
    }



    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (resultCode == RESULT_OK) {
            Bundle bundle = data.getExtras();
            //这个result就是扫到的数据,别人为什么key是result,不是其他的,因为源码里面就是写死的;在这里你就可以操作这个数据了,他可以是url,这样就可以直接打开一个网页;
            String result = bundle.getString("result");
            tv.setText(result);
        }

    }


 @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btn:
                //二维码本质即使一个activity,只不过是这个库已经帮我们做好了-CaptureActivity,请求成功后会回调onActivityResult
                startActivityForResult(new Intent(MainActivity.this , CaptureActivity.class) , 0);
                break;

        }
    }

好了,这就完了,效果杠杠的;
第二种方式下篇博客在说,要不这篇博客就太长了;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值