`
xuanzhui
  • 浏览: 201532 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Android扫描二维码

 
阅读更多

       这里主要介绍一款控件 zxing-android-embedded 。

 

       直接使用 ZXing 当然也不是不可以,甚至zxing现在也提供了android-integration,但是需要用户下载zxing的安卓应用,而该应用功能又有些冗余,于是很多blog都提供了一些精简的步骤,但是,一定程度上增加了开发负担,此时正是 zxing-android-embedded 派的上用场的时候。

 

        建议先下载该控件的demo,运行后有个直观的感受,如果demo里面的例子已经满足个人的需求,直接把对应的activity加到自己的工程即可,比如提供的 CustomScannerActivity.java 就是一个正方形的竖屏的扫码框,在 AndroidManifest.xml 中添加

 

<activity
    android:name=".CustomScannerActivity"
    android:screenOrientation="fullSensor"
    android:stateNotNeeded="true"
    android:theme="@style/zxing_CaptureTheme"
    android:windowSoftInputMode="stateAlwaysHidden">
</activity>

 

在需要使用扫码的activity中初始化,并调用

 

IntentIntegrator integrator = new IntentIntegrator(this);
//是否播放提示音
integrator.setBeepEnabled(true);
//是否保留扫码成功时候的截图
//integrator.setBarcodeImageEnabled(true);
//调用
integrator.setCaptureActivity(CustomScannerActivity.class).initiateScan();

 

设置扫码结果的回调

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
    if(result != null) {
        if(result.getContents() == null) {
            Toast.makeText(this, "您取消了扫描", Toast.LENGTH_LONG).show();
        } else {
        	//二维码的实际内容
			String content = result.getContents();

            //如果你在调用扫码的时候setBarcodeImageEnabled(true)
            //通过下面的方法获取截图的路径
            String imgPath = result.getBarcodeImagePath();
        }
    } else {
        Log.d(TAG, "Weird");
        super.onActivityResult(requestCode, resultCode, data);
    }
}

 

以下主要介绍如何定制化扫码框,比如添加四个直角:

比较好的做法是通过Android Studio将下载的 zxing-android-embedded 作为module加入到工程中,在主module中添加gradle依赖

 

compile(project(':zxing-android-embedded')) { transitive = true }
 
在 package com.journeyapps.barcodescanner 中找到 ViewfinderView,修改 onDraw 方法,以下给出核心代码,具体参考附件
float density = getContext().getResources().getDisplayMetrics().density;
//画扫描框边上的角,总共8个部分
//四个边角对应的宽度
int CORNER_WIDTH = (int) (3 * density);
int CORNER_LEN = (int) (25 * density);

paint.setColor(laserColor);
canvas.drawRect(frame.left, frame.top, frame.left + CORNER_LEN,
        frame.top + CORNER_WIDTH, paint);
canvas.drawRect(frame.left, frame.top, frame.left + CORNER_WIDTH, frame.top
        + CORNER_LEN, paint);
canvas.drawRect(frame.right - CORNER_LEN, frame.top, frame.right,
        frame.top + CORNER_WIDTH, paint);
canvas.drawRect(frame.right - CORNER_WIDTH, frame.top, frame.right, frame.top
        + CORNER_LEN, paint);
canvas.drawRect(frame.left, frame.bottom - CORNER_WIDTH, frame.left
        + CORNER_LEN, frame.bottom, paint);
canvas.drawRect(frame.left, frame.bottom - CORNER_LEN,
        frame.left + CORNER_WIDTH, frame.bottom, paint);
canvas.drawRect(frame.right - CORNER_LEN, frame.bottom - CORNER_WIDTH,
        frame.right, frame.bottom, paint);
canvas.drawRect(frame.right - CORNER_WIDTH, frame.bottom - CORNER_LEN,
        frame.right, frame.bottom, paint);
 效果图
  • 大小: 3.1 MB
分享到:
评论

相关推荐

    Android 扫描二维码,类似微信的不断放大扫描效果, 识别率高。

    总的来说,实现"Android 扫描二维码,类似微信的不断放大扫描效果,识别率高"的功能,需要深入理解Android的相机API、图像处理和Zxing库的使用。通过合理的界面设计和功能优化,我们可以创建出用户友好、性能优秀的...

    android扫描二维码中文乱码

    要解决"android扫描二维码中文乱码"的问题,我们需要对ZXing库进行一些定制化的修改。在描述中提到,已经有人通过修改ZXing.jar中的解码类来适配GBK编码。这个过程通常包括以下步骤: 1. **解压ZXing.jar**:首先,...

    android扫描二维码存手机号

    综上所述,"android扫描二维码存手机号"这个项目涉及了Android应用开发中的多个关键知识点,包括第三方库的集成、系统权限管理、数据操作接口的使用,以及用户交互设计。通过熟练掌握这些技术,开发者可以构建出功能...

    android 扫描二维码源码及实例

    在Android平台上,开发一款能够扫描二维码的应用涉及到许多技术细节。本篇将深入解析"android 扫描二维码源码及实例"中的关键知识点,包括二维码的基本原理、Android二维码库的使用、相机权限处理以及用户界面设计。...

    Xamarin.Android 扫描二维码并跳转网页

    使用VS2017中的Xamarin.Android进行开发,主要实现功能为:扫描二维码,并将扫描结果显示出来,如果结果为网址,则自动跳转到相应的网站。【注意,该项目使用VS2017,低版本的VS无法直接打开解决方案】

    Android扫描二维码及生成二维码Demo

    这个"Android扫描二维码及生成二维码Demo"应该包含了一系列实现这一功能的关键技术点和代码示例。 首先,扫描二维码涉及到的主要库是ZXing(Zebra Crossing),这是一个开源的条形码和二维码读取库。在Android中,...

    android扫描二维码,JAVA源码

    android扫描二维码,JAVA源码

    android 扫描二维码+c# webservice

    总的来说,"android 扫描二维码+c# webservice"这个项目是一个很好的学习资源,它涵盖了Android的二维码扫描技术、C# WebService的使用,以及二者之间的通信。通过这个项目,你可以了解到移动应用与服务器间数据交换...

    android扫描二维码和条形码

    这个"android扫描二维码和条形码"的项目提供了一个高度封装的示例,方便开发者快速集成和使用。以下将详细讲解这一功能的实现原理、关键技术和注意事项。 首先,二维码和条形码的扫描涉及到图像处理和数据解析。在...

    Android 扫描二维码条形码.zip

    在Android平台上,开发一款能够扫描二维码和条形码的应用是一项常见的任务。这个“Android 扫描二维码条形码.zip”文件很可能包含了一个完整的Android项目源码,帮助开发者理解和实现这一功能。下面,我们将深入探讨...

    Android 扫描 wifi 二维码自动连接

    在Android平台上,实现扫描WiFi二维码并自动连接的功能是一项实用的技术,它可以方便用户快速连接到新的无线网络,无需手动输入复杂的密码。以下将详细介绍这个功能的关键知识点: 1. **二维码解析**: - 首先,...

    安卓条码扫描二维码相关-1420707915972android扫描二维码入库.zip

    这个名为"安卓条码扫描二维码相关-1420707915972android扫描二维码入库.zip"的压缩包包含了与实现这一功能相关的资源和源码,有助于开发者学习和实现二维码扫描功能。 首先,我们有一个名为"QR_CodeScan.apk"的应用...

    QWidget 结合QML 在(Qt on Android)调用系统摄像头扫描二维码

    在本文中,我们将深入探讨如何在Qt for Android环境中结合QWidget和QML来调用系统摄像头扫描二维码,并利用ZXing库支持开启闪光灯的功能。Qt是一个跨平台的应用程序开发框架,支持C++和QML两种编程语言,使得我们...

    Android扫描二维码连接wifi

    在Android平台上,开发一个能扫描二维码并连接Wi-Fi的功能是一个实用且常见的需求。这个功能使得用户可以通过扫描包含Wi-Fi配置信息的二维码,快速便捷地连接到无线网络,省去了手动输入SSID(网络名称)和密码的...

    安卓android stduio二维码扫描跳转页面,名片生成

    二维码扫描跳转页面 名片二维码生成 最近做了一个二维码扫描与生成的一个项目,现在记录一下老师给想要的需求,管理员通过二维码扫描然后获取到学生端的信息然后将这段信息记录进数据库中,于是我就查看蛮多的资料的...

    Android 扫描二维码、生成二维码(Google Zxing)

    在Android平台上,开发一款能够扫描二维码和生成二维码的应用是一项常见的任务。这个项目使用了Google的Zxing库,它是一个开源的二维码和条形码处理库,功能强大且易于集成。以下将详细介绍如何利用Zxing实现二维码...

    Android二维码扫描+闪光

    在Android平台上实现二维码扫描功能,通常需要借助第三方库或者Android SDK自带的部分功能。"Android 二维码扫描+闪光"这个主题涵盖了两个主要知识点:二维码扫描和闪光灯的使用。接下来,我们将详细探讨这两个方面...

    android扫描二维码源码 可打开闪光灯

    总之,这个"android扫描二维码源码 可打开闪光灯"项目展示了如何利用ZXing库在Android上构建一个功能完备的二维码扫描器,结合了闪光灯功能,使得在低光照环境下的扫描更加实用。理解并掌握这些关键知识点对于开发...

    Android二维码实现扫描生成

    要实现在Android应用中扫描二维码,首先需要集成ZXing库。这可以通过添加ZXing的AAR依赖到项目的build.gradle文件中,或者将ZXing的源码导入项目。依赖添加后,可以创建一个扫描界面,通常是一个SurfaceView,用于...

Global site tag (gtag.js) - Google Analytics