How to Understand Java API for Contactless Mifare Cards: Difference between revisions

From wizarPOS
No edit summary
(Replaced content with "{{Migrating|https://smartpossdk.gitbook.io/cloudpossdk/faq/card/use-mifare-card}}")
Tag: Replaced
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
== Overview ==
{{Migrating|https://smartpossdk.gitbook.io/cloudpossdk/faq/card/use-mifare-card}}
This section provides a step-by-step guide on using Java API for operations involving contactless Mifare cards.
== Steps for Java API Usage ==
* '''Get RFCardReaderDevice:'''
Initiate the process by retrieving an instance of the RFCardReaderDevice. This is crucial for establishing communication with the Mifare card reader.
<syntaxhighlight lang="java" line='line'>
  device = (RFCardReaderDevice) POSTerminal.getInstance(mContext).getDevice(POSTerminal.DEVICE_NAME_RF_CARD_READER);
</syntaxhighlight>
* '''Open Device:'''
Execute the command to open the card reader device. This step establishes a connection between your Java application and the card reader
<syntaxhighlight lang="java" line='line'>
  device.open();
</syntaxhighlight>
* '''Search for Card:'''
Start a search operation to detect the contactless Mifare card within the reader's range.
<syntaxhighlight lang="java" line='line'>
  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.
</syntaxhighlight>
* '''Read from Card:'''
Once the card is detected, execute read operations as required. This may involve accessing data stored on the card.
<syntaxhighlight lang="java" line='line'>
  // 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();         
        }
  }
</syntaxhighlight>
* '''Write to Card:'''
Perform write operations to modify or add data to the Mifare card, as per your application’s needs.
<syntaxhighlight lang="java" line='line'>
  // 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();           
        }
  }
</syntaxhighlight>
* '''Close Device:'''
After completing the read/write operations, close the device to end the communication session. This is important for maintaining the security and integrity of both the card and the reader.
<syntaxhighlight lang="java" line='line'>
  device.close();
</syntaxhighlight>
== Important Notes ==
* Follow the steps sequentially to ensure successful interaction with contactless Mifare cards.
* Handle exceptions and errors appropriately for smooth and secure application functionality.

Latest revision as of 09:20, 7 April 2024

Please visit new link of same subject:

https://smartpossdk.gitbook.io/cloudpossdk/faq/card/use-mifare-card

We're making a move! Our site's content is migrating to a new URL, to provide you with an enhanced browsing experience. Please update your bookmarks accordingly. Thank you for your continuous support!