javax.microedition.contactless.sc
Interface ISO14443Connection

All Superinterfaces:
javax.microedition.io.Connection, TagConnection

public interface ISO14443Connection
extends TagConnection

This interface defines access to the ISO 14443-4 compliant contactless smart card. With this interface application can communicate with contactless smart card using APDU commands. The APDU commands are defined in ISO7816-4 specification or by the RFID hardware manufacturer. This interface does not replace APDUConnection interface specified in JSR 177. Implementation of this class may take advantage of JSR 177. The slot number needed to open an APDUConnection to the external smart card may be provided though the TargetProperties.getProperty method.

Following example shows how this connection can be used. It opens an ISO14443Connection to the discovered external smart card and sends APDU command to it.

import java.io.IOException;
import javax.microedition.contactless.*;
import javax.microedition.contactless.sc.ISO14443Connection;
import javax.microedition.io.Connector;

//
// Example class of how to use SmartCardConnection in JSR 257 Contactless 
// Communication API
//
public class TestSmartCard implements TargetListener, TransactionListener {

    public TestSmartCard() {
        try {
            DiscoveryManager dm = DiscoveryManager.getInstance();
            dm.addTargetListener(this, TargetType.ISO14443_CARD);
            dm.addTransactionListener(this);
        }
        catch (ContactlessException ce) {

        }
    }

    // Smart card target has been found (reader mode) 
    public void targetDetected(TargetProperties[] properties) {
        TargetProperties target = properties[0];
        Class[] classes = target.getConnectionNames();
        for (int i=0; i<classes.length; i++) {
            try {
                if (classes[i].equals(Class.forName(
                    "javax.microedition.contactless.sc.ISO14443Connection")
                    )) {
                    String url = target.getUrl(classes[i]);
                    // Open connection to external smart card
                    ISO14443Connection smc = 
                        (ISO14443Connection)Connector.open(url);
                    // Generate command
                    // Send command to smart card
                    byte[] response = smc.exchangeData(commands);
                    // handle response  
                }
            }
            catch (ClassNotFoundException e) {
                // handle exception
            }
            catch (IOException e) {
                // handle exception
            }
            catch (ContactlessException ce) {
                // handle exception
            }
        }
    }

    // External reader has been detected (tag emulation mode)
    public void externalReaderDetected(byte slot) {
        // update the UI based on the application ID received 
    }
}
 


Method Summary
 byte[] exchangeData(byte[] data)
          This method allows exchanging APDU commands with an external smart card using ISO14443-4 communication.
 
Methods inherited from interface javax.microedition.io.Connection
close
 

Method Detail

exchangeData

byte[] exchangeData(byte[] data)
                    throws java.io.IOException,
                           ContactlessException

This method allows exchanging APDU commands with an external smart card using ISO14443-4 communication. Response to the sent commands is received as a return value. The APDU commands are defined in ISO7816-4 specification. The API implementation may also support APDU commands defined by the RFID hardware manufacturer.

Parameters:
data - APDU commands to be sent to the smart card
Returns:
response to the APDU commands from the smart card
Throws:
ContactlessException - if the operation is not supported by the API implementation
java.lang.NullPointerException - if data is null
java.lang.IllegalArgumentException - if data is an empty array
java.io.IOException - if connection has been closed
java.io.InterruptedIOException - if connection is closed during exchange operation


Copyright © 2005-2006 Nokia Corporation. All Rights Reserved.
Java is a trademark of Sun Microsystems, Inc.