zxing二维码第三方库使用

package com.example.appqrcode20181008;

import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.google.zxing.WriterException;
import com.yzq.zxinglibrary.android.CaptureActivity;
import com.yzq.zxinglibrary.common.Constant;
import com.yzq.zxinglibrary.encode.CodeCreator;

public class MainActivity extends AppCompatActivity {
    private Button btn_qr;
    private TextView textView;
    private EditText mEdit;
    private Button mBtn_Image;
    private ImageView mImage_Logo;
    private final int RESULT_CODE = 1000;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn_qr = findViewById(R.id.btn_qr);
        textView = findViewById(R.id.text_view);
        mBtn_Image = findViewById(R.id.btn_image);
        mEdit = findViewById(R.id.edit_text);
        mImage_Logo = findViewById(R.id.image_view);
        
        
        //扫一扫点击事件
        btn_qr.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                sCan();
            }
        });
        
        //生成二维码点击事件
        mBtn_Image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                setImage();
            }
        });
    }
    
    
    //生成二维码的方法
    private void setImage() {
        String trim = mEdit.getText().toString().trim();
        if (TextUtils.isEmpty(trim)){
            Toast.makeText(MainActivity.this,"请输入一些东西",Toast.LENGTH_SHORT).show();
        }else{
           Bitmap bitmap =  BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher);

            try {
               //bitmap --- logo,trim -- 内容 
                Bitmap qrCode = CodeCreator.createQRCode(trim, 200, 200, bitmap);
                mImage_Logo.setImageBitmap(qrCode);
            } catch (WriterException e) {
                e.printStackTrace();
            }
        }
    }

    //扫一扫
    private void sCan() {
        Intent intent = new Intent(MainActivity.this,CaptureActivity.class);
        startActivityForResult(intent,RESULT_CODE);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == RESULT_CODE&& resultCode ==RESULT_OK){
            String result = data.getStringExtra(Constant.CODED_CONTENT);
            //判断是否是网址
            if (result.contains("http")){
                Intent intent = new Intent(MainActivity.this,WebViewActivity.class);
                intent.putExtra("url",result);
                startActivity(intent);
            }
            textView.setText(result);
        }
    }
}
  • 使用zxing二维码第三方控件遇到的一些bug

 

  1. 找不到com。Github.dcendents,android-maven这个插件如图:

解决方案:

将classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0'复制到主Projiect的builder下如图:

  1. zxing导入时的报错,提示清单文件报错,要求:在meta_data中添加“tools:replace=”android:value””如图:

解决方案:value=(26.0.0)与当前value=(26.1.0)无法对应,只需要在builde内修改为(26.0.0)就可以了,如图:

  1. 运行时报错

解决方案:

app下的build中的:
implementation 'com.android.support:appcompat-v7:27.1.1'
而zxing库下的build为:

implementation "com.android.support:appcompat-v7:27.0.0"
将app下的build下的:implementation 'com.android.support:appcompat-v7:27.1.1'
改为
implementation "com.android.support:appcompat-v7:27.0.0"相匹配就可以了。

 

猜你喜欢

转载自blog.csdn.net/qq_42234894/article/details/82981995