Android二维码开源库—BGAQRCode-Android的使用

BGAQRCode-Android

QRCode 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信、QQ 二维码扫描样式。他把Zbar和Zxing,都做了优化,扫描速度非常快,用户体验很好,用起来也非常方便


添加依赖

implementation 'cn.bingoogolapple:bga-qrcode-zbar:1.3.7'
或者
implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.3.7'

用法

1.自行添加xml文件里属性,具体属性说明可在https://github.com/bingoogolapple/BGAQRCode-Android查看

<cn.bingoogolapple.qrcode.zxing.ZXingView
    android:id="@+id/mZXingView"
    style="@style/MatchMatch"
    app:qrcv_animTime="1000"
    app:qrcv_borderColor="@android:color/white"
    app:qrcv_borderSize="1dp"
    app:qrcv_cornerColor="@color/colorPrimaryDark"
    app:qrcv_cornerLength="20dp"
    app:qrcv_cornerSize="3dp"
    app:qrcv_maskColor="#33FFFFFF"
    app:qrcv_rectWidth="200dp"
    app:qrcv_scanLineColor="@color/colorPrimaryDark"
    app:qrcv_scanLineSize="1dp"
    app:qrcv_topOffset="90dp" />

2.AndroidManifest文件里添加相应权限

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

3.在对应的activity进行操作

	override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        if (Build.VERSION.SDK_INT >= 23) {
            checkAndRequestPermission()
        }
    }

	/**
     * 动态添加相机权限
     */
    @TargetApi(Build.VERSION_CODES.M)
    fun checkAndRequestPermission() {
        val permission = arrayOf(Manifest.permission.CAMERA)
        if (checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
            requestPermissions(permission, 1024)
        } else {
            mZXingView.setDelegate(this)
        }
    }

    @RequiresApi(Build.VERSION_CODES.M)
    override fun onRequestPermissionsResult(
        requestCode: Int,
        permissions: Array<out String>,
        grantResults: IntArray
    ) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        when (requestCode) {
            1024 -> {
                val permission = arrayOf(Manifest.permission.CAMERA)
                val shouldFalse = shouldShowRequestPermissionRationale(permission[0])
                if (shouldFalse) {
                    initDialog()
                }
            }
        }
    }

	@RequiresApi(Build.VERSION_CODES.M)
    override fun onResume() {
        launch(Dispatchers.IO){
            if (checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
                mZXingView.startSpotAndShowRect() // 显示扫描框,并开始识别
            }
        }
        super.onResume()
    }

    private fun initDialog() {
        val dialog = AlertDialog.Builder(this)
            .setTitle("权限申请")
            .setMessage(getString(R.string.per_tip))
            .setNegativeButton(android.R.string.cancel) { dialog, which ->
                dialog.dismiss()
            }
            .setPositiveButton(getString(R.string.set_tip)) { dialog, which ->
                val intent = Intent()
                //进入系统应用设置
                intent.action = "android.settings.APPLICATION_DETAILS_SETTINGS"
                intent.data = Uri.fromParts("package", packageName, null)
                startActivity(intent)
                finish()
            }
            .create().show()
    }

    override fun onStart() {
        mZXingView.startCamera() // 打开后置摄像头开始预览,但是并未开始识别
        super.onStart()
    }


    override fun onScanQRCodeSuccess(result: String?) {
        mZXingView.startSpot()
        finish()
    }

    override fun onCameraAmbientBrightnessChanged(isDark: Boolean) {
        // 这里是通过修改提示文案来展示环境是否过暗的状态,接入方也可以根据 isDark 的值来实现其他交互效果
        var tipText = mZXingView.scanBoxView.tipText
        val ambientBrightnessTip = "\n环境过暗,请打开闪光灯"
        if (isDark) {
            if (!tipText.contains(ambientBrightnessTip)) {
                mZXingView.scanBoxView.tipText = tipText + ambientBrightnessTip
            }
        } else {
            if (tipText.contains(ambientBrightnessTip)) {
                tipText = tipText.substring(0, tipText.indexOf(ambientBrightnessTip))
                mZXingView.scanBoxView.tipText = tipText
            }
        }
    }


    override fun onScanQRCodeOpenCameraError() {

    }

    override fun onStop() {
        mZXingView.stopCamera() // 关闭摄像头预览,并且隐藏扫描框
        super.onStop()
    }

    override fun onDestroy() {
        mZXingView.onDestroy() // 销毁二维码扫描控件
        super.onDestroy()
    }

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Android二维码生成是一种在Android平台上使用的软件开发包,它提供了一套简单而有效的方法来生成二维码Android二维码生成具有以下优点: 首先,它提供了丰富的功能和选项,使得开发者可以自定义生成的二维码。开发者可以设置二维码的大小、颜色、背景、图像等属性。同时,还可以添加Logo、文字、链接等附加信息,使生成的二维码更加个性化。 其次,它具有良好的兼容性。Android二维码生成可以在各种Android设备和各个版本使用,并且与其他Android开发和框架完美集成。无论是在智能手机、平板电脑还是其他Android设备上,都可以轻松生成高质量的二维码。 此外,Android二维码生成还具有高性能和稳定性。它经过了严格的测试和优化,能够在各种条件下高效生成二维码。无论是生成单个二维码还是批量生成,都能快速且稳定地完成。 最后,Android二维码生成还提供了简单易用的接口和示例代码,使得开发者可以快速上手并集成到自己的项目中。无论是初学者还是有经验的开发者,都可以轻松使用来生成二维码。 综上所述,Android二维码生成是一种功能强大、兼容性好、高性能和稳定的开发工具,可以帮助开发者在Android平台上轻松生成个性化的二维码。无论是商业应用还是个人项目,都可以从中受益。 ### 回答2: Android二维码生成是一种用于生成二维码开源。在Android开发中,我们可以通过使用这个来轻松地生成二维码,并可以根据需求设置二维码的样式、大小和内容等属性。 Android二维码生成通常提供了一个专门的API或者类,开发者可以通过调用这些方法,传入需要的参数来生成二维码。通常,我们需要传入的参数包括二维码的内容、二维码的宽度和高度等信息。生成二维码的过程通常是通过计算生成的图片的像素来实现的。生成的二维码可以保存为图片文件,也可以直接在应用中显示出来。 Android二维码生成通常支持多种二维码格式,包括普通的二维码、带有Logo的二维码、带有颜色的二维码等。有些支持自定义二维码的样式,例如可以设置二维码的背景色、前景色或者在二维码中间添加Logo等。 使用Android二维码生成可以方便快捷地生成二维码,无论是生成付款二维码、产品推广二维码还是其他类型的二维码,都可以轻松实现。同时,这些通常有很好的兼容性,可以适用于不同版本Android系统,并且提供了丰富的文档和示例来帮助开发者更好地使用。 总之,Android二维码生成是开发Android应用时非常方便的工具,可以帮助开发者轻松实现二维码生成的功能,提升应用的用户体验和功能扩展性。 ### 回答3: Android二维码生成是一种在Android平台上使用的工具,用于快速生成二维码。通过使用这种,开发者可以方便地生成个性化的二维码图像,以满足不同需求。 Android二维码生成通常提供了丰富的API和功能,可以设置二维码的大小、颜色、边距、错误纠正级别等属性,并支持二维码中添加文本、网址、联系方式等额外信息。开发者可以根据自己的需求自定义这些属性,以生成符合预期的二维码使用Android二维码生成,开发者只需引入相应的文件,并在代码中调用相应的方法即可生成二维码。一般来说,生成二维码的步骤包括设置二维码的内容、生成二维码位图、将位图显示在界面上或保存为文件等操作。通过调整参数和样式,开发者可以生成不同风格和类型的二维码Android二维码生成的优点是方便易用、功能丰富、效果灵活。开发者可以根据自己的需求选择适合的使用,以实现二维码生成的功能。此外,由于二维码的应用非常广泛,使用这种可以在Android应用中快速实现二维码相关的功能,提升用户的体验和便利性。 总之,Android二维码生成是一种用于在Android平台上生成二维码的工具,具有方便易用、功能丰富、效果灵活等优点。通过使用这种,开发者可以快速生成二维码,以实现各种二维码相关的功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值