joemeng 发表于 2020-10-13 09:31:26

身份证识别问题

private ServiceConnection mServiceConnection = new ServiceConnection() {
      public void onServiceConnected(ComponentName name, IBinder service) {
            IDCardUtil.this.mService = Stub.asInterface(service);

            try {
                IDCardUtil.this.mService.registerCallback(IDCardUtil.this.mCallback);
            } catch (RemoteException var4) {
            }

            IDCardUtil.this.setModel(1);
      }

      public void onServiceDisconnected(ComponentName name) {
            IDCardUtil.this.mService = null;
      }
    };

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

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

      }

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

      }

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

      }

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

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

      }

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

      }
    };

IDCardServiceCallback mCallback不被回调,service注册是返回true了,请问是什么原因?

firefly_xdt 发表于 2020-10-13 11:09:41

1、您好,请确认是否已执行IDCardUtil.startIDCardListener();

可以参考Demo中的IDCardTestActivity


@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();
    }

}




joemeng 发表于 2020-10-13 13:23:08

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:55

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

可以参考Demo中的IDCardTestActivity


IDCardTestActivity这个类没有,我只有FaceApiDemoV2这个工程代码

joemeng 发表于 2020-10-13 15:21:24

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:31

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

firefly_xdt 发表于 2020-10-13 16:08:06

joemeng 发表于 2020-10-13 13:23
IDCardUtil.getInstance().setIDCardCallBack(this);
      IDCardUtil.getInstance().bindID ...

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

joemeng 发表于 2020-10-13 17:37:56

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

我运行demo和你这个截图一样。但问题是系统自带的FaceApp开机启动,闸机设置里面设置启用人证比对功能功能开启,就可以在人脸识别界面刷身份证

firefly_xdt 发表于 2020-10-13 18:09:56

本帖最后由 firefly_xdt 于 2020-10-14 08:35 编辑

joemeng 发表于 2020-10-13 17:37
我运行demo和你这个截图一样。但问题是系统自带的FaceApp开机启动,闸机设置里面设置启用人证比对功能功 ...
“界面一样”,极有可能是“不支持IDCard”红色字眼吗?
如果有,那么极有可能说明该设备是不支持。

joemeng 发表于 2020-10-13 18:16:38

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

系统自带的那个FaceApp,开启人证对比,可以刷身份证呢,而且我们买的那个身份证模块接上了
页: [1] 2
查看完整版本: 身份证识别问题