java.lang.Objectandroid.device.IccManager
public class IccManager
The IccManager class is used to initialize and control the smart card reader, to sends a command Application Protocol Data Unit(APDU) to a card and retrieve the response APDU.
To control the smart card reader with this class, according to the following steps,
IccManager
.
IccManager manager = new IccManager();
open
.
detect
.
activate
.
apduTransmit
.
deactivate
.
close
to close the slot for smart card reader.
For more information about the smart card reader, read IccManager sample.
Constructor Summary | |
---|---|
IccManager()
The IccManager class is used to initialize and control the smart card reader. |
Method Summary | |
---|---|
int |
open(byte slot,
byte CardType,
byte Volt)
Open the IC card for operation. |
int |
close()
Close the slot. |
int |
detect()
Check if IC card is inserted. |
int |
activate(byte[] pAtr)
Activate and reset the card. |
int |
apduTransmit(byte[] apdu,
int apduLen,
byte[] rsp,
byte[] sw)
Transmit APDU to the IC card. |
int |
deactivate()
Deactivate the card. |
int |
request_Type(byte[] type)
Request IC Card type. |
int |
getResponseEnable(byte autoFlag)
Set the drive layer to the 61xx, 6Cxx and other commands for automatic data acquisition. The default for automatic acquisition. |
int |
setETU(int etuTime)
Set the ETU. |
int |
sle4442_reset(byte[] pAtr)
reset the SLE4442. |
byte[] |
sle4442_readMainMemory(int addr,
int length)
Read the data stored in main memory for SLE4442. |
int |
sle4442_writeMainMemory(int addr,
byte[] data,
int dataLen)
Write data to the main storage area SLE4442. |
byte[] |
sle4442_readProtectionMemory(int address,
int len)
Read SLE4442 card protection bit storage data (4 BYTE). 4 bytes of data read is to save the SLE4442 bits data in storage area. |
int |
sle4442_writeProtectionMemory(int addr,
byte[] data,
int dataLen)
The write protection bit storage area. |
int |
sle4442_verifyPassword(byte[] passwd)
Comparison SLE4442 cards, each card compared to the card password, if all the card data become to read-only, you will not be able to do any write operation. |
int |
sle4442_changePassword(byte[] passwd)
Change password. |
int |
sle4442_readErrorCounter(byte[] errorCount)
Read error code value. |
int |
sle4436_reset(byte[] pAtr)
Reset the SLE4436. |
byte[] |
sle4436_readMemory(int addr,
int length)
Read the data stored in main memory for SLE4436. |
int |
sle4436_writeMemory(int addr,
byte[] data,
int dataLen)
Write data to the main storage area SLE4436. |
int |
sle4436_verifyPassword(byte[] passwd)
Submit the transfer data, enter the personalization mode. |
int |
sle4436_regIncrease(int shiftBits)
Move the register. |
int |
sle4436_readBit(byte[] pData)
Read values from the card bit. |
int |
sle4436_writeBit()
Write a bit for card. |
int |
sle4436_reloadByte()
Reload Byte. |
int |
sle4436_decValue(int pValue)
Reduction balance. |
int |
sle4428_reset(byte[] pAtr)
Reset the SLE4428. |
byte[] |
sle4428_readMemory(int addr,
int length)
Read the data stored in main memory for SLE4428. |
int |
sle4428_writeMemory(int addr,
byte[] data,
int dataLen)
Write data to the main storage area SLE4428. |
int |
sle4428_password(int mode,
byte[] data)
Submit the transfer data, enter the personalization mode. |
byte[] |
at88sc102_read(int addr,
int length)
Read the data stored in main memory for At88sc102. |
int |
at88sc102_write(int addr,
byte[] data,
int dataLen)
Write data to the main storage area At88sc102. |
int |
at88sc102_VerifyPassword(int type,
byte[] data,
int length)
Check & Verify password for At88sc102. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
public IccManager()
public int open(byte slot, byte CardType, byte Volt)
slot
- Card slot type:
CardType
- Card type:
Volt
- valtage to supply:
IccManager mIccReader = new IccManager();
public static final byte SLOT_IC = 0x00;
public static final byte TYPE_IC = 0x01;
public static final byte VOLT_3 = 0x01;
int ret = mIccReader.open(SLOT_IC, TYPE_IC, VOLT_3);
if(ret < 0) {
//open failed
}
public int close()
int ret = mIccReader.open(SLOT_IC, TYPE_IC, VOLT_3);
if(ret == 0) {
mIccReader.close();
}
public int detect()
mIccReader.open(SLOT_IC, TYPE_IC, VOLT_3);
int ret = mIccReader.detect();
if(ret == 0)
//card is detected
else
//card is not detected
public int activate(byte[] pAtr)
pAtr
- To store the returned ATR from the card.
int ret = mIccReader.detect();
if(ret == 0) {
byte[] atr = new byte[64];
int re = mIccReader.activate(atr);
if(re == 0)
//activate success
else
//activate failed
}
public int apduTransmit(byte[] apdu, int apduLen, byte[] rsp, byte[] sw)
apdu
- APDU to be sent to the card.
apduLen
- Length of APDU.
rsp
- To store the response from the card.
sw
- To store the returned status bytes.
int ret = mIccReader.activate(atr);
if(ret < 0)
return; //activate failed
byte[] apduBuff = {0x00, 0xA4, 0x04, 0x00, 0x0E, 0x31, 0x50, 0x41, 0x59, 0x2E, 0x53,
0x59, 0x53, 0x2E, 0x44, 0x44, 0x46, 0x30, 0x31, 0x00};
int apduCount = apduBuff.length;
byte[] rspBuf = new byte[256];
byte[] rspStatus = new byte[1];
int len = mIccReader.ApduTransmit(apduBuff, (char) apduCount, rspBuf, rspStatus);
if(len < 0)
//ApduTransmit failed
public int deactivate()
int ret = mIccReader.activate(atr);
if(ret == 0) {
mIccReader.deactivate();
}
public int request_Type(byte[] type)
type
- To store the type of card:
mIccReader.activate(atr);
public static final byte[] TYPE = 1;
int ret = mIccReader.request_Type(TYPE);
if(ret == 0)
//request_Type success
else
//request_Type failed
public int getResponseEnable(byte autoFlag)
autoFlag
- Value:
mIccReader.activate(atr);
public static final byte AUTO_FLAG = 1;
int ret = mIccReader.getResponseEnable(AUTO_FLAG);
if(ret == 0)
//getResponseEnable success
else
//getResponseEnable failed
public int setETU(int etuTime)
etuTime
- ETU.
mIccReader.activate(atr);
int etuTime = 373;
int ret = mIccReader.setETU(etuTime);
if(ret == 0)
//setETU success
else
//setETU fail
public int sle4442_reset(byte[] pAtr)
pAtr
- To store the return ATR.
public byte[] sle4442_readMainMemory(int addr, int length)
addr
- The starting address of operation data, the range of the parameters of the SLE4442 card is 0 to 255.
length
- To read the data length, the range of the parameters of the SLE4442 card is 1 to 256.
ByteAddr and Length cannot be greater than the actual capacity of the card,
otherwise the reader will refuse to execute the command and returns an error.
public int sle4442_writeMainMemory(int addr, byte[] data, int dataLen)
addr
- The starting address of operation data, the range of the parameters of the SLE4442 card is 0 to 255.
data
- The data to be written.
dataLen
- Length of data.
public byte[] sle4442_readProtectionMemory(int address, int len)
address
- The parameter range is 0x00 to 0xff.
Len
- Length to read, 4 Bytes:
bit31 - read out 32Bytes;
bit0 - read out 1Byte;
bit* - etc.
public int sle4442_writeProtectionMemory(int addr, byte[] data, int dataLen)
addr
- The starting address of operation data, the range of the parameters of the SLE4442 card is 0 to 31.
data
- Write protect bit data.
dataLen
- Length of data.
public int sle4442_verifyPassword(byte[] passwd)
passwd
- The data buffer pointer password, password here to store data migration and card in the password.
public int sle4442_changePassword(byte[] passwd)
passwd
- The data buffer point to the new password.
public int sle4442_readErrorCounter(byte[] errorCount)
errorCount
- The data buffer point to error count, 1Byte.
public int sle4436_reset(byte[] pAtr)
pAtr
- To store the return ATR.
public byte[] sle4436_readMemory(int addr, int length)
addr
- The starting address of operation data, the range of the parameters of the SLE4436 card is 0 to 112.
length
- To read the data length, the range of the parameters of the SLE4436 card is 1 to 112.
ByteAddr and Length cannot be greater than the actual capacity of the card,
otherwise the reader will refuse to execute the command and returns an error.
public int sle4436_writeMemory(int addr, byte[] data, int dataLen)
addr
- The starting address of operation data, the range of the parameters of the SLE4436 card is 0 to 112.
data
- The data to be written.
dataLen
- The data length.
public int sle4436_verifyPassword(byte[] passwd)
passwd
- The data buffer pointer password, password here to store data migration and card in the password.
public int sle4436_regIncrease(int shiftBits)
shiftBits
- Move Bits.
public int sle4436_readBit(byte[] pData)
pData
- Store the value read from the card.
public int sle4436_writeBit()
public int sle4436_reloadByte()
public int sle4436_decValue(int pValue)
pValue
- The amount of money to be eduction.
public int sle4428_reset(byte[] pAtr)
pAtr
- To store the return ATR.
public byte[] sle4428_readMemory(int addr, int length)
addr
- The starting address of operation data, the range of the parameters of the SLE4428 card is 0 to 0x3FF.
`length
- To read the data length, the range of the parameters of the SLE4428 card is 1 to 0x400.
ByteAddr and Length cannot be greater than the actual capacity of the card,
otherwise the reader will refuse to execute the command and returns an error.
public int sle4428_writeMemory(int addr, byte[] data, int dataLen)
addr
- The starting address of operation data, the range of the parameters of the SLE4428 card is 0 to 0x3FF.
data
- The data to be written.
dataLen
- The data length, max 0x400.
public int sle4428_password(int mode, byte[] data)
mode
- 0 verify password or 1 changed password.
data
- The data buffer pointer password, password here to store data migration and card in the password.
public byte[] at88sc102_read(int addr, int length)
addr
- The starting address of operation data, the range of the parameters of the At88sc102 card is 0 to 0xFF.
length
- To read the data length, the range of the parameters of the At88sc102 card is 1 to 0x100.
ByteAddr and Length cannot be greater than the actual capacity of the card,
otherwise the reader will refuse to execute the command and returns an error.
public int at88sc102_write(int addr, byte[] data, int dataLen)
addr
- The starting address of operation data, the range of the parameters of the At88sc102 card is 0 to 0xFF.
data
- The data to be written.
dataLen
- The data length, 0x100.
public int at88sc102_VerifyPassword(int type, byte[] data, int length)
type
- type of password. Value:
data
- Password to verify. If type is SC, the len should be 2Bytes. EZ1, the len should be 6Bytes. EZ2, the len should be 4Bytes.
length
- The data length.