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
- 找不到com。Github.dcendents,android-maven这个插件如图:
解决方案:
将classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0'复制到主Projiect的builder下如图:
- zxing导入时的报错,提示清单文件报错,要求:在meta_data中添加“tools:replace=”android:value””如图:
解决方案:value=(26.0.0)与当前value=(26.1.0)无法对应,只需要在builde内修改为(26.0.0)就可以了,如图:
- 运行时报错
解决方案:
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"相匹配就可以了。