|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
public interface ISO14443Connection
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 |
|---|
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.
data - APDU commands to be sent to the smart card
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
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||