Android二维码工具zxing使用
2023-09-11 14:14:09 时间
二维码在我们生活中随处可见。在我眼里简直能够用“泛滥”来形容啦。那怎样在我们Android项目中扫描识别二维码或生成二维码图片呢?
我们通常使用的开源框架是zxing。在github上的开源地址:https://github.com/zxing/zxing,眼下在做的项目中也用到这个框架,
所以自己做了个demo,方便学习及下次使用。
识别二维码
/**
* 扫描二维码演示样例
*/
public class ScanCodeActivity extends Activity implements View.OnClickListener {
private Button start_scan;
private TextView result_tv;
private final static int REQUEST_CODE = 100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scan);
this.start_scan = (Button) findViewById(R.id.start_scan);
this.result_tv = (TextView) findViewById(R.id.result_tv);
this.start_scan.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.start_scan) {
//zxing框架已经帮我们封装好相应的实现类。直接调用startActivityForResult就可以
Intent intent = new Intent(this, CaptureActivity.class);
startActivityForResult(intent, REQUEST_CODE);
}
}
/**
* 在onActivityResult中处理数据
* @param requestCode
* @param resultCode
* @param data
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
Bundle bundle = data.getExtras();
String scanResult = bundle.getString("result");
this.result_tv.setText(scanResult);
}
super.onActivityResult(requestCode, resultCode, data);
}
}
生成二维码:
/**
* 生成二维码演示样例
*/
public class MadeCodeActivity extends Activity implements View.OnClickListener {
private EditText code_edt;
private Button made_code;
private ImageView result_iv;
private CheckBox logo_cb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_made);
this.code_edt = (EditText) findViewById(R.id.code_edt);
this.made_code = (Button) findViewById(R.id.made_code);
this.result_iv = (ImageView) findViewById(R.id.result_iv);
logo_cb = (CheckBox) findViewById(R.id.logo_cb);
this.made_code.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.made_code) {
String content = code_edt.getText().toString().trim();
boolean isAddLogo = logo_cb.isChecked();
if (TextUtils.isEmpty(content)) {
Toast.makeText(this, "输入内容不能为空", Toast.LENGTH_LONG).show();
return;
}
madeCode(content, isAddLogo);
}
}
/**
* 生成二维码
*
* @param content 要生成图片的文字内容
* @param isAddLogo 是否在二维码中加入LOGO图片
*/
private void madeCode(String content, boolean isAddLogo) {
String bitmapPath;
if (!isAddLogo) {//不带LOGO
bitmapPath = EncodeUtil.createQRImage(this, content, 300, 300, null);
} else {//带Logo,R.mipmap.ic_launcher就是LOGO相应图片,自行加入
bitmapPath = EncodeUtil.createQRImage(this, content, 300, 300, BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
}
if (!TextUtils.isEmpty(bitmapPath)) {
result_iv.setImageBitmap(BitmapFactory.decodeFile(bitmapPath));
}
}
}
完毕的项目(AndroidStudio项目)下载地址:
http://download.csdn.net/detail/true100/9487162
相关文章
- Android系统自带的android.util.Base64的实现源码
- Android Studio Flutter 调试技巧 Flutter Inspector 提升你的维护开发效率 轻松定位复杂嵌套Widget代码位置
- Android学习之逐帧动画
- Android eclipse中程序调试
- Android USB转串口开发(hoho.android.usbserial串口库)
- Android 动态绘制曲线等各种图形
- Android如何让真机显示debug log的调试信息
- 【Android】java.lang.RuntimeException: java.lang.Throwable: A WebView method was called on thread 'JavaBridge'.
- Android studio的错误:radle sync failed: Cause: failed to find target android-21 :
- Android之仿今日头条顶部导航栏效果
- Android---- 获取当前应用的版本号和当前android系统的版本号
- Android图形显示系统——上层显示1:界面绘制大纲---android的GUI系统
- 解决Android SDK Manager下载问题和android studio每次启动都要在fetching Android sdk compoment information
- 行人检测(人体检测)3:Android实现人体检测(含源码,可实时人体检测)
- Android 开发UI牛博[转]
- Android学习之修改主题的方法
- findlibrary returned null产生的联想,Android ndk开发打包时我们应该怎样注意平台的兼容(x86,arm,arm-v7a)
- Android 混淆打包不混淆第三方jar包
- Android API之android.widget.Filterable
- Android(Lollipop/5.0) Material Design(四) 创建列表和卡片