Merge "Final final final Gingerbread MR API changes." into gingerbread
This commit is contained in:
@@ -44,10 +44,10 @@ public final class NfcAdapter {
|
||||
/**
|
||||
* Intent to start an activity when a tag with NDEF payload is discovered.
|
||||
* If the tag has and NDEF payload this intent is started before
|
||||
* {@link #ACTION_TECHNOLOGY_DISCOVERED}.
|
||||
* {@link #ACTION_TECH_DISCOVERED}.
|
||||
*
|
||||
* If any activities respond to this intent neither
|
||||
* {@link #ACTION_TECHNOLOGY_DISCOVERED} or {@link #ACTION_TAG_DISCOVERED} will be started.
|
||||
* {@link #ACTION_TECH_DISCOVERED} or {@link #ACTION_TAG_DISCOVERED} will be started.
|
||||
*/
|
||||
@SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
|
||||
public static final String ACTION_NDEF_DISCOVERED = "android.nfc.action.NDEF_DISCOVERED";
|
||||
@@ -63,7 +63,7 @@ public final class NfcAdapter {
|
||||
* If any activities respond to this intent {@link #ACTION_TAG_DISCOVERED} will not be started.
|
||||
*/
|
||||
@SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
|
||||
public static final String ACTION_TECHNOLOGY_DISCOVERED = "android.nfc.action.TECH_DISCOVERED";
|
||||
public static final String ACTION_TECH_DISCOVERED = "android.nfc.action.TECH_DISCOVERED";
|
||||
|
||||
/**
|
||||
* Intent to start an activity when a tag is discovered.
|
||||
|
||||
@@ -55,7 +55,7 @@ import java.util.Arrays;
|
||||
* not cause any further RF activity or block. Note however that arrays passed to and
|
||||
* returned by this class are *not* cloned, so be careful not to modify them.
|
||||
*/
|
||||
public class Tag implements Parcelable {
|
||||
public final class Tag implements Parcelable {
|
||||
/*package*/ final byte[] mId;
|
||||
/*package*/ final int[] mTechList;
|
||||
/*package*/ final String[] mTechStringList;
|
||||
@@ -93,6 +93,7 @@ public class Tag implements Parcelable {
|
||||
* @param id The tag identifier, can be null
|
||||
* @param techList must not be null
|
||||
* @return freshly constructed tag
|
||||
* @hide
|
||||
*/
|
||||
public static Tag createMockTag(byte[] id, int[] techList, Bundle[] techListExtras) {
|
||||
// set serviceHandle to 0 to indicate mock tag
|
||||
|
||||
@@ -53,15 +53,7 @@ import java.io.IOException;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper to indicate if {@link #connect} has succeeded.
|
||||
* <p>
|
||||
* Does not cause RF activity, and does not block.
|
||||
* @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 methods that require a connection in case the connection is lost after this
|
||||
* method returns.
|
||||
*/
|
||||
@Override
|
||||
public boolean isConnected() {
|
||||
if (!mIsConnected) {
|
||||
return false;
|
||||
@@ -94,6 +86,7 @@ import java.io.IOException;
|
||||
}
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@Override
|
||||
public void reconnect() throws IOException {
|
||||
if (!mIsConnected) {
|
||||
|
||||
@@ -61,12 +61,31 @@ public final class Ndef extends BasicTagTechnology {
|
||||
/** @hide */
|
||||
public static final String EXTRA_NDEF_TYPE = "ndeftype";
|
||||
|
||||
public static final int OTHER = -1;
|
||||
public static final int NFC_FORUM_TYPE_1 = 1;
|
||||
public static final int NFC_FORUM_TYPE_2 = 2;
|
||||
public static final int NFC_FORUM_TYPE_3 = 3;
|
||||
public static final int NFC_FORUM_TYPE_4 = 4;
|
||||
public static final int MIFARE_CLASSIC = 101;
|
||||
/** @hide */
|
||||
public static final int TYPE_OTHER = -1;
|
||||
/** @hide */
|
||||
public static final int TYPE_1 = 1;
|
||||
/** @hide */
|
||||
public static final int TYPE_2 = 2;
|
||||
/** @hide */
|
||||
public static final int TYPE_3 = 3;
|
||||
/** @hide */
|
||||
public static final int TYPE_4 = 4;
|
||||
/** @hide */
|
||||
public static final int TYPE_MIFARE_CLASSIC = 101;
|
||||
|
||||
/** @hide */
|
||||
public static final String UNKNOWN = "android.ndef.unknown";
|
||||
|
||||
public static final String NFC_FORUM_TYPE_1 = "org.nfcforum.ndef.type1";
|
||||
|
||||
public static final String NFC_FORUM_TYPE_2 = "org.nfcforum.ndef.type2";
|
||||
|
||||
public static final String NFC_FORUM_TYPE_3 = "org.nfcforum.ndef.type3";
|
||||
|
||||
public static final String NFC_FORUM_TYPE_4 = "org.nfcforum.ndef.type4";
|
||||
|
||||
public static final String MIFARE_CLASSIC = "com.nxp.ndef.mifareclassic";
|
||||
|
||||
private final int mMaxNdefSize;
|
||||
private final int mCardState;
|
||||
@@ -118,18 +137,27 @@ public final class Ndef extends BasicTagTechnology {
|
||||
* Get NDEF tag type.
|
||||
* <p>Returns one of {@link #NFC_FORUM_TYPE_1}, {@link #NFC_FORUM_TYPE_2},
|
||||
* {@link #NFC_FORUM_TYPE_3}, {@link #NFC_FORUM_TYPE_4},
|
||||
* {@link #MIFARE_CLASSIC} or {@link #OTHER}.
|
||||
* <p>Platforms of this API revision will always return one of the above
|
||||
* values. Platforms at future API revisions may return other values, which
|
||||
* can be treated as {@link #OTHER} by applications targeting this API.
|
||||
* {@link #MIFARE_CLASSIC} or another NDEF tag type that is not yet in the
|
||||
* Android API.
|
||||
* <p>Android devices with NFC support must always correctly enumerate
|
||||
* NFC Forum tag types, and may optionally enumerate
|
||||
* {@link #MIFARE_CLASSIC} since it requires proprietary technology.
|
||||
* Devices that cannot enumerate {@link #MIFARE_CLASSIC} will use
|
||||
* {@link #OTHER} instead.
|
||||
*/
|
||||
public int getType() {
|
||||
return mNdefType;
|
||||
public String getType() {
|
||||
switch (mNdefType) {
|
||||
case TYPE_1:
|
||||
return NFC_FORUM_TYPE_1;
|
||||
case TYPE_2:
|
||||
return NFC_FORUM_TYPE_2;
|
||||
case TYPE_3:
|
||||
return NFC_FORUM_TYPE_3;
|
||||
case TYPE_4:
|
||||
return NFC_FORUM_TYPE_4;
|
||||
case TYPE_MIFARE_CLASSIC:
|
||||
return MIFARE_CLASSIC;
|
||||
default:
|
||||
return UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -217,10 +245,10 @@ public final class Ndef extends BasicTagTechnology {
|
||||
|
||||
/**
|
||||
* Indicates whether a tag can be made read-only with
|
||||
* {@link #makeReadonly()}
|
||||
* {@link #makeReadOnly()}
|
||||
*/
|
||||
public boolean canMakeReadonly() {
|
||||
if (mNdefType == NFC_FORUM_TYPE_1 || mNdefType == NFC_FORUM_TYPE_2) {
|
||||
public boolean canMakeReadOnly() {
|
||||
if (mNdefType == TYPE_1 || mNdefType == TYPE_2) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
@@ -234,7 +262,7 @@ public final class Ndef extends BasicTagTechnology {
|
||||
* This is a one-way process and can not be reverted!
|
||||
* @throws IOException
|
||||
*/
|
||||
public boolean makeReadonly() throws IOException {
|
||||
public boolean makeReadOnly() throws IOException {
|
||||
checkConnected();
|
||||
|
||||
try {
|
||||
|
||||
@@ -65,8 +65,25 @@ public final class NdefFormatable extends BasicTagTechnology {
|
||||
/**
|
||||
* Formats a tag as NDEF, if possible. You may supply a first
|
||||
* NdefMessage to be written on the tag.
|
||||
* <p>Either all steps succeed, or an IOException is thrown if any one step
|
||||
* fails.
|
||||
*/
|
||||
public void format(NdefMessage firstMessage) throws IOException, FormatException {
|
||||
format(firstMessage, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Formats a tag as NDEF, if possible. You may supply a first
|
||||
* NdefMessage to be written on the tag.
|
||||
* <p>Either all steps succeed, or an IOException is thrown if any one step
|
||||
* fails.
|
||||
*/
|
||||
public void formatReadOnly(NdefMessage firstMessage) throws IOException, FormatException {
|
||||
format(firstMessage, true);
|
||||
}
|
||||
|
||||
/*package*/ void format(NdefMessage firstMessage, boolean makeReadOnly) throws IOException,
|
||||
FormatException {
|
||||
checkConnected();
|
||||
|
||||
try {
|
||||
@@ -101,6 +118,21 @@ public final class NdefFormatable extends BasicTagTechnology {
|
||||
} else {
|
||||
throw new IOException();
|
||||
}
|
||||
// optionally make read-only
|
||||
if (makeReadOnly) {
|
||||
errorCode = tagService.ndefMakeReadOnly(serviceHandle);
|
||||
switch (errorCode) {
|
||||
case ErrorCodes.SUCCESS:
|
||||
break;
|
||||
case ErrorCodes.ERROR_IO:
|
||||
throw new IOException();
|
||||
case ErrorCodes.ERROR_INVALID_PARAM:
|
||||
throw new IOException();
|
||||
default:
|
||||
// Should not happen
|
||||
throw new IOException();
|
||||
}
|
||||
}
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "NFC service dead", e);
|
||||
}
|
||||
|
||||
@@ -121,6 +121,7 @@ public interface TagTechnology extends Closeable {
|
||||
* @see #connect()
|
||||
* @see #close()
|
||||
* @throws IOException
|
||||
* @hide
|
||||
*/
|
||||
public void reconnect() throws IOException;
|
||||
|
||||
@@ -137,4 +138,15 @@ public interface TagTechnology extends Closeable {
|
||||
* @see #reconnect()
|
||||
*/
|
||||
public void close() throws IOException;
|
||||
|
||||
/**
|
||||
* Helper to indicate if {@link #connect} has succeeded.
|
||||
* <p>
|
||||
* Does not cause RF activity, and does not block.
|
||||
* @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 methods that require a connection in case the connection is lost after this
|
||||
* method returns.
|
||||
*/
|
||||
public boolean isConnected();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user