身份证、银行卡、车牌、图片文字识别、黄图识别、驾驶证识别库实现功能

预览图效果:

原文来自:http://code.662p.com/view/19388.html  ,需要自己去下载就可以了。

使用

依赖

implementation 'com.shouzhong:Scanner:1.1.3'

以下选择自己需要的

// zxing
implementation 'com.google.zxing:core:3.3.3'
// zbar
implementation 'com.shouzhong:ScannerZBarLib:1.0.0'
// 银行卡识别
implementation 'com.shouzhong:ScannerBankCardLib:1.0.3'
// 身份证识别
implementation 'com.shouzhong:ScannerIdCardLib:1.0.4'
// 车牌识别
implementation 'com.shouzhong:ScannerLicensePlateLib:1.0.3'
// 图片文字识别
implementation 'com.shouzhong:ScannerTextLib:1.0.0'
// 黄图识别
implementation 'com.shouzhong:ScannerNsfwLib:1.0.0'
// 驾驶证识别
implementation 'com.shouzhong:ScannerDrivingLicenseLib:1.0.1'
// 身份证识别(第二种方式)
implementation 'com.shouzhong:ScannerIdCard2Lib:1.0.0'

代码

基本使用

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.shouzhong.scanner.ScannerView
        android:id="@+id/sv"
        android:layout_width="match_parent"
        android:layout_height="1080px"
        android:background="#000000"/>
</RelativeLayout>
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_scanner);
    scannerView = findViewById(R.id.sv);
    scannerView.setViewFinder(new ViewFinder(this));
    scannerView.setSaveBmp(true);
    scannerView.setEnableZXing(true);
    scannerView.setEnableZBar(true);
    scannerView.setEnableBankCard(true);
    scannerView.setEnableIdCard(true);
    scannerView.setEnableLicensePlate(true);
    scannerView.setCallback(new Callback() {
        @Override
        public void result(Result result) {
            tvResult.setText("识别结果:\n" + result.toString());
            scannerView.restartPreviewAfterDelay(2000);
        }
    });
}

@Override
protected void onResume() {
    super.onResume();
    scannerView.onResume();
}

@Override
protected void onPause() {
    super.onPause();
    scannerView.onPause();
}

开启或者关闭某个识别器

// 启用zxing识别器
scannerView.setEnableZXing(true);
// 启用zbar识别器
scannerView.setEnableZBar(true);
// 启用银行卡识别器
scannerView.setEnableBankCard(true);
// 启用身份证识别器(这里只支持2代身份证)
scannerView.setEnableIdCard(true);
// 启用车牌识别
scannerView.setEnableLicensePlate(true);
// 启用驾驶证识别
scannerView.setEnableDrivingLicense(true);
// 启用身份证识别(第二种方式)
scannerView.setEnableIdCard2(true);

如果你想自定义识别器

scannerView.setScanner(new IScanner() {
    /**
     * 这里实现自己的识别器,并把识别结果返回
     *
     * @param data 矩形框内nv21图像数据
     * @param width 图像宽度
     * @param height 图像高度
     * @return
     * @throws Exception
     */
    @Override
    public Result scan(byte[] data, int width, int height) throws Exception {
        // 如果你想转为Bitmap,请使用NV21.nv21ToBitmap(byte[] nv21, int width, int height)
        return null;
    }
});

这里没给默认的预览页面,需要自己自定义,请参考demo

回调说明

Result

属性说明
TYPE_CODE类型:二维码/条码
TYPE_ID_CARD_FRONT类型:身份证人头面
TYPE_ID_CARD_BACK类型:身份证国徽面
TYPE_BANK_CARD类型:银行卡
TYPE_LICENSE_PLATE类型:车牌
TYPE_DRIVING_LICENSE类型:驾驶证
type结果类型
path保存的图片路径
data数据
// 以下是对data的说明
// 当type为TYPE_CODE,TYPE_BANK_CARD,TYPE_LICENSE_PLATE时,data为字符串
// 当type为TYPE_ID_CARD_FRONT时,data为json字符串,格式如下
{
	"cardNumber": "21412412421",// 身份证号
	"name": "张三",// 姓名
	"sex": "男",// 性别
	"nation": "汉",// 民族
	"birth": "1999-01-01",// 出生
	"address": "地址"// 地址
}
// 当type为TYPE_ID_CARD_BACK时,data为json字符串,格式如下
{
	"organization": "签发机关",// 签发机关
	"validPeriod": "20180101-20380101"// 有效期限
}
// 当type为TYPE_DRIVING_LICENSE时,data为json字符串,格式如下
{
	"cardNumber": "43623446432",// 证号
	"name": "张三",// 姓名
	"sex": "男",// 性别
	"nationality": "中国",// 国籍
	"address": "地址",// 地址
	"birth": "1999-01-01",// 出生日期
	"firstIssue": "2018-01-01",// 初次领证日期
	"_class": "C1",// 准驾车型
	"validPeriod": "20180101-20240101"// 有效期限
}

BankCardInfoBean

属性或方法说明
cardNumber银行卡号
cardType银行卡(英文)类型
bank银行(英文)名称
getCNBankName获取银行(中文)名称
getBankId获取银行编号
getCNCardType获取银行卡(中文)类型

方法说明

ScannerView

方法名说明
setViewFinder扫描区域
setCallback扫码成功后的回调
setCameraDirection摄像头方向,后置为Camera.CameraInfo.CAMERA_FACING_BACK,前置为Camera.CameraInfo.CAMERA_FACING_FRONT
setEnableZXing是否启用zxing识别器,默认false
setEnableZBar是否启用zbar识别器,默认false
setEnableQrcode是否启动二维码识别,默认true,只有在zxing或者zbar开启时有效
setEnableBarcode是否启动条码识别,默认true,只有在zxing或者zbar开启时有效
setEnableBankCard是否启用银行卡识别器,默认false
setEnableIdCard是否启用身份证识别器,默认false
setEnableIdCard2是否启用身份证识别器(第二种方式),默认false
setEnableDrivingLicense是否启用驾驶证识别器,默认false
setEnableLicensePlate是否启用车牌识别器,默认false
setScanner自定义识别器
onResume开启扫描
onPause停止扫描
restartPreviewAfterDelay设置多少毫秒后重启扫描
setFlash开启/关闭闪光灯
toggleFlash切换闪光灯的点亮状态
isFlashOn闪光灯是否被点亮
setShouldAdjustFocusArea设置是否要根据扫码框的位置去调整对焦区域的位置,部分手机不支持,默认false
setSaveBmp设置是否保存识别的图片,默认false
setRotateDegree90Recognition是否在原来识别的图像基础上旋转90度继续识别,默认false

ScannerUtils

方法名说明
decodeCode二维码/条码识别,建议在子线程运行
decodeBank银行卡识别,建议在子线程运行
getBankCardInfo获取银行卡信息,请在子线程运行
decodeIdCard身份证识别,建议在子线程运行
decodeId2Card身份证识别(第二种方式),建议在子线程运行
decodeDrivingLicense驾驶证识别,建议在子线程运行
decodeLicensePlate车牌识别,建议在子线程运行
decodeText图片文字识别,请在子线程运行
decodeNsfw黄图识别,大于0.3可以说图片涉黄,建议在子线程运行
createBarcode条码生成,建议在子线程运行
createQRCode二维码生成,建议在子线程运行
addLogo往图片中间加logo

NV21

方法名说明
nv21ToBitmapnv21转bitmap
bitmapToNv21bitmap转nv21
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值