Android开发学习之路-二维码学习

这个月装逼有点少了,为什么呢,因为去考软件射鸡师了,快到儿童节了,赶紧写篇博纪念一下逝去的青春,唔,请忽略这句话。

二维码其实有很多种,但是我们常见的微信使用的是一种叫做QRCode的二维码,像下面这样的,可以放心的扫,这只是我的博客主页链接啦:

关于QR码编码的二维码,我们要知道几个特点:

1. 扫描时可以从各个角度去扫,也就是旋转多少度都没关系,不信吗?下次去肯德基买单试试咯。

2. 二维码有容错率,容错率越大,生成的二维码也就越复杂,但是越不容易出错,并且,当二维码被遮挡的时候也越容易扫描出来。这里我上传的二维码容错为30%,可以从左上角开始扫描,大概扫描到下图范围的时候就可以识别出来了:

3. 二维码的字符内容是有限制的,并且内容越多,二维码越复杂。如果想你的二维码容易被一些像素低的手机扫描出来,就尽量不要太复杂。

注意:二维码生成可以通过各种网站来完成,只需要输入内容即可得到。

既然二维码生成了,我们就要知道怎么用手机来扫描然后得到二维码代表的内容,这里介绍一个最简单的第三方库:barcodescaner

我们通过这个库,可以直接编写一个用于拍摄并识别的活动,然后通过活动返回的结果进行结果处理,具体的步骤如下:

1. 添加依赖

compile ‘me.dm7.barcodescanner:zxing:1.8.4‘

2. 创建一个活动,代码如下所示:

public class ScannerActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler {
    private ZXingScannerView mZXingScannerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mZXingScannerView = new ZXingScannerView(this); // 将ZXingScannerView作为布局
        setContentView(mZXingScannerView);
    }

    @Override
    protected void onResume() {
        super.onResume();
        mZXingScannerView.setResultHandler(this); // 设置处理结果回调
        mZXingScannerView.startCamera(); // 打开摄像头
    }

    @Override
    protected void onPause() {
        super.onPause();
        mZXingScannerView.stopCamera(); // 活动失去焦点的时候关闭摄像头
    }

    @Override
    public void handleResult(Result result) { // 实现回调接口,将数据回传并结束活动
        Intent data = new Intent();
        data.putExtra("text", result.getText());
        setResult(RESULT_OK, data);
        finish();
    }
}

3. 在主活动中打开这个活动,并处理传回的数据:

public class HomeActivity extends AppCompatActivity {
    private TextView mTextView;
    private WebView mWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
        mTextView = (TextView) findViewById(R.id.tv);
        mWebView = (WebView) findViewById(R.id.wv);
    }

    public void scanCode(View view){
        startActivityForResult(new Intent(this, ScannerActivity.class), 1);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK){
            mTextView.setText(data.getStringExtra("text")); // 显示识别到的文字
            mWebView.loadUrl(data.getStringExtra("text")); // 将识别的内容当作网址加载到WebView
        }
    }
}

4. 添加摄像头和访问网络权限:

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

使用这个工具类的方法非常简单,只需要将一个ZXingScannerView作为整个活动的布局,然后设置解析成功的回调接口,实现回调的方法将数据回传个主活动即可。

当然,如果是需要一个自定义扫描界面的效果,就没有这么简单了。

时间: 2025-02-01 11:53:44

Android开发学习之路-二维码学习的相关文章

Android 开发中使用到二维码生成和解析

二维码生成 二维码解析 在项目的开发中, 使用二维码作为数据传递 交换 已经是常态了! 在这我也讲讲自己在项目开发中使用到的二维码. 生成二维码的开发流程 1 应用google 给我们提供的zxing.jar (建议官网下载) 2 使用zxing.jar 的MultiFormatWriter 类 生成一张二维码图片 核心代码块 /** * 方法说明:生成无图片二维码 */ @SuppressWarnings("unused") private Bitmap createTwoCode(

android开发修改相机扫描二维码框的高宽

我用的是网上一个现成的例子,可以直接用,但是高宽不合适,现在主流都是大屏幕手机了,所以需要更改. 找到CameraManager 类,更改下面的方法 public Rect getFramingRect() { Point screenResolution = configManager.getScreenResolution(); if (framingRect == null) { if (camera == null) { return null; } int width = screen

php微信开发之带参数二维码的使用

最近做微信PC端网页微信相关功能的开发,从一个新手的角度来说,微信公众号的文档还是不好理解的,网上找的帖子大都也都基本上是复制微信公众平台上给的文档,开发微信带参数二维码过程中还是遇到不少坑的,在此把我的开发过程比较详细的记录下,希望对大家有所帮助. 我本次开发使用的是认证服务号. 1 接入首先进入微信公众号 -> 基本配置 下面是基本配置的页面,在URL中填写服务器地址,这个地址就是接受微信推送事件的一个接口,我是使用thinkPHP框架开发的程序,在其中一个Module(Decoration

在Android用ZXing.jar识别二维码的精简版(简化了配置和代码)

最近公司做了一款OTP令牌激活的产品,由于之前激活手机令牌需要输入很多的激活信息才能进行激活.经过一段使用后,发现易用性不是很强,考虑如果加入二维码的的扫码功能岂不是大大增加了易用性.     在网上搜了很多资料,要不是配置太多,要不就是代码量太大,最后没办法就硬着头皮去写和去精简,最后压缩至目前的版本.如果有更好的版本可以联系我. 具体DEMO可以通过 下载http://download.csdn.net/detail/fugui6611634/7341277下载 本文代码运行的结果如下: 代

Android之自定义生成彩色二维码

先导个zxing.jar包 下面是xml布局 activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height=&

Emgu-WPF学习使用-识别二维码的位置

原文:Emgu-WPF学习使用-识别二维码的位置 ? ?参考链接:http://blog.csdn.net/gaobobo138968/article/details/47663607 ? ?我完全参照该链接实现了二维码的位置锁定,向原作者致敬. ? ?由于我使用的为最新版本的Emgu,很多封装函数调用方法有所变化,新手接触Emgu,尝试做了调整,部分参数也做了微调! ? ?我使用的Emgu版本:emgucv-windesktop 3.2.0.2682 ? ?最终我实现的效果图如下: 前台xam

Android:使用ZXing生成二维码(支持加入Logo图案)

ZXing是谷歌的一个开源库.能够用来生成二维码.扫描二维码.本文所介绍的是第一部分. 首先上效果图: ZXing相关各种文件官方下载地址:https://github.com/zxing/zxing/releases 或者在这里下载(仅仅有本项目所用的jar包,版本:3.2.0):链接: http://pan.baidu.com/s/1hq3s5EW password: mvg7 1.生成二维码的工具类 /** * 二维码生成工具类 */ public class QRCodeUtil { /

【转】Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果--不错

原文网址:http://blog.csdn.net/xiaanming/article/details/10163203 转载请注明出处:http://blog.csdn.net/xiaanming/article/details/10163203 了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一张图片中扫一下竟然能直接加好友,不可思议啊,那时候还不了解二维码,呵呵,然后做项目的时候,老板说要加上二维码扫描功能,然后自己的屁颠屁颠的去百度,google啥的,发现

自己开发chrome插件生成二维码

摘要: 最近在开发微信项目时,需要在微信调试,所以经常会在微信中输入本地服务地址,输入起来特别麻烦,所以自己就想了想微信中的扫一扫,然后开发了这款chrome插件,将当前url生成二维码,用微信扫一扫就可以看效果了.在公司里面已经使用起来了,屡试不爽. 代码地址:https://github.com/baixuexiyang/qrcode 欢迎star和fork