使用zxing这个开源项目可以很方便的实现二维码的扫码和生成问题
把libzxing作为modul导入as中,添加module依赖
1.扫码
public class MainActivity extends AppCompatActivity { private TextView tv_result; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv_result= (TextView) findViewById(R.id.tv_result); } public void begin(View v){ //开启扫码的activity Intent intent=new Intent(this, CaptureActivity.class); startActivityForResult(intent,99); } //扫码结束会掉的方法 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(resultCode==RESULT_OK){ //从Intent中取出扫码的信息 String result = data.getStringExtra("result"); Toast.makeText(this,result,Toast.LENGTH_LONG).show(); tv_result.setText(result); } } }扫码的activity是CaptureActivity这个类,在这个类中
public void handleDecode(Result rawResult, Bundle bundle) { inactivityTimer.onActivity(); beepManager.playBeepSoundAndVibrate();//声音和振动的方法,如果不需要可以注释掉此行 Intent resultIntent = new Intent(); bundle.putInt("width", mCropRect.width()); bundle.putInt("height", mCropRect.height()); bundle.putString("result", rawResult.getText()); resultIntent.putExtras(bundle); this.setResult(RESULT_OK, resultIntent); CaptureActivity.this.finish(); }
bundle.putString("result", rawResult.getText());是设置返回的数据,所以在MainActivity中可以拿到扫码结果
2.生成二维码
生成二维码的代码更加简单,使用EncodingUtil这个类
Bitmap bitmap = EncodingUtils.createQRCode("我是二维码的信息", 90, 90, BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
第二个参数和第三个参数是生成Bitmap的宽高,单位是px可以使用工具类转换成dp
第四个参数是二维码上面显示logo,这里使用app的图标
zxing类库下载地址:点击下载