安卓二维码扫码和生成

使用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类库下载地址:点击下载


你可能感兴趣的:(QRCode)