Revise some javadocs for NFC; add package description

Change-Id: I60223e2ad24af98b3b16a74960365185096ae614
This commit is contained in:
Scott Main
2010-10-15 09:15:09 -07:00
parent 7ef6834eea
commit c9f7890a20
8 changed files with 104 additions and 68 deletions

View File

@@ -21,10 +21,12 @@ import android.os.Parcel;
import android.os.Parcelable;
/**
* NDEF Message data.
* <p>
* Immutable data class. An NDEF message always contains zero or more NDEF
* records.
* Represents an NDEF (NFC Data Exchange Format) data message that contains one or more {@link
* NdefRecord}s.
* <p>An NDEF message includes "records" that can contain different sets of data, such as
* MIME-type media, a URI, or one of the supported RTD types (see {@link NdefRecord}). An NDEF
* message always contains zero or more NDEF records.</p>
* <p>This is an immutable data class.
*/
public class NdefMessage implements Parcelable {
private static final byte FLAG_MB = (byte) 0x80;

View File

@@ -22,20 +22,18 @@ import android.os.Parcelable;
import java.lang.UnsupportedOperationException;
/**
* NDEF Record data.
* <p>
* Immutable data class. An NDEF record always contains
* Represents a logical (unchunked) NDEF (NFC Data Exchange Format) record.
* <p>An NDEF record always contains:
* <ul>
* <li>3-bit TNF field
* <li>Variable length type
* <li>Variable length ID
* <li>Variable length payload
* <li>3-bit TNF (Type Name Format) field: Indicates how to interpret the type field
* <li>Variable length type: Describes the record format
* <li>Variable length ID: A unique identifier for the record
* <li>Variable length payload: The actual data payload
* </ul>
* The TNF (Type Name Format) field indicates how to interpret the type field.
* <p>
* This class represents a logical (unchunked) NDEF record. The underlying
* <p>The underlying record
* representation may be chunked across several NDEF records when the payload is
* large.
* <p>This is an immutable data class.
*/
public class NdefRecord implements Parcelable {
/**

View File

@@ -20,20 +20,18 @@ import android.os.Parcel;
import android.os.Parcelable;
/**
* NdefTag is a Tag that has NDEF messages or can store NDEF messages.
* Represents a discovered tag that contains {@link NdefMessage}s (or a tag that can store them).
* In practice, a tag is a thing that an NFC-enabled device can communicate with. This
* class is a representation of such a tag and can contain the NDEF messages shared by the tag.
* <p>An NDEF tag can contain zero or more NDEF messages (represented by {@link NdefMessage}
* objects) in addition to the basic tag properties of UID and Type.
* <p>
* NDEF Tag's contain zero or more NDEF Messages in addition to the basic
* Tag properties of UID and Type.
* <p>
* NDEF Tag's that have been initialized will usually contain a single NDEF
* Message (and that Message can contain multiple NDEF Records). However it
* is possible for NDEF Tag's to contain multiple NDEF Messages.
* <p>
* This class is a immutable data class that contains the contents of the NDEF
* Message(s) as read at Tag discovery time.
* <p>
* NfcAdapter.createNdefTagConnection() can be used to modify the contents of
* some NDEF Tag's.
* {@link NdefTag}s that have been initialized will usually contain a single {@link NdefMessage}
* (and that Message can contain multiple {@link NdefRecord}s). However it
* is possible for {@link NdefTag}s to contain multiple {@link NdefMessage}s.
* <p>{@link NfcAdapter#createNdefTagConnection createNdefTagConnection()} can be used to modify the
* contents of some tags.
* <p>This is an immutable data class.
*/
public class NdefTag extends Tag implements Parcelable {
private final NdefMessage[] mMessages;

View File

@@ -22,7 +22,9 @@ import android.os.RemoteException;
import android.util.Log;
/**
* NdefTagConnection is a connection to an NDEF target on an NDEF tag.
* A connection to an NDEF target on an {@link NdefTag}.
* <p>You can acquire this kind of connection with {@link NfcAdapter#createNdefTagConnection
* createNdefTagConnection()}. Use the connection to read or write {@link NdefMessage}s.
*/
public class NdefTagConnection extends RawTagConnection {
public static final int NDEF_MODE_READ_ONCE = 1;
@@ -44,7 +46,7 @@ public class NdefTagConnection extends RawTagConnection {
/**
* Read NDEF message(s).
* This will always return the most up to date payload, and can block.
* It can be canceled with close().
* It can be canceled with {@link RawTagConnection#close}.
* Most NDEF tags will contain just one NDEF message.
* <p>
* @throws FormatException if the tag is not NDEF formatted
@@ -79,12 +81,12 @@ public class NdefTagConnection extends RawTagConnection {
/**
* Attempt to write an NDEF message to a tag.
* This method will block until the data is written. It can be canceled
* with close().
* with {@link RawTagConnection#close}.
* Many tags are write-once, so use this method carefully.
* Specification allows for multiple NDEF messages per NDEF tag, but it is
* encourage to only write one message, this so API only takes a single
* message. Use NdefRecord to write several records to a single tag.
* For write-many tags, use makeReadOnly() after this method to attempt
* message. Use {@link NdefRecord} to write several records to a single tag.
* For write-many tags, use {@link #makeReadOnly} after this method to attempt
* to prevent further modification. For write-once tags this is not
* neccesary.
* Requires NFC_WRITE permission.
@@ -114,7 +116,7 @@ public class NdefTagConnection extends RawTagConnection {
/**
* Attempts to make the NDEF data in this tag read-only.
* This method will block until the action is complete. It can be canceled
* with close().
* with {@link RawTagConnection#close}.
* Requires NFC_WRITE permission.
* @return true if the tag is now read-only
* @throws IOException if the target is lost, or connection closed

View File

@@ -24,7 +24,7 @@ import android.util.Log;
//TODO(npelly) permission {@link android.Manifest.permission#NFC_MODIFY}
/**
* Represents a local NFC Adapter.
* Represents the device's local NFC adapter.
* <p>
* Use the static {@link #getDefaultAdapter} method to get the default NFC
* Adapter for this Android device. Most Android devices will have only one NFC

View File

@@ -22,18 +22,16 @@ import android.os.RemoteException;
import android.util.Log;
/**
* RawTagConnection is a low-level connection to a Tag.
* A low-level connection to a {@link Tag} target.
* <p>You can acquire this kind of connection with {@link NfcAdapter#createRawTagConnection
* createRawTagConnection()}. Use the connection to send and receive data with {@link #transceive
* transceive()}.
* <p>
* The only data transfer method that TagConnection offers is transceive().
* Applications must implement there own protocol stack on top of transceive().
* <p>
* Use NfcAdapter.createRawTagConnection() to create a RawTagConnection object.
* Applications must implement their own protocol stack on top of {@link #transceive transceive()}.
*
* * <p class="note"><strong>Note:</strong>
* Most methods require the {@link android.Manifest.permission#BLUETOOTH}
* permission and some also require the
* {@link android.Manifest.permission#BLUETOOTH_ADMIN} permission.
* <p class="note"><strong>Note:</strong>
* Most methods require the TODO
* permission.
*/
public class RawTagConnection {
@@ -52,7 +50,7 @@ public class RawTagConnection {
}
/**
* Get the Tag this connection is associated with.
* Get the {@link Tag} this connection is associated with.
*/
public Tag getTag() {
return mTag;
@@ -64,13 +62,14 @@ public class RawTagConnection {
}
/**
* Helper to indicate if transceive() calls might succeed.
* Helper to indicate if {@link #transceive transceive()} calls might succeed.
* <p>
* Does not cause RF activity, and does not block.
* <p>
* Returns true if connect() has completed successfully, and the Tag is not
* yet known to be out of range. Applications must still handle IOException
* while using transceive().
* @return true if {@link #connect} has completed successfully and the {@link Tag} is believed
* to be within range. Applications must still handle {@link java.io.IOException}
* while using {@link #transceive transceive()}, in case connection is lost after this method
* returns true.
*/
public boolean isConnected() {
// TODO(nxp): update mIsConnected when tag goes out of range -
@@ -80,11 +79,11 @@ public class RawTagConnection {
}
/**
* Connect to tag.
* Connect to the {@link Tag} associated with this connection.
* <p>
* This method blocks until the connection is established.
* <p>
* close() can be called from another thread to cancel this connection
* {@link #close} can be called from another thread to cancel this connection
* attempt.
*
* @throws IOException if the target is lost, or connect canceled
@@ -95,13 +94,13 @@ public class RawTagConnection {
}
/**
* Close tag connection.
* Close this connection.
* <p>
* Causes blocking operations such as transceive() or connect() to
* be canceled and immediately throw IOException.
* Causes blocking operations such as {@link #transceive transceive()} or {@link #connect} to
* be canceled and immediately throw {@link java.io.IOException}.
* <p>
* This object cannot be re-used after calling close(). Further calls
* to transceive() or connect() will fail.
* Once this method is called, this object cannot be re-used and should be discarded. Further
* calls to {@link #transceive transceive()} or {@link #connect} will fail.
*/
public void close() {
mIsConnected = false;
@@ -113,10 +112,10 @@ public class RawTagConnection {
}
/**
* Send data to a tag, and return the response.
* Send data to a tag and receive the response.
* <p>
* This method will block until the response is received. It can be canceled
* with close().
* with {@link #close}.
* <p>
* Requires NFC_WRITE permission.
*

View File

@@ -20,23 +20,24 @@ import android.os.Parcel;
import android.os.Parcelable;
/**
* Immutable data class, represents a discovered tag.
* Represents a (generic) discovered tag.
* <p>
* A tag is a passive NFC element, such as NFC Forum Tag's, Mifare class Tags,
* Sony Felica Tags.
* <p>
* Tag's have a type and usually have a UID.
* <p>
* Tag objects are passed to applications via the NfcAdapter.EXTRA_TAG extra
* in NfcAdapter.ACTION_TAG_DISCOVERED intents. The Tag object is immutable
* and represents the state of the Tag at the time of discovery. It can be
* directly queried for its UID and Type, or used to create a TagConnection
* (NfcAdapter.createTagConnection()).
* {@link Tag} objects are passed to applications via the {@link NfcAdapter#EXTRA_TAG} extra
* in {@link NfcAdapter#ACTION_TAG_DISCOVERED} intents. A {@link Tag} object is immutable
* and represents the state of the tag at the time of discovery. It can be
* directly queried for its UID and Type, or used to create a {@link RawTagConnection}
* (with {@link NfcAdapter#createRawTagConnection createRawTagConnection()}).
* <p>
* This Tag object can only be used to create a TagConnection while it is in
* range. If it is removed and then returned to range then the most recent
* Tag object (in ACTION_TAG_DISCOVERED) should be used to create a
* TagConnection.
* A {@link Tag} can be used to create a {@link RawTagConnection} only while the tag is in
* range. If it is removed and then returned to range, then the most recent
* {@link Tag} object (in {@link NfcAdapter#ACTION_TAG_DISCOVERED}) should be used to create a
* {@link RawTagConnection}.
* <p>This is an immutable data class.
*/
public class Tag implements Parcelable {

View File

@@ -0,0 +1,36 @@
<HTML>
<BODY>
Provides access to Near Field Communication (NFC) functionality, allowing applications to connect
to NFC tags, then transmit and recieving data. A "tag" may actually be another device that appears
as a tag.
<p>Here's a summary of the classes:</p>
<dl>
<dt>{@link android.nfc.NfcAdapter}</dt>
<dd>This represents the device's NFC adapter, which is your entry-point to performing NFC
operations. Once you acquire an instance with {@link android.nfc.NfcAdapter#getDefaultAdapter}, you
can create connections to tags.</dd>
<dt>{@link android.nfc.NdefTag} and {@link android.nfc.Tag}</dt>
<dd>These objects represent a tag. A tag is a thing that the NFC-enabled device can
communicate with when within range. Usually, you'll work with {@link android.nfc.NdefTag}, which
represents a tag that's compliant with the NFC Data Exchange Format (NDEF); a {@link
android.nfc.Tag} represents a generalized tag. Note that {@link android.nfc.NdefTag} extends
{@link android.nfc.Tag}.</dd>
<dt>{@link android.nfc.NdefTagConnection} and {@link android.nfc.RawTagConnection}</dt>
<dd>These objects represent a connection to a tag, respective to the type of tag connected
(either {@link android.nfc.NdefTag} or {@link android.nfc.Tag}). Note that {@link
android.nfc.NdefTagConnection} extends {@link android.nfc.RawTagConnection}.</dd>
<dt>{@link android.nfc.NdefMessage}</dt>
<dd>Represents an NDEF data message, which is the standard format in which "records"
carrying data are transmitted between devices and tags. Your application can receive these
messages from an {@link android.nfc.NdefTagConnection}.</dd>
<dt>{@link android.nfc.NdefRecord}</dt>
<dd>Represents a record, which is delivered in a {@link android.nfc.NdefMessage} and describes the
type of data being shared and carries the data itself.</dd>
</dl>
<p class="note"><strong>Note:</strong>
Not all Android-powered devices provide NFC functionality.</p>
</BODY>
</HTML>