简单二维码扫一扫及二维码生成

首先导依赖:

implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.3.4'

布局代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent">
    <Button
        android:id="@+id/sys"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="扫一扫"/>
    <Button
        android:id="@+id/ss"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="生成二维码"/>
    <ImageView
        android:id="@+id/img"
        android:layout_width="80dp"
        android:layout_height="80dp" />
</LinearLayout>

java代码:

package com.gy.my.fragment;

import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
import com.gy.my.R;
import com.journeyapps.barcodescanner.BarcodeEncoder;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.Unbinder;

public class CircleFragment extends Fragment {
    @BindView(R.id.sys)
    Button sys;
    @BindView(R.id.ss)
    Button ss;
    @BindView(R.id.img)
    ImageView img;
    Unbinder unbinder;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.circlefragment, container, false);
        unbinder = ButterKnife.bind(this, view);
        return view;
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        unbinder.unbind();
    }

    @OnClick({R.id.sys, R.id.ss})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.sys:
                customScan();
                break;
            case R.id.ss:
                img.setImageBitmap(encodeAs("lgy1116"));
                break;
        }
    }
    //扫描二维码
    public void customScan() {
        IntentIntegrator integrator = new IntentIntegrator(getActivity());
        integrator.setDesiredBarcodeFormats(IntentIntegrator.CODE_39);
        //integrator.setCaptureActivity(ScanActivity.class);
        integrator.setPrompt("请扫描二维码");//底部的提示文字,设为""可以置空
        integrator.setCameraId(0);//前置或者后置摄像头
        integrator.setBeepEnabled(true);//扫描成功的「哔哔」声,默认开启
        integrator.setBarcodeImageEnabled(true);
        integrator.initiateScan();
    }
    //生成二维码
    public Bitmap encodeAs(String str) {
        Bitmap bitmap = null;
        BitMatrix result = null;
        MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
        try {
            result = multiFormatWriter.encode(str, BarcodeFormat.QR_CODE, 200, 200);
            // 使用 ZXing Android Embedded 要写的代码
            BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
            bitmap = barcodeEncoder.createBitmap(result);
        } catch (WriterException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException iae) {
            return null;
        }
        return bitmap;
    }
    @Override
    // 通过 onActivityResult的方法获取 扫描回来的 值
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        IntentResult intentResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        if (intentResult != null) {
            if (intentResult.getContents() == null) {
                Toast.makeText(getContext(), "内容为空", Toast.LENGTH_LONG).show();
            } else {
                Toast.makeText(getContext(), "扫描成功", Toast.LENGTH_LONG).show();
                // ScanResult 为 获取到的字符串
                String ScanResult = intentResult.getContents();
            }
        } else {
            super.onActivityResult(requestCode, resultCode, data);
        }
    }

}

猜你喜欢

转载自blog.csdn.net/gy1115/article/details/86419736