Android zxing库实现扫码识别

第一步 加库zxing库

  //导入二维码识别库ZXing
    implementation("com.journeyapps:zxing-android-embedded:4.2.0")

 

第二部获取摄像机权限

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
    <uses-feature android:name="android.hardware.camera.flash" />

第三步在Activity中或fragment中调用接口

把这个丢按键监听器里启动就行。

    void Scan_init(){
        integrator = new IntentIntegrator(getActivity());
        integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE); // 设置只扫描QR码
//        integrator.setPrompt("请扫描二维码"); // 设置扫描提示
        integrator.setPrompt("   "); // 设置扫描提示
        integrator.setCameraId(0); // 使用设备的特定相机(这里是第一个相机)
        integrator.setBeepEnabled(false); // 禁用扫描成功时的蜂鸣声
        integrator.setOrientationLocked(false); // 锁定扫描器的方向
        integrator.setBarcodeImageEnabled(false); // 禁用条形码图像的显示
        integrator.setCaptureActivity(CaptureActivity.class);
        integrator.initiateScan(); // 发起扫描
    }

如果是Activity中实现的可以直接在onActivityResult函数中获取,直接重写就行了

   @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //获取扫码结果
        IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
         Toast.makeText(getContext(),result.toString(),Toast.LENGTH_SHORT).show();
    
}

如果是在fragment中实现的,就在这里用接口发过去,或者其他的方式也行,反正扫码结果就在这里可以得到。

注意:这样得到的扫码框是横屏的,不是竖屏的

想要修改样式需要,重写zxing库中的layout和相应的Activity

不同版本可能位置不一样可以自己找找,对着 ctrl+左键 CaptureActivity 可以直接跳到对应的Activity中,重写直接new一个Activity,名字什么的对应上,然后将库里面的对应内容复制粘贴进去,在修改布局以及其他的。

layout就是这两个。

我这里没去做这个复杂的操作,我就只重新zxing_capture.xml,直接调整扫码框大小,改为了方形,然后去掉了提示语,假装一下竖屏。

实际样子。别问我为啥不重新,因为我。

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值