Most visited

Recently visited

Added in API level 10

IsoDep

public final class IsoDep
extends Object implements TagTechnology

java.lang.Object
   ↳ android.nfc.tech.IsoDep


Tag上提供对ISO-DEP(ISO 14443-4)属性和I / O操作的 Tag

使用 get(Tag)获取 IsoDep对象。

主要的ISO-DEP I / O操作是transceive(byte[]) 应用程序必须在transceive(byte[])之上实现自己的协议栈。

getTechList()中列举 IsoDep技术的标签也将枚举 NfcANfcB (因为IsoDep建立在这两者之上)。

注意:执行I / O操作的方法需要 NFC权限。

Summary

Public methods

void close()

禁用对此 TagTechnology对象标记的I / O操作,并释放资源。

void connect()

启用对此 TagTechnology对象标记的I / O操作。

static IsoDep get(Tag tag)

获取给定标签的 IsoDep实例。

byte[] getHiLayerResponse()

NfcB标签返回更高层的响应字节。

byte[] getHistoricalBytes()

返回 NfcA标签的ISO-DEP历史字节。

int getMaxTransceiveLength()

返回可以使用 transceive(byte[])发送的最大字节数。

Tag getTag()

获取 Tag对象支持此 TagTechnology对象。

int getTimeout()

以毫秒为单位获取 transceive(byte[])的当前超时 transceive(byte[])

boolean isConnected()

帮助者指出I / O操作是否可行。

boolean isExtendedLengthApduSupported()

标准APDU具有1字节长度字段,允许最多255个有效载荷字节,这导致最大APDU长度为261字节。

void setTimeout(int timeout)

以毫秒为单位设置 transceive(byte[])的超时时间。

byte[] transceive(byte[] data)

将原始ISO-DEP数据发送到标签并接收响应。

Inherited methods

From class java.lang.Object
From interface android.nfc.tech.TagTechnology
From interface java.io.Closeable
From interface java.lang.AutoCloseable

Public methods

close

Added in API level 10
void close ()

禁用对此 TagTechnology对象标记的I / O操作,并释放资源。

还会导致其他线程上的所有被阻止的I / O操作被取消,并以 IOException返回。

需要 NFC权限。

Throws
IOException

connect

Added in API level 10
void connect ()

启用来自此 TagTechnology对象的标记的I / O操作。

可能导致RF活动并可能阻塞。 不能从主应用程序线程调用。 被阻止的呼叫将被IOException通过从另一个线程调用close()被取消。

一次只能有一个 TagTechnology对象连接到 Tag

当I / O操作完成时,应用程序必须调用 close()

需要 NFC权限。

Throws
IOException

get

Added in API level 10
IsoDep get (Tag tag)

获取给定标签的 IsoDep实例。

不会导致任何RF活动并且不会阻止。

IsoDep中未列举getTechList()返回null。 这表明标签不支持ISO-DEP。

Parameters
tag Tag: an ISO-DEP compatible tag
Returns
IsoDep ISO-DEP object

getHiLayerResponse

Added in API level 10
byte[] getHiLayerResponse ()

返回 NfcB标签的更高层响应字节。

不会导致任何RF活动并且不会阻止。

较高层响应字节可用于帮助识别标签。 它们仅出现在基于NfcB射频技术的IsoDep标签上。 如果此标记不是NfcB则返回null。

在ISO 14443-4术语中,高层字节是ATTRIB响应的一个子集。

Returns
byte[] ISO-DEP historical bytes, or null if this is not a NfcB tag

getHistoricalBytes

Added in API level 10
byte[] getHistoricalBytes ()

返回 NfcA标签的ISO-DEP历史字节。

不会导致任何RF活动并且不会阻止。

历史字节可用于帮助识别标签。 它们仅出现在基于NfcA射频技术的IsoDep标签上。 如果这个标签不是NfcA则返回null。

在ISO 14443-4术语中,历史字节是RATS响应的子集。

Returns
byte[] ISO-DEP historical bytes, or null if this is not a NfcA tag

getMaxTransceiveLength

Added in API level 14
int getMaxTransceiveLength ()

返回可以通过 transceive(byte[])发送的最大字节数。

Returns
int the maximum number of bytes that can be sent with transceive(byte[]).

getTag

Added in API level 10
Tag getTag ()

获取 Tag对象支持此 TagTechnology对象。

Returns
Tag the Tag backing this TagTechnology object.

getTimeout

Added in API level 14
int getTimeout ()

以毫秒为单位获取 transceive(byte[])的当前超时 transceive(byte[])

需要 NFC权限。

Returns
int timeout value in milliseconds

isConnected

Added in API level 10
boolean isConnected ()

帮助者指出I / O操作是否可行。

如果返回true connect()已经完成,并 close()没有被调用,并且 Tag不知道是超出范围。

不会导致射频活动,也不会阻止。

Returns
boolean true if I/O operations should be possible

isExtendedLengthApduSupported

Added in API level 16
boolean isExtendedLengthApduSupported ()

标准APDU具有1字节长度字段,允许最多255个有效载荷字节,这导致最大APDU长度为261字节。

扩展长度APDU具有3字节长度字段,允许65535个有效载荷字节。

一些NFC适配器,如Nexus S和Galaxy Nexus中使用的适配器不支持扩展长度的APDU。 但预计他们在未来将得到很好的支持。 使用此方法检查扩展长度APDU支持。

Returns
boolean whether the NFC adapter on this device supports extended length APDUs.

setTimeout

Added in API level 10
void setTimeout (int timeout)

以毫秒为单位设置 transceive(byte[])的超时时间。

超时仅适用于ISO-DEP transceive(byte[]) ,并在 close()时重置为默认值。

在标签上执行需要较长处理时间的事务(例如密钥生成)时,设置较长的超时时间可能很有用。

需要 NFC权限。

Parameters
timeout int: timeout value in milliseconds

transceive

Added in API level 10
byte[] transceive (byte[] data)

将原始ISO-DEP数据发送到标签并接收响应。

应用程序只能发送INF有效负载,而不能发送帧开始和帧结束指示符。 应用程序不需要对有效负载进行分段,如果超出FSD / FSC限制,应用程序将自动分段并进行碎片整理, transceive(byte[])

使用 getMaxTransceiveLength()检索可以与发送的字节的最大数量 transceive(byte[])

这是一个I / O操作,将阻塞直到完成。 它不能从主应用程序线程调用。 如果从另一个线程调用close()被阻止的呼叫将被IOException取消。

需要 NFC权限。

Parameters
data byte: command bytes to send, must not be null
Returns
byte[] response bytes received, will not be null
Throws
if the tag leaves the field
IOException if there is an I/O failure, or this operation is canceled

Hooray!