Firefly开源社区

标题: 身份证识别问题 [打印本页]

作者: joemeng    时间: 2020-10-13 09:31
标题: 身份证识别问题
  1. private ServiceConnection mServiceConnection = new ServiceConnection() {
  2.         public void onServiceConnected(ComponentName name, IBinder service) {
  3.             IDCardUtil.this.mService = Stub.asInterface(service);

  4.             try {
  5.                 IDCardUtil.this.mService.registerCallback(IDCardUtil.this.mCallback);
  6.             } catch (RemoteException var4) {
  7.             }

  8.             IDCardUtil.this.setModel(1);
  9.         }

  10.         public void onServiceDisconnected(ComponentName name) {
  11.             IDCardUtil.this.mService = null;
  12.         }
  13.     };
复制代码

  1. private IDCardServiceCallback mCallback = new com.firefly.id_card.IDCardServiceCallback.Stub() {
  2.         public void onMachineConnect() throws RemoteException {
  3.             if (IDCardUtil.this.checkSupportIDCard()) {
  4.                 IDCardUtil.this.mSupportMode = 2;
  5.             }

  6.             if (IDCardUtil.this.mIDCardCallBack != null) {
  7.                 IDCardUtil.this.mIDCardCallBack.onMachineConnect();
  8.             }

  9.         }

  10.         public void onModeChanged(int mode) throws RemoteException {
  11.             if (IDCardUtil.this.mIDCardCallBack != null) {
  12.                 IDCardUtil.this.mIDCardCallBack.onModeChanged(mode);
  13.             }

  14.         }

  15.         public void onSwipeIDCard(IDCardBean info) throws RemoteException {
  16.             if (IDCardUtil.this.mIDCardCallBack != null && info != null) {
  17.                 IDCardUtil.this.mIDCardCallBack.onSwipeIDCard(info);
  18.             }

  19.         }

  20.         public void onSwipeICCard(ICCardBean info) throws RemoteException {
  21.             if (IDCardUtil.this.mIDCardCallBack != null && info != null) {
  22.                 if (IDCardUtil.this.mEndianMode == 1 && !TextUtils.isEmpty(info.getIcID())) {
  23.                     info.setIcID(IDCardUtil.this.covertLittleEndian(info.getIcID()));
  24.                 }

  25.                 IDCardUtil.this.mIDCardCallBack.onSwipeICCard(info);
  26.             }

  27.         }

  28.         public void onSwipeIDCardUUID(String uuid) throws RemoteException {
  29.             if (IDCardUtil.this.mIDCardCallBack != null) {
  30.                 IDCardUtil.this.mIDCardCallBack.onSwipeIDCardUUID(uuid);
  31.             }

  32.         }
  33.     };
复制代码


IDCardServiceCallback mCallback不被回调,service注册是返回true了,请问是什么原因?
作者: firefly_xdt    时间: 2020-10-13 11:09
1、您好,请确认是否已执行IDCardUtil.startIDCardListener();

[size=13.0667px]可以参考Demo中的IDCardTestActivity
[size=13.0667px]

@Override
protected void onResume() {
    super.onResume()
    IDCardUtil.getInstance().startIDCardListener(IDCardTestActivity.this,callBack);

}

@Override
protected void onPause() {
    super.onPause();
    IDCardUtil.getInstance().stopIDCardListener(IDCardTestActivity.this);
}

2、另外IDCardUtil.startIDCardListener();主要是执行如下代码:
public void startIDCardListener(Context context, IDCardUtil.IDCardCallBack callback) {
    this.bindIDCardService(context);
    this.setIDCardCallBack(callback);
}

public void stopIDCardListener(Context context) {
    this.unBindIDCardService(context);
    this.setIDCardCallBack((IDCardUtil.IDCardCallBack)null);
}

private void bindIDCardService(Context mContext) {
    try {
        if (!this.isRegisterService) {
            Intent intent = new Intent("com.firefly.IDCardService");
            intent.setPackage("com.firefly.id_card");
            boolean ret = mContext.bindService(intent, this.mServiceConnection, 1);
            Log.v("idcarddemo", "bindService:" + ret);
            this.isRegisterService = true;
        }
    } catch (Exception var4) {
        var4.printStackTrace();
    }

}

private void unBindIDCardService(Context mContext) {
    try {
        if (this.isRegisterService) {
            if (this.mService != null) {
                this.mService.unregisterCallback(this.mCallback);
            }

            mContext.unbindService(this.mServiceConnection);
            this.isRegisterService = false;
        }
    } catch (Exception var3) {
        var3.printStackTrace();
    }

}


[size=13.0667px]


作者: joemeng    时间: 2020-10-13 13:23
firefly_xdt 发表于 2020-10-13 11:09
1、您好,请确认是否已执行IDCardUtil.startIDCardListener();

可以参考Demo中的IDCardTestActivity

        IDCardUtil.getInstance().setIDCardCallBack(this);
        IDCardUtil.getInstance().bindIDCardService(this);

IDCardActivity里面onResume执行了以上代码,和startIDCardListener是一样的逻辑,我注释掉换成startIDCardListener,同样不可以。
另外IDCardActivity的类注释上有以下注释,没看到在哪里使用1,2 这两个整型值,是否有影响?
/***
* 1.只支持ICCard
* 2.支持ICCard和IDCard 即身份证
*/
作者: joemeng    时间: 2020-10-13 13:26
firefly_xdt 发表于 2020-10-13 11:09
1、您好,请确认是否已执行IDCardUtil.startIDCardListener();

可以参考Demo中的IDCardTestActivity

IDCardTestActivity这个类没有,我只有FaceApiDemoV2这个工程代码
作者: joemeng    时间: 2020-10-13 15:21
firefly_xdt 发表于 2020-10-13 11:09
1、您好,请确认是否已执行IDCardUtil.startIDCardListener();

可以参考Demo中的IDCardTestActivity

2020-10-13 14:13:15.381 1586-18207/com.firefly.id_card I/CardUsbUtil: 开始写入寻卡指令
2020-10-13 14:13:15.533 1586-18207/com.firefly.id_card I/CardUsbUtil: 寻卡校验回包失败~
2020-10-13 14:13:15.939 1586-18207/com.firefly.id_card I/CardUsbUtil: 开始写入寻卡指令
2020-10-13 14:13:16.091 1586-18207/com.firefly.id_card I/CardUsbUtil: 寻卡校验回包失败~
2020-10-13 14:13:16.496 1586-18207/com.firefly.id_card I/CardUsbUtil: 开始写入寻卡指令
2020-10-13 14:13:16.648 1586-18207/com.firefly.id_card I/CardUsbUtil: 寻卡校验回包失败~
2020-10-13 14:13:17.054 1586-18207/com.firefly.id_card I/CardUsbUtil: 开始写入寻卡指令
2020-10-13 14:13:17.206 1586-18207/com.firefly.id_card I/CardUsbUtil: 寻卡校验回包失败~
2020-10-13 14:13:17.611 1586-18207/com.firefly.id_card I/CardUsbUtil: 开始写入寻卡指令
2020-10-13 14:13:17.763 1586-18207/com.firefly.id_card I/CardUsbUtil: 寻卡校验回包失败~
2020-10-13 14:13:18.168 1586-18207/com.firefly.id_card I/CardUsbUtil: 开始写入寻卡指令
2020-10-13 14:13:18.320 1586-18207/com.firefly.id_card I/CardUsbUtil: 寻卡校验回包失败~
作者: firefly_xdt    时间: 2020-10-13 16:02
joemeng 发表于 2020-10-13 13:23
IDCardUtil.getInstance().setIDCardCallBack(this);
        IDCardUtil.getInstance().bindID ...

是的,首先联调设备,必需支持IDCard 身份证
作者: firefly_xdt    时间: 2020-10-13 16:08
joemeng 发表于 2020-10-13 13:23
IDCardUtil.getInstance().setIDCardCallBack(this);
        IDCardUtil.getInstance().bindID ...

直接运行Demo,打开这个界面IDCardActivity,会显示是否支持IDCard身份证,如图

device-2020-10-13-160427.png (46.02 KB, 下载次数: 1244)

device-2020-10-13-160427.png

作者: joemeng    时间: 2020-10-13 17:37
firefly_xdt 发表于 2020-10-13 16:08
直接运行Demo,打开这个界面IDCardActivity,会显示是否支持IDCard身份证,如图

我运行demo和你这个截图一样。但问题是系统自带的FaceApp开机启动,闸机设置里面设置启用人证比对功能功能开启,就可以在人脸识别界面刷身份证
作者: firefly_xdt    时间: 2020-10-13 18:09
本帖最后由 firefly_xdt 于 2020-10-14 08:35 编辑
joemeng 发表于 2020-10-13 17:37
我运行demo和你这个截图一样。但问题是系统自带的FaceApp开机启动,闸机设置里面设置启用人证比对功能功 ...

“界面一样”,极有可能是“不支持IDCard”红色字眼吗?
如果有,那么极有可能说明该设备是不支持。
作者: joemeng    时间: 2020-10-13 18:16
firefly_xdt 发表于 2020-10-13 18:09
“界面一样”,就是也有“不支持IDCard”红色字眼吗?
如果有,那么极有可能说明该设备是不支持。

系统自带的那个FaceApp,开启人证对比,可以刷身份证呢,而且我们买的那个身份证模块接上了
作者: firefly_xdt    时间: 2020-10-14 09:06
joemeng 发表于 2020-10-13 18:16
系统自带的那个FaceApp,开启人证对比,可以刷身份证呢,而且我们买的那个身份证模块接上了

我在私群里,也看到你提的问题,我们群里沟通。
作者: chengq    时间: 2020-11-18 17:37
请问一下解决方案,我也遇到同样的问题
作者: chengq    时间: 2020-11-19 09:54
firefly_xdt 发表于 2020-10-14 09:06
我在私群里,也看到你提的问题,我们群里沟通。

麻烦问一下有具体的解决方案么,我也遇到同样的问题




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1