二维码如今非常流行,QQ,微信,支付宝几乎都有二维码扫描功能。所以,作为Android工程师,有必要掌握它吧。其实,如果纯自己写二维码功能的话相当复杂,幸好有一些优秀的第三方开源类库,今天我用的是非常流行的Zxing类库。这里我提供一个下载地址,Zxing第三方库
笔者第一次使用第三方类库,特别激动。感觉很高大上的东东,至少我是 这么认为的! 废话不多说,干!
先展示下工程目录:
代码如下:
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_CODE = 0;
//用来展示扫描出来的内容
private TextView mTextView;
//生成二维码的图片
private ImageView mImageView;
//用户输入的内容
private EditText mEditText;
//是否添加二维码中间的Logo图标
private CheckBox mCheckBox;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.textView);
mImageView = (ImageView) findViewById(R.id.imageView);
mEditText = (EditText) findViewById(R.id.editText);
mCheckBox = (CheckBox) findViewById(R.id.checkBox);
}
//打开二维码
public void click(View view) {
startActivityForResult(new Intent(MainActivity.this, CaptureActivity.class), REQUEST_CODE);
}
//制作二维码
public void make(View view) {
//拿到内容
String text = mEditText.getText().toString();
if (text == null) {
Toast.makeText(this, "你没有输入内容", Toast.LENGTH_LONG).show();
} else {
//第一个参数:内容;第二个,第三个参数:二维码的宽高;第四个参数:Logo图片
Bitmap bitmap = EncodingUtils.createQRCode(text, 500, 500, mCheckBox.isChecked() ? BitmapFactory.decodeResource(getResources(), R.drawable.logo) :
null);
mImageView.setImageBitmap(bitmap);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
Bundle bundle = data.getExtras();
String result = bundle.getString("result");
mTextView.setText(result);
}
}
}
好了,代码写完了,一起来看一下效果吧!
ps:如果大家有看不懂的地方可以留言,或者推荐一套视频,Android动感系列扫一扫大牛徐宜生录制,我崇拜的偶像!!!