https://github.com/journeyapps/zxing-android-embedded/releases/tag/v4.3.0最推荐的开源 ZXing Demo和库 (直接可以拿来用)纯原生的 ZXing 库代码非常老自己手写相机预览再把图像帧传给ZXing解析非常痛苦涉及各种对焦、屏幕旋转、图像格式转换问题。目前安卓开发界最常用、最稳定的 ZXing 封装库是zxing-android-embedded它帮你把“打开相机、持续预览、自动对焦、解析二维码/条形码、返回结果”全部做好了。 GitHub 源码与 Demo 地址仓库地址https://github.com/journeyapps/zxing-android-embedded官方现成的 Demo APK 下载可以先装到机器上看看效果你可以直接下载他们源码编译出来的示例或者去 GitHub Releases 里面找通常它的基本形态就是一个带扫码框的持续预览界面。️ 如何集成到你的 App 中极简教程如果你负责写代码或者需要把方案交给软件开发同事只需要 5 分钟就能实现你要的功能第一步在 app/build.gradle 中引入依赖codeGroovydependencies {// 引入封装好的 zxing 库implementation(‘com.journeyapps:zxing-android-embedded:4.3.0’)// 引入 zxing 核心解析库implementation(‘com.google.zxing:core:3.4.1’)}第二步在你的页面加一个“扫码按钮”并绑定点击事件codeJavaimport com.journeyapps.barcodescanner.ScanContract;import com.journeyapps.barcodescanner.ScanOptions;public class MainActivity extends AppCompatActivity {// 注册扫码回调扫到码后会回到这里 private final ActivityResultLauncherScanOptions barcodeLauncher registerForActivityResult(new ScanContract(), result - { if(result.getContents() null) { Toast.makeText(this, 取消扫码, Toast.LENGTH_LONG).show(); } else { // 【关键】这里就是扫码结果可以显示在屏幕上 Toast.makeText(this, 扫码结果: result.getContents(), Toast.LENGTH_LONG).show(); } }); Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button scanBtn findViewById(R.id.btn_scan); scanBtn.setOnClickListener(v - { // 配置扫码界面并启动 ScanOptions options new ScanOptions(); options.setDesiredBarcodeFormats(ScanOptions.ALL_CODE_TYPES); // 支持一维码和二维码 options.setPrompt(请对准条形码/二维码); // 屏幕底部提示文字 options.setCameraId(0); // 0是后置摄像头1是前置 options.setBeepEnabled(true); // 扫码成功后滴一声 options.setBarcodeImageEnabled(true); // 启动持续预览的扫码界面 barcodeLauncher.launch(options); }); }}就这么几行代码它就会弹出一个全屏的相机扫码界面扫到码自动返回完美符合你“点击按钮-预览-扫到显示”的需求。