123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- package com.telpo.faceHengDian.utile;
- import android.content.Context;
- import android.graphics.Bitmap;
- import android.os.AsyncTask;
- import android.view.View;
- import com.google.gson.Gson;
- import com.telpo.faceHengDian.bean.SetFederatedPlatformsBean;
- import com.telpo.tps550.api.idcard.IdentityMsg;
- import com.telpo.tps550.api.idcard.T2OReader;
- import com.telpo.tps550.api.util.ReaderUtils;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * 天波-身份证阅读器
- */
- public class IDCardUtile {
- private static IDCardUtile instance;
- private static T2OReader t2oReader;//身份证阅读器
- private boolean reading;
- private static Context context;
- private boolean bCancel = false;
- private static TB_IDCardListener listener;
- private IDCardUtile() { }
- public static IDCardUtile getInstance(Context contet) {
- if (instance == null) {
- synchronized (IDCardUtile.class) {
- if (instance == null) {
- instance = new IDCardUtile();
- }
- }
- }
- context=contet;
- t2oReader = new T2OReader();
- return instance;
- }
- /**
- * 初始化
- */
- public void open() {
- if(t2oReader.isUSBReader(context)){
- t2oReader.openReader(context);
- }else{
- // t2oReader.openReader();
- }
- }
- public boolean isUSBReader(){
- if(t2oReader.isUSBReader(context)){
- return true;
- }else{
- return false;
- }
- }
- /**
- * 循环读取身份证
- */
- public void check_idcard(){
- new Thread(new Runnable() {
- public void run() {
- bCancel = false;
- while (!bCancel) {
- try {
- Thread.sleep(500);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- if(!reading){
- new ReadIDTask().execute();
- }
- }
- }
- }).start();
- }
- /*
- * 若既需要读二代证,又需要读ic卡,请确保在同一线程内顺序执行
- * 在不同线程同时读取的话,会造成数据冲突
- * */
- public void check_iccard(View view){
- if(!reading){
- new readICTask().execute();
- }
- }
- public void close() {
- bCancel = true;
- SharedPreferencesUtils.setParam(context,"isIDCard",false);
- t2oReader.closeReader();
- }
- public void setListener(TB_IDCardListener listener) {
- this.listener = listener;
- }
- public interface TB_IDCardListener {
- void TB_IDCardReader(String name,String Cardid,String bmpPhotos,String identityMsg );
- }
- class ReadIDTask extends AsyncTask<Void, Void, Void> {
- IdentityMsg msg;
- Bitmap bitmap=null;
- @Override
- protected void onPreExecute() {
- // TODO Auto-generated method stub
- super.onPreExecute();
- reading = true;
- if(t2oReader.isUSBReader(context)){
- t2oReader.openReader(context);
- }
- }
- @Override
- protected Void doInBackground(Void... arg0) {
- // TODO Auto-generated method stub
- try {
- if (t2oReader!=null){
- msg = t2oReader.checkIDCard();
- if(msg != null){
- bitmap = t2oReader.decodeIDImage(msg.getHead_photo());
- }
- }
- } catch (Exception e) {
- }
- return null;
- }
- @Override
- protected void onPostExecute(Void result) {
- // TODO Auto-generated method stub
- super.onPostExecute(result);
- if(msg != null){
- String name = msg.getName()+"";//姓名
- String sex = msg.getSex();//性别
- String nation = msg.getNation();//民族
- String born = msg.getBorn();//出生日期
- String address = msg.getAddress();//地址
- String apartment = msg.getApartment();//签发地
- String period = msg.getPeriod();//有效期
- String no = msg.getNo()+"";//身份证号码
- String finger = ReaderUtils.get_finger_info(context, t2oReader.getIDFinger(msg));//指纹质量
- SetFederatedPlatformsBean setFederatedPlatformsBean = new SetFederatedPlatformsBean();
- setFederatedPlatformsBean.setSN(Config.SN);
- setFederatedPlatformsBean.setAction(1);
- SetFederatedPlatformsBean.DataDTO dataDTO = new SetFederatedPlatformsBean.DataDTO();
- dataDTO.setExtend3("");
- dataDTO.setExtend6("");
- dataDTO.setExtend7("");
- dataDTO.setHsStatus("");
- dataDTO.setJkmStatus("");
- dataDTO.setJkmType("0");
- dataDTO.setVerifytype(2);
- dataDTO.setCardid(no);
- dataDTO.setName(name);
- dataDTO.setPhone("");
- dataDTO.setTime(DateUtil.getTime("yyyy年MM月dd日 HH:mm:ss"));
- List<SetFederatedPlatformsBean.DataDTO> list = new ArrayList<>();
- list.add(dataDTO);
- setFederatedPlatformsBean.setData(list);
- String bmpPhotos="";
- if (Config.getAuthenticationBean().getData().get(0).isUsePersonCard()){
- if (bitmap!=null){
- bmpPhotos=Config.bitmapToString(bitmap);
- }else {
- bmpPhotos="";
- }
- }else {
- bmpPhotos="";
- }
- Config.setSetFederatedPlatformsBean(setFederatedPlatformsBean);
- listener.TB_IDCardReader(name,no,bmpPhotos,new Gson().toJson(msg));
- }else{
- //读卡失败
- }
- if(t2oReader.isUSBReader(context)){
- t2oReader.closeReader();
- }
- reading = false;
- }
- }
- class readICTask extends AsyncTask<Void, Void, Void>{
- String cardNum;
- @Override
- protected void onPreExecute() {
- // TODO Auto-generated method stub
- super.onPreExecute();
- reading = true;
- if(t2oReader.isUSBReader(context)){
- t2oReader.openReader(context);
- }
- }
- @Override
- protected Void doInBackground(Void... arg0) {
- // TODO Auto-generated method stub
- cardNum = t2oReader.readUIDTypeA(false);
- /*
- //读取卡号后,根据要验证的区域,使用对应密码进行验证
- boolean checkPasswordKeyA = t2oReader.passwordCheckTypeA(blockNum, password);//验证指定区块的keyA密码
- boolean checkPasswordKeyB = t2oReader.passwordCheckTypeA(blockNum, password, T2OReader.KEYB);//验证指定区块的keyB密码
- //验证密码正确后,对该区域的数据进行读写
- if(checkPasswordKeyA){
- String blockData = t2oReader.readDataTYPEA();//获取指定区块的数据
- boolean isWriteSuccess = t2oReader.writeDataTypeA(newData);//复写指定区块的数据
- }
- */
- return null;
- }
- @Override
- protected void onPostExecute(Void result) {
- // TODO Auto-generated method stub
- super.onPostExecute(result);
- //读卡结果
- // if(cardNum != null){
- // ReaderDemo.this.result.setText(cardNum);
- // }
- if(t2oReader.isUSBReader(context)){
- t2oReader.closeReader();
- }
- reading = false;
- }
- }
- }
|