版权声明:叮叮叮!!!! 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;
}
}
}
效果图如下