Android二维码(仿微信,轻量Zxing)

本文介绍了如何在Android应用中轻量级集成Zxing进行二维码识别,解决了横竖屏切换问题,并实现了类似微信的扫描效果。作者提供了一个名为ZxingLite的工程,包含核心功能的封装和优化,包括自定义AutoScannerView控件,使得识别区域更加灵活。通过导入模块、添加权限和简单配置,即可快速集成到项目中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

要做一个功能,二维码识别。网上找一堆相关的Demo,但是总不是想要的效果,或者都是多年前的版本,权衡考虑之后,决定亲自操刀。不纠结直接选中Zxing框架,https://github.com/zxing/zxing 在网站上直接clone下来,运行,然后就发现问题了…

选Zxing存在的问题

  • 为什么是横屏,调成竖屏,居然有问题
  • 这个包居然有好多用不着的代码
  • 默认识别的界面不是想要的效果
  • 加个Title在顶部之后识别框居然不居中

发现问题,那么本文的优点就来了,且听一一道来

  • 集成速度快,相关核心功能都已经再次封装好
  • 最新的V3.30的工程,识别速度快,基本见图秒识别
  • 解决横竖屏的问题,通过设置Activity的android:screenOrientation=”portrait” 方式设置,就可以自适应横屏竖屏
  • 去掉工程中无用的代码,留下最核心的代码,实现最最最轻量级
  • 自定义AutoScannerView控件,实现微信识别区域的效果
  • 解决工程之间只以屏幕为居中的问题,目前可以根据设置宽度高度自适应居中
  • 具体示例参考:https://github.com/yangxixi88/ZxingLite

光说不练假把式,上动图

模仿微信的效果,真机上效果更好,录屏的将就着看
模仿微信的效果,真机上效果更好,录屏的将就着看

默认效果
默认效果

集成方式

1、导入zxinglite工程,Andorid Studio通过Import Module方式导入
2、导入目标工程之后,如果有存在R等资源文件未找到,可以在菜单栏Build->Make Module zxinglite 即可
3、添加两个权限

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.VIBRATE" />

4、集成BaseCaptureActivity,实现getSurfaceView()和dealDecode()等方法
5、布局样式,仿微信效果则用AutoScannerView,默认效果使用com.google.zxing.client.android.ViewfinderView

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_wechat_capture"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="yangxixi.zxinglib.WeChatCaptureActivity">

    <SurfaceView
        android:id="@+id/preview_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

    <com.google.zxing.client.android.AutoScannerView
        android:id="@+id/autoscanner_view"
        android:layout_width="match_parent"
        android:layout_height</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值