android 二维码 Zxing记录
来源:互联网 发布:网络空间安全考研排名 编辑:程序博客网 时间:2024/05/18 16:16
参考资料:https://github.com/journeyapps/zxing-android-embedded 这个礼拜公司要一个生产二维码和扫描二维码的demo。因此花了2天时间去找二维码方面的资料,找了很多资料,大部分都推荐用google开源的Zxing的二维码库,因此也遇到很多坑,下载下来的代码不能扫描,或者是不能生产二维码,最后搞定特写一遍记录二维码的demo方便以后用,同时也希望可以帮助大家。关于google Zxing的源码在github上面 地址:https://github.com/zxing/zxing 。二维码其实就是用一张图片来记录一些信息,如uri等信息,利用图片的算法来把信息用图片记录。当扫描的时候就或者图片记录的信息,做进一步的处理。一。生成二维码1.首先需要添加Zxing的core_3.2.0.jar包 在添加到libs下面。 public void generateQR(){ Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>(); BitMatrix matrix = null; hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); String text = et_targetText.getText().toString(); if (text.length() == 0){ Log.e(TAG,"text cannot be empty"); return; } try { matrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, 120, 120); } catch (WriterException e) { e.printStackTrace(); } int width = matrix.getWidth(); int height = matrix.getHeight(); int[] pixels = new int[width * height]; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { if (matrix.get(x, y)) { pixels[y * width + x] = BLACK; } } } bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); bitmap.setPixels(pixels, 0, width, 0, 0, width, height); iv_displayQR.setImageBitmap(bitmap);}从代码中可以看到最后生成的是一个Bitmap。二。扫描二维码。 public void scanQR(){ new IntentIntegrator(this).initiateScan();}在这里已经封装好了,直接调用。因为android 6.0开始的runtime权限的问题需要申请camera的权限。接下来会调用public Intent createScanIntent() { Intent intentScan = new Intent(activity, getCaptureActivity()); intentScan.setAction(Intents.Scan.ACTION); // check which types of codes to scan for if (desiredBarcodeFormats != null) { // set the desired barcode types StringBuilder joinedByComma = new StringBuilder(); for (String format : desiredBarcodeFormats) { if (joinedByComma.length() > 0) { joinedByComma.append(','); } joinedByComma.append(format); } intentScan.putExtra(Intents.Scan.FORMATS, joinedByComma.toString()); } intentScan.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intentScan.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); attachMoreExtras(intentScan); return intentScan;}可以看到进入了CaptureActivity进行扫描。扫描后的结果用一个回调到了IntentResult。获取回调结果: protected void onActivityResult(int requestCode, int resultCode, Intent data) { IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); if(result != null) { if(result.getContents() == null) { Log.d("MainActivity", "Cancelled scan"); Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show(); } else { Log.d("MainActivity", "Scanned"); et_qrContent.setText(result.getContents()); } } else { // This is important, otherwise the result will not be passed to the fragment super.onActivityResult(requestCode, resultCode, data); }}记录完毕,扫描阶段就是一个图形识别,想对图像识别研究可以下载Zxing的源码去研究下此demo的源码:https://github.com/GithubRyze/ZxingDemo
1 0
- android 二维码 Zxing记录
- android 二维码zxing开发
- Android ZXing 二维码
- android 二维码 google ZXing
- android zxing二维码横屏改竖屏
- Android二维码讲解(ZXing)
- Android之zxing二维码
- Android zxing生成二维码
- Android之二维码zxing
- Android二维码之zxing
- 【ZXing】Android使用zxing生成二维码图片
- android二维码ZXing学习流程
- Android -- 采用zxing生成二维码
- Android zxing二维码开发 横屏转竖屏
- Android中Zxing扫描二维码
- Android 使用Zxing生成二维码
- Android二维码工具zxing使用
- android zxing 扫描二维码 横屏转竖屏
- MySql中字段类型与长度和取值范围解析
- linux sheel脚本里面,在if语句里“$? -eq o” 这是什么意思!!!
- 秒杀后台系统设计
- 在vue项目中前端生成二维码应该注意的问题
- 随机产生一个整数
- android 二维码 Zxing记录
- 自定义视频播放(原生)
- 控制台访问模型
- Volume of Mesh Calculation With WebGL
- missing artifact jdk.tools:jar:1.7
- linux shell 中的sleep命令
- STM32在KEIL4.7下生成BIN文件
- Android AlarmManager实现不间断轮询服务
- Memcached 笔记与总结(6)PHP 实现 Memcached 的一致性哈希分布算法