二维码扫描,生成

版权声明:叮叮叮!!!! https://blog.csdn.net/Xuexx_520/article/details/83961323

准备工作

在build.gradle里面添加依赖

 implementation 'cn.yipianfengye.android:zxing-library:2.2'

在清单里面添加权限

<uses-permission android:name="android.permission.INTERNET" /> <!-- 网络权限 -->
<uses-permission android:name="android.permission.VIBRATE" /> <!-- 震动权限 -->
<uses-permission android:name="android.permission.CAMERA" /> <!-- 摄像头权限 -->
<uses-feature android:name="android.hardware.camera.autofocus" />

在Application中初始化操作

 public void onCreate() {
        super.onCreate();

        ZXingLibrary.initDisplayOpinion(this);
    }

首先是生成默认二维码页面

在点击事件里跳转到默认二维码

 case R.id.but1:
                //打开默认二维码扫描页面
                Intent intent = new Intent(MainActivity.this,CaptureActivity.class);
                startActivityForResult(intent, REQUEST_CODE);
                break;

这里需要回传值

 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        /*
        打开扫一扫扫描解析图片
         */
        if(requestCode==REQUEST_CODE){
            if(data!=null){
                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 {
                    Toast.makeText(MainActivity.this, "解析二维码失败", Toast.LENGTH_LONG).show();
                }
            }
        }
}

效果图

生成二维码

如果想自己生成一个二维码图片,新定义一个activity,进行跳转

  case R.id.but4:
                //生成自定义二维码页面
               startActivity(new Intent(MainActivity.this,Main2Activity.class));

                break;

到新的activity

输入文本框内容,进行生成二维码操作



public class Main2Activity extends AppCompatActivity implements View.OnClickListener {

    private EditText edit;
    private Button addlog;
    private Button nolog;
    private Bitmap mMBitmap;
    private ImageView QRcode;

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

    private void initView() {
        edit = (EditText) findViewById(R.id.edit);
        addlog = (Button) findViewById(R.id.addlog);
        nolog = (Button) findViewById(R.id.nolog);

        addlog.setOnClickListener(this);
        nolog.setOnClickListener(this);
        QRcode = (ImageView) findViewById(R.id.QRcode);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            //带log的二维码
            case R.id.addlog:
                //输入要生成二维码内容
                String textString = edit.getText().toString().trim();
                if (TextUtils.isEmpty(textString)) {
                    Toast.makeText(Main2Activity.this, "您的输入为空!", Toast.LENGTH_SHORT).show();
                    return;
                }
                //开始生成二维码
                edit.setText("");
                mMBitmap = CodeUtils.createImage(textString, 400, 400, BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
                QRcode.setImageBitmap(mMBitmap);

                break;
            case R.id.nolog://不带log的二维码
                String textString2 = edit.getText().toString().trim();
                if (TextUtils.isEmpty(textString2)) {
                    Toast.makeText(Main2Activity.this, "您的输入为空!", Toast.LENGTH_SHORT).show();
                    return;
                }
                //开始生成二维码
                edit.setText("");
                mMBitmap = CodeUtils.createImage(textString2, 400, 400, null);
                QRcode.setImageBitmap(mMBitmap);

                break;
        }
    }


}

效果图如下

猜你喜欢

转载自blog.csdn.net/Xuexx_520/article/details/83961323