android studio 利用zxing精简版实现二维码生成/扫描(附demo)
实验项目需要二维码,在网上查了许多资料都讲的模糊不清,可能是第一次接触,各种bug,经过一番折腾终于自己捣鼓出来了。
主要步骤如下:
1.创建Android Studio工程项目,本文项目见:链接:https://pan.baidu.com/s/1LWUZ76vxBWhibObl3RvuIw 密码:5ite
2.在自建项目中集成ZXingBar包,下载地址:链接:https://pan.baidu.com/s/1NLcHP0XIaclL3BSo-a8wlw 密码:vf78
3.解压下载的ZXingBar压缩包,复制zxing.jar到Android Studio项目的libs文件夹,然后右键“zxing.jar”选择“Add As Library”添加其为库文件。
4.复制zxing文件夹到如下所示的Android studio包中
5.分别复制navbar.9.png(复制到Android studio中后删除文件名中的'.9')、camera.xml、raw文件夹、ids.xml文件到Android studio工程
以上文件粘贴位置如下:
6.构建编译Android studio工程,将提示R文件找不到。替换所有报错文件中的导入的R文件为自己项目包中R文件,直到编译无误。
7.在AndroidManifest.xml文件中添加声明权限和Activity
8.调用集成库实现自定义功能
package com.example.john.qrcode; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; 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.zxing.activity.CaptureActivity; import com.zxing.encoding.EncodingHandler; public class MainActivity extends Activity { private Button ScanBtn; private TextView textView; private Button GenBtn; private EditText editText; ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ScanBtn = findViewById(R.id.Scan); textView = findViewById(R.id.textView); GenBtn = findViewById(R.id.GenBtn); imageView = findViewById(R.id.img); editText = findViewById(R.id.input); ScanBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this, CaptureActivity.class); startActivityForResult(intent,0); } }); GenBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String string = editText.getText().toString(); if (string.equalsIgnoreCase("")) { Toast.makeText(MainActivity.this,"请输入文本",Toast.LENGTH_SHORT).show(); } else { try { //生成二维码图片 Bitmap qrcode = EncodingHandler.createQRCode(string,600); imageView.setImageBitmap(qrcode); } catch (WriterException e) { e.printStackTrace(); } } } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { //获取二维码扫描结果 String string = data.getExtras().getString("result"); textView.setText(string); Intent intent1 = new Intent(MainActivity.this, SendActivity.class); startActivity(intent1); } } }