BaseActivity


 
 

package khdz.click.com.hf_handhelddevice.activity; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.fxpsam.nativeJni.RfidNative; import com.guo.android_extend.java.AbsLoop; import java.util.List; import khdz.click.com.hf_handhelddevice.CompareCarder; import khdz.click.com.hf_handhelddevice.FileDataHelp; import khdz.click.com.hf_handhelddevice.MyApplication; import khdz.click.com.hf_handhelddevice.R; import khdz.click.com.hf_handhelddevice.data.CollectiveCardAuthorizationDate; import khdz.click.com.hf_handhelddevice.data.CollectiveCardAuthorizationTime; import khdz.click.com.hf_handhelddevice.data.CollectiveCardInfo; import khdz.click.com.hf_handhelddevice.tools.Tools; import khdz.click.com.hf_handhelddevice.tools.Utils; public class BaseActivity extends Activity { //SerialPort public Context context; private MyApplication mapp; private RfidNative rfid; boolean activeFlag = false; private int ret = 0,PSAM_CardSlot=2;// SIM1=1 SIM2 =2 private ReadCarderLoop myReadCarderLoop = null; private Handler mhandle=new Handler(); private MyHandler handler; private CompareCarder compareCarder=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.activity_base); context=this; mapp = (MyApplication) getApplication(); rfid = mapp.getRfid(); compareCarder=new CompareCarder(context); handler = new MyHandler(); } /*** * read carder * must be implemented */ @Override protected void onResume() { super.onResume(); myReadCarderLoop = new ReadCarderLoop(mhandle); myReadCarderLoop.start(); } @Override protected void onPause() { super.onPause(); myReadCarderLoop.shutdown();//onPause stop read carder } public class MyHandler extends Handler { public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case 1: int carderNumber=(int)msg.obj; beginComperCarder(carderNumber); break; case 2: // changger PSAM_CardSlot // SharedPreferences preferences = getSharedPreferences("SAM_CardSlot", Context.MODE_PRIVATE); // PSAM_CardSlot=preferences.getInt("sam_card", 0); PSAM_CardSlot=1; break; } } } class ReadCarderLoop extends AbsLoop { Handler mhandle; long currentSecond=0;// boolean isPause = false;//isPause public ReadCarderLoop(Handler mhandle) { this.mhandle=mhandle; } @Override public void setup() { } @Override public void loop() { currentSecond = currentSecond + 1000; if (!isPause) { mhandle.postDelayed(this, 1500); //Log.e("1. beging read carder ", ""); active(); } } @Override public void over() { } } //active CPU card private void active() { byte[] result = new byte[64]; activeFlag = false; ret = rfid.activeUcpu(result); if (ret > 0) { activeFlag = true; byte[] apduDF = Tools.HexString2Bytes("00A40000022001"); ret = rfid.apduCpu(apduDF, 0, result); if (ret > 0) { // if(Tools.Bytes2HexString(result, ret).contains("9000")){ byte[] apduRandom = Tools.HexString2Bytes("0084000008"); ret = rfid.apduCpu(apduRandom, 0, result); String response = Tools.Bytes2HexString(result, ret); if(response.length()>0){ String cpu_backRandom = response.substring(0, response.length() - 4); //psam ret = rfid.psamreset(PSAM_CardSlot, result);//psamCard if (ret > 0) { byte[] internalValidation = Tools.HexString2Bytes("0088000108" + cpu_backRandom); ret = rfid.psamapdu(PSAM_CardSlot, internalValidation, result); //sam_receive_data.setText("\n内" + Tools.Bytes2HexString(result, ret)); ret = rfid.psamapdu(PSAM_CardSlot, Tools.HexString2Bytes("00c0000008"), result);//6108 PSAM_GET_RESPOND String psam_data = Tools.Bytes2HexString(result, ret); //sam_receive_data.setText("\n密" + psam_data); if (psam_data.contains("9000")) { String encrypt_data = psam_data.substring(0, psam_data.length() - 4); byte[] exiternal = Tools.HexString2Bytes("0082000008" + encrypt_data); ret = rfid.apduCpu(exiternal, 0, result); // sam_receive_data.setText("\n外" + Tools.Bytes2HexString(result, ret)); byte[] read_binary = Tools.HexString2Bytes("00b0810008"); ret = rfid.apduCpu(read_binary, 0, result); String card_Number=""; if(result.length>64){ String back_data = Tools.Bytes2HexString(result, ret); card_Number = back_data.substring(0, back_data.length() - 4); }else{ card_Number=Tools.Bytes2HexString(result, ret); } byte[] card_NumberByte = Tools.HexString2Bytes(card_Number); if (card_NumberByte.length > 0 &&card_NumberByte.length!=2) { int cardNumber = Tools.bytesToInt(card_NumberByte, 0); //Message==1 beginComperCarder(cardNumber); Message msg=new Message(); msg.what=1; msg.obj=cardNumber; handler.sendMessage(msg); myReadCarderLoop.shutdown(); Utils.playerVoice(BaseActivity.this, 6); } else { String back_data = Tools.Bytes2HexString(result, ret); // Log.e(" length faill,", ""+back_data); } }else{ // Log.e("", " subString 08 fail "); } } else { Message msg=new Message(); msg.what=2; handler.sendMessage(msg); //Log.e("", "psamCard 2 faill"); } }else{ //Log.e(",", ""); } } else { //Log.e("apdu_fail,", "apdu_fail"); } } else { //Log.e("no_card_search,", "no_card_search"); } } //close CPU card if (activeFlag) {ret = rfid.closeUCPU();if (ret > 0)=close_success private void beginComperCarder(int carderNumber) { String UID = String.valueOf(carderNumber); if(!UID.equals("")){ CollectiveCardInfo collectiveCardInfo= FileDataHelp.collectiveCard(MyApplication.COLLECTIVITY_INFO_FILE,UID ); if(collectiveCardInfo!=null){ CollectiveCardAuthorizationDate dateInfo=FileDataHelp.collectiveCardDate(MyApplication.COLLECTIVITY_AUTH9_FILE,collectiveCardInfo.getCollective_carder_id()); List<CollectiveCardAuthorizationTime> timeList=FileDataHelp.collectiveCardTime(MyApplication.COLLECTIVITY_AUTH10_FILE,collectiveCardInfo.getCollective_carder_id()); if(collectiveCardInfo.getCarderNumber()!=null&&dateInfo.getDate_start()!=null&&dateInfo.getDate_end()!=null){ collectiveCardInfo.setCollectiveDateInfo(dateInfo); collectiveCardInfo.setCollectiveTimeInfo(timeList); compareCarder.collectiveCarder(context,collectiveCardInfo,UID); }else{ compareCarder.personCarder( context,UID); } } else{ compareCarder.personCarder( context,UID); } }else{ compareCardFail(context,""); } } public void compareCardFail(Context activity, String carderId) { Intent intent = new Intent(); intent.putExtra("uid", carderId); intent.setClass(activity, UnknownCarderActivity.class);//UnknownCarderActivity activity.startActivity(intent); } }

猜你喜欢

转载自blog.csdn.net/qq_34075348/article/details/81018853