How to Understand Java API for Contactless Mifare Cards

From wizarPOS
Revision as of 01:39, 27 April 2021 by Mahong (talk | contribs) (Created page with "* Get RFCardReaderDevice <syntaxhighlight lang="java" line='line'> device = (RFCardReaderDevice) POSTerminal.getInstance(mContext).getDevice(POSTerminal.DEVICE_NAME_RF_CARD_...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
  • Get RFCardReaderDevice
  device = (RFCardReaderDevice) POSTerminal.getInstance(mContext).getDevice(POSTerminal.DEVICE_NAME_RF_CARD_READER);
  • Open device
  device.open();
  • Search Card
  OperationListener listener = new OperationListener() {
    @Override
    public void handleResult(OperationResult arg0) {
      if (arg0.getResultCode() == OperationResult.SUCCESS) {
        sendSuccessLog2(mContext.getString(R.string.find_card_succeed));
        rfCard = ((RFCardReaderOperationResult) arg0).getCard();
      } else {
        sendFailedLog2(mContext.getString(R.string.find_card_failed));
      }
    }
  };
  device.listenForCardPresent(listener, TimeConstants.FOREVER); The result will be returned in the callback listener.
  • Read
 
  // demo for sector 1, block 2
  int sectorIndex=1; 
  int blockIndex =2;
  if (rfCard instanceof MifareCard) {
     byte[] key = new byte[]{
                (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
                (byte) 0xFF
        };
        try {
            MifareCard card = ((MifareCard) rfCard);
            boolean verifyResult = card.verifyKeyA(sectorIndex, key);
            if(verifyResult){
               byte[] result = card.readBlock(sectorIndex, blockIndex);
            }
        } catch (DeviceException e) {
            e.printStackTrace();          
        }
  }
  • write
 
  // demo for sector 1, block 2
  int sectorIndex=1; 
  int blockIndex =2;
  if (rfCard instanceof MifareCard) {
     byte[] key = new byte[]{
                (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
                (byte) 0xFF
        };
        try {
            MifareCard card = ((MifareCard) rfCard);
            boolean verifyResult = card.verifyKeyB(sectorIndex, key);
            if(verifyResult ){
               card.writeBlock(sectorIndex, blockIndex, arryData);
            }
        } catch (DeviceException e) {
            e.printStackTrace();            
        }
  }
  • Close device
  device.close();