返回顶部
首页 > 资讯 > 移动开发 >Android中的二维码生成与扫描功能
  • 873
分享到

Android中的二维码生成与扫描功能

二维二维码Android 2022-06-06 04:06:04 873人浏览 泡泡鱼
摘要

0. 前言 今天这篇文章主要描述二维码的生成与扫描,使用目前流行的Zxing,为什么要讲二维码,因为二维码太普遍了,随便一个Android APP都会有二维码扫描。本篇旨在帮助

0. 前言

今天这篇文章主要描述二维码的生成与扫描,使用目前流行的Zxing,为什么要讲二维码,因为二维码太普遍了,随便一个Android APP都会有二维码扫描。本篇旨在帮助有需求的同学快速完成二维码生成和扫描的功能。

1.    Zxing的使用

GitHub上下载项目后,可以看到整体代码结构如下:

这里写图片描述

我们只需将Zxing包下的所有代码copy一份到我们的项目中去,除了这些还需要zxing的jar包,最后相应的资源文件,包括values文件下的ids文件、raw文件中的资源文件(可以替换)、layout文件下的activity_capture.xml(可以进行相应的订制) 和图片资源。 

2.    生成二维码的实现

等上面工作全部准备完毕后,就可以创建我们的二维码了。如何生成二维码?

需要EncodingUtils这个二维码生成工具类。通过调用工具类中的createQRCode()方法来生成二维码。该方法参数介绍如下:


 
public static Bitmap createQRCode(String content, int widthPix, int heightPix, Bitmap loGoBm)

下面完成的是生成的一个百度地址的二维码,中间LOGO是Android小机器人。并保存图片到本地,方便后续测试二维码的本地读取功能。


 
 private void create() { 
 int width = DensityUtil.dip2px(this, 200); 
 Bitmap bitmap = EncodingUtils.createQRCode("Http://www.baidu.com", 
  width, width, BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher)); 
 iv_zxing.setImageBitmap(bitmap); 
 saveBitmap(bitmap); 
 } 
  
 public void saveBitmap(Bitmap bitmap) { 
 // 首先保存图片 
 File appDir = new File(Environment.getExternalStorageDirectory(),"zxing_image"); 
 if (!appDir.exists()) { 
  appDir.mkdir(); 
 } 
 String fileName = "zxing_image" + ".jpg"; 
 File file = new File(appDir, fileName); 
 try { 
  FileOutputStream fos = new FileOutputStream(file); 
  bitmap.compress(CompressFORMat.JPEG, 100, fos); 
  fos.flush(); 
  fos.close(); 
 } catch (Exception e) { 
  e.printStackTrace(); 
 } 
 // 把文件插入到系统图库 
 try { 
  MediaStore.Images.Media.insertImage(this.getContentResolver(),file.getAbsolutePath(), fileName, null); 
 } catch (FileNotFoundException e) { 
  e.printStackTrace(); 
 } 
 // 通知图库更新 
 sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, 
  Uri.parse("file://" + "/sdcard/namecard/"))); 
} 

看到如下效果:

这里写图片描述

3.    读取二维码的实现

3.1  摄像头扫描的方式

二维码扫描需要借助于CaptuReactivity这个类,打开CaptureActivity界面并进行扫描,扫描完毕后回调onActivityResult()方法,从onActivityResult()中得到扫描后的结果。效果就不演示的,因为使用的是模拟器。详细代码如下:


  
private void open() { 
 config(); 
 startActivityForResult(new Intent(MainActivity.this,CaptureActivity.class), 0); 
} 
 
private void config() { 
 WindowManager.LayoutParams lp = getWindow().getAttributes(); 
 lp.screenBrightness = 1.0f; 
 getWindow().setAttributes(lp); 
} 
@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"); 
 tv_result.setText(result); 
 } 

3.2  本地图片扫描的方式

扫描本地图片需要我们在CaptureActivity中进行相应的修改,为此我在扫描界面底部增加了一个按钮,用来选择本地图片。layout代码这里就不展示,我们直接看点击后的事件处理。


 
private void openLocalImage() { 
 // 打开手机中的相册 
 Intent innerIntent = new Intent(Intent.ACTION_GET_CONTENT); 
 innerIntent.setType("image 
 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(); 
}

获取到图片路径后需要将其二维码信息包装成Result对象,因此需要解析图片:


 
 public Result scanningImage(String path) { 
 if (TextUtils.isEmpty(path)) { 
  return null; 
 } 
 Hashtable<DecodeHintType, String> hints = new Hashtable<DecodeHintType, String>(); 
 hints.put(DecodeHintType.CHARACTER_SET, "UTF8"); // 设置二维码内容的编码 
 BitmapFactory.Options options = new BitmapFactory.Options(); 
 options.inJustDecodeBounds = true; // 先获取原大小 
 scanBitmap = BitmapFactory.decodeFile(path, options); 
 options.inJustDecodeBounds = false; // 获取新的大小 
 int sampleSize = (int) (options.outHeight / (float) 200); 
 if (sampleSize <= 0) 
  sampleSize = 1; 
 options.inSampleSize = sampleSize; 
 scanBitmap = BitmapFactory.decodeFile(path, options); 
 int width = scanBitmap.getWidth(); 
 int height = scanBitmap.getHeight(); 
 int[] pixels = new int[width * height]; 
 scanBitmap.getPixels(pixels, 0, width, 0, 0, width, height); 
  
 RGBLuminanceSource source = new RGBLuminanceSource(width, height, 
  pixels); 
 BinaryBitmap bitmap1 = new BinaryBitmap(new HybridBinarizer(source)); 
 QRCodeReader reader = new QRCodeReader(); 
 try { 
  return reader.decode(bitmap1, hints); 
 } catch (NotFoundException e) { 
  e.printStackTrace(); 
 } catch (ChecksumException e) { 
  e.printStackTrace(); 
 } catch (FormatException e) { 
  e.printStackTrace(); 
 } 
 return null; 
 } 

根据路径获取Bitmap,最后通过QRCodeReader 中的decode方法解析成Result对象并返回,最终传递给handleDecode方法。运行程序效果如下,扫描出来的是之前定义的百度地址。

这里写图片描述

最后不要忘了申明权限和CaptureActivity。


<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 
<uses-permission android:name="android.permission.CAMERA"/> 
<uses-permission android:name="android.permission.VIBRATE"/> 
<activity android:name="com.example.zxingtest.zxing.activity.CaptureActivity"/> 

大家可以参考下这篇文章:Android实现二维码扫描和生成的简单方法

以上所述是小编给大家介绍的Android中的二维码生成与扫描功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程网网站的支持!

您可能感兴趣的文章:Android二维码的生成与扫码-zxing示例代码Android-Zxing实现二维码的扫描与生成Android中使用ZXing生成二维码(支持添加Logo图案)Android Zxing生成二维码经典案例分享Android实现二维码扫描和生成的简单方法Android 二维码 生成和识别二维码 附源码下载Android平台生成二维码并实现扫描 & 识别功能Android 动态加载二维码视图生成快照的示例


--结束END--

本文标题: Android中的二维码生成与扫描功能

本文链接: https://lsjlt.com/news/22619.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android中的二维码生成与扫描功能
    0. 前言 今天这篇文章主要描述二维码的生成与扫描,使用目前流行的Zxing,为什么要讲二维码,因为二维码太普遍了,随便一个Android APP都会有二维码扫描。本篇旨在帮助...
    99+
    2022-06-06
    二维 二维码 Android
  • Android-Zxing实现二维码的扫描与生成
    Zxing: Zxing是一个开放源码,用java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。可以实现使用手机内置摄像头完成条形码的扫描以及解码。 ...
    99+
    2022-06-06
    zxing 二维 二维码 Android
  • Android studio 实现生成二维码和扫描二维码
    效果图 build.gradle(:app)添加依赖 dependencies { implementation 'com.google.zxing:core:3.3.3' imple...
    99+
    2023-09-30
    android studio android ide
  • Android中二维码的扫描和生成(使用zxing库)
    目录一.zxing是什么?二.集成zxing框架三.界面设计四.二维码生成五.二维码扫描附:Android使用Zxing识别图片多个二维码总结一.zxing是什么? zxing是go...
    99+
    2024-04-02
  • Android中怎么实现二维码扫描功能
    这期内容当中小编将会给大家带来有关Android中怎么实现二维码扫描功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1 开发准备1.1 android studio 安装&emsp;&e...
    99+
    2023-06-04
  • Android平台生成二维码并实现扫描 &amp; 识别功能
    1.二维码的前世今生 “二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信...
    99+
    2022-06-06
    生成二维码 二维 二维码 Android
  • Android中二维码的生成方法(普通二维码、中心Logo 二维码、及扫描解析二维码)
    首先声明我们通篇用的都是Google开源框架Zxing,要实现的功能有三个 ,生成普通二维码、生成带有中心图片Logo 的二维码,扫描解析二维码,直接上效果图吧 首先我们需要...
    99+
    2022-06-06
    方法 二维 二维码 Android
  • 如何在 ASP 中实现二维码的生成与扫描?
    二维码已经成为了现代通信和支付的重要方式。在 ASP 中,生成和扫描二维码是一项非常有用的功能,可以应用于各种场景,例如电子支付、门禁管理、会员卡等等。本文将介绍如何在 ASP 中实现二维码的生成与扫描。 一、生成二维码 在 ASP 中,我...
    99+
    2023-10-25
    二维码 laravel 面试
  • ios原生二维码扫描与生成的实现教程
    之前都是第三方的二维码,操作简单pod集成,美滋滋。随着公司项目越来越恶心到大,还是自己撸一个比较实在。 demo的主要功能扫描二维码和生成二维码。 扫描相关类 二维码扫描需要获取...
    99+
    2022-05-23
    ios 二维码 扫描
  • 基于barcodescanner实现Android二维码扫描功能
    二维码扫描现在成为一种非常常见的APP基础功能,附录1是我曾经用过的二维码/条形码扫描开源项目,但是附录1的项目集成和二次定制比较繁琐和麻烦,因此可以发现不少人基于ZXing做了二次的开发,并贡献出这些项目,发到github上,其中barc...
    99+
    2023-05-30
    android 二维码 barcodescanner
  • iOS第三方框架二维码生成与扫描
    本文实例为大家分享了iOS第三方二维码生成与扫描的具体代码,供大家参考,具体内容如下 导入第三方框架libqrencode(生成二维码)和ZBarSDK(二维码扫描) 导入头文件...
    99+
    2022-06-04
    iOS 二维码
  • ios原生二维码扫描
    做iOS的二维码扫描,有两个第三方库可以选择,ZBar和ZXing。今天要介绍的是iOS7.0后AVFoundation框架提供的原生二维码扫描。 首先需要添加AVFoundatio...
    99+
    2022-05-27
    ios二维码 二维码扫描
  • Android实现二维码扫描和生成的简单方法
    这里简单介绍一下ZXing库。ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。Zxing可以实现使用手机的内置的摄...
    99+
    2022-06-06
    二维码扫描 方法 二维 二维码 Android
  • IOS笔记061之二维码的生成和扫描
    如今二维码随处可见,无论是实物商品还是各种礼券都少不了二维码的身影。而手机等移动设备又成为二维码的一个很好的应用平台,不管是生成二维码还是扫码二维码。本篇文章从生成二维码、扫描二维码...
    99+
    2022-05-20
    ios 二维码
  • iOS 二维码扫描相关功能实现
    写在前面 最近项目要实现相机扫描二维码功能,具体要求:1、扫描框 2、扫描动画 3、相册识别二维码 4、声音反馈。 记得之前用过三方库做过类似功能,但是也是知其然不知其所以然,然后今...
    99+
    2022-06-04
    iOS 二维码 扫描
  • H5如何制作二维码扫描功能
    这篇文章主要为大家展示了“H5如何制作二维码扫描功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“H5如何制作二维码扫描功能”这篇文章吧。引子: 最近公司项目有...
    99+
    2024-04-02
  • jQuery如何实现二维码扫描功能
    这篇文章主要介绍了jQuery如何实现二维码扫描功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。二维码:利用图形模拟二进制0、1的概念,达...
    99+
    2024-04-02
  • Android中google Zxing实现二维码与条形码扫描
    Android中google Zxing实现二维码与条形码扫描了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一张图片中扫一下竟然能直接加好友,不可思议啊,那时候还不了解二维码,呵呵,然后做项目的时候,老板说...
    99+
    2023-05-31
    android zxing 二维码
  • Android开发怎么实现模仿360二维码扫描功能
    小编给大家分享一下Android开发怎么实现模仿360二维码扫描功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:一、效果图:二、框架搭建首先,下载最新...
    99+
    2023-05-30
    android
  • 如何使用HTML5实现二维码扫描功能
    本篇内容介绍了“如何使用HTML5实现二维码扫描功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!   ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作