一分钟实现扫描二维码功能

前言

二维码扫描的功能在很多APP上都会出现,较为常用的第三方库是zxing,zxing很强大,但是有时候我们并不需要那么复杂的功能,只需要简单的扫描、生成以及处理扫描结果,一般都是通过重写几个类来实现项目需求。我开发了几个项目都用到了扫描二维码的功能,第一个项目,写了个完整的功能,之后的项目都是从第一个项目里面复制代码的,几次之后,觉得有点繁琐,所以就单独封装成一个项目,传到jcenter上,以后再遇到扫描二维码的功能,只需要在gradle导入,即可实现快速开发了。

下载APP体验
img

导入

compile 'com.hebin:hxbrzxing:1.0.1'

使用

导入库之后,就可以使用扫描二维码的功能了,只需要新建一个activity,然后继承CaptureActivity即可。

class MainActivity : CaptureActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    }
}

自定义使用

如果只是简单的继承,那么得到的效果图如下:
这里写图片描述

这里提供了几个可以自定义的属性;

1. 标题栏自定义

class MainActivity : CaptureActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val view = LayoutInflater.from(this@MainActivity).inflate(R.layout.simple_title,null)
        setTitleView(view)
    }
}

2. 背景图片自定义

class MainActivity : CaptureActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setBackground(R.mipmap.ic_launcher)
    }
}

3. 提示文字自定义

class MainActivity : CaptureActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setTipText("请扫描二维码")
    }
}

4. 附加功能

class MainActivity : CaptureActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val view= LayoutInflater.from(this@MainActivity).inflate(R.layout.simple_title,null)
        // 打开相册,识别图片二维码
        view.tvTitle.setOnClickListener { openPhoto() }
        // 打开闪光灯
        view.tvTitle.setOnClickListener { openLight() }
        setTitleView(view)
    }

}

扫描结果处理

继承CaptureActivity.ResultListener,并且在oncreat里面,写上setListener(this)即可实现监听,然后在onResult里面做逻辑处理。

class MainActivity : CaptureActivity(), CaptureActivity.ResultListener {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setListener(this)
    }

    override fun onResult(result: String) {
        if (result.contains("http")) {
            Toast.makeText(this@MainActivity, "跳转到网页", Toast.LENGTH_SHORT).show()
        } else {
            Toast.makeText(this@MainActivity, "这个二维码不是网页", Toast.LENGTH_SHORT).show()
        }
    }
}

后话

至此,只要通过简单的几行代码就实现扫描二维码的功能,而且这个扫描二维码的功能,是支持连续扫描的,不需要退出重新进入即可再次扫描。项目源码已经传到github上了。

 https://github.com/Hebin320/Zxing
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页