ZXing Kotlin 完整指南:QR码与条形码扫描实战教程
在移动应用和流程自动化日益普及的今天,快速读取QR码和条形码已成为行业标配。ZXing(发音为"zebra crossing")是一款强大的开源图像处理库,让开发者能够轻松集成一维码(EAN、UPC、Code 128)和二维码(QR、Data Matrix、Aztec)的识别与生成功能。
本教程专为Kotlin开发者打造,从基础安装到编写高性能扫描器,带你全面掌握ZXing。我们不仅讲解标准用法,还会剖析新手常踩的坑,助你少走弯路。
1. ZXing是什么?为什么选择它?
ZXing 是专注于条码解码与编码的图像处理库,由Google创建并由社区维护。它的核心优势在于跨平台支持(Java/Kotlin、C++、JavaScript、Python)以及海量格式兼容:从经典的QR码到PDF417等工业专用码,一应俱全。
为什么在Kotlin项目中选择ZXing?首先,它是Android开发的黄金标准。其次,库中内置了与CameraX或Camera2配合使用的相机类,省去了编写底层视频捕获代码的麻烦。此外,ZXing不仅能处理实时视频流,还能解析图库中的静态图片,应用场景极为广泛:从扫描收据到物流包裹条码识别,无所不能。
2. 安装指南
在Kotlin(Android)项目中,通过Gradle构建系统即可完成安装。在 build.gradle(Module: app)文件中添加以下依赖:
dependencies {
// ZXing 核心库
implementation("com.google.zxing:core:3.5.3")
// 相机模块(推荐)
implementation("com.journeyapps:zxing-android-embedded:4.3.0")
}
如果你使用Kotlin Multiplatform或纯服务端Kotlin(Ktor),只需引入核心模块:
implementation("com.google.zxing:core:3.5.3")
桌面应用(JVM)同理,在Maven或Gradle中添加依赖即可。同步项目后,库即可使用。
3. 快速上手——最小化示例
测试ZXing最简单的方式是启动内置扫描Activity。只需调用Intent即可。以下是Android Activity的Kotlin最小代码:
import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.journeyapps.barcodescanner.ScanContract
import com.journeyapps.barcodescanner.ScanOptions
class MainActivity : AppCompatActivity() {
// 注册扫描启动合约
private val barcodeLauncher = registerForActivityResult(ScanContract()) { result ->
if (result.contents == null) {
Toast.makeText(this, "扫描已取消", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this, "扫描结果:${result.contents}", Toast.LENGTH_LONG).show()
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 配置扫描选项
val options = ScanOptions()
options.setDesiredBarcodeFormats(ScanOptions.QR_CODE) // 仅扫描QR码
op