Merge "Add NdefMessage.getByteLength(), and more minor fixes:"

This commit is contained in:
Nick Pelly
2012-01-27 09:59:10 -08:00
committed by Android (Google) Code Review
7 changed files with 41 additions and 49 deletions

View File

@@ -12621,6 +12621,7 @@ package android.nfc {
ctor public NdefMessage(android.nfc.NdefRecord, android.nfc.NdefRecord...); ctor public NdefMessage(android.nfc.NdefRecord, android.nfc.NdefRecord...);
ctor public NdefMessage(android.nfc.NdefRecord[]); ctor public NdefMessage(android.nfc.NdefRecord[]);
method public int describeContents(); method public int describeContents();
method public int getByteLength();
method public android.nfc.NdefRecord[] getRecords(); method public android.nfc.NdefRecord[] getRecords();
method public byte[] toByteArray(); method public byte[] toByteArray();
method public void writeToParcel(android.os.Parcel, int); method public void writeToParcel(android.os.Parcel, int);

View File

@@ -44,5 +44,5 @@ interface INfcAdapter
in IntentFilter[] filters, in TechListParcel techLists); in IntentFilter[] filters, in TechListParcel techLists);
void setForegroundNdefPush(in NdefMessage msg, in INdefPushCallback callback); void setForegroundNdefPush(in NdefMessage msg, in INdefPushCallback callback);
void dispatch(in Tag tag, in NdefMessage message); void dispatch(in Tag tag);
} }

View File

@@ -158,7 +158,28 @@ public final class NdefMessage implements Parcelable {
} }
/** /**
* Return this NDEF MEssage as raw bytes.<p> * Return the length of this NDEF Message if it is written to a byte array
* with {@link #toByteArray}.<p>
* An NDEF Message can be formatted to bytes in different ways
* depending on chunking, SR, and ID flags, so the length returned
* by this method may not be equal to the length of the original
* byte array used to construct this NDEF Message. However it will
* always be equal to the length of the byte array produced by
* {@link #toByteArray}.
*
* @return length of this NDEF Message when written to bytes with {@link toByteArray}
* @see #toByteArray
*/
public int getByteArrayLength() {
int length = 0;
for (NdefRecord r : mRecords) {
length += r.getByteLength();
}
return length;
}
/**
* Return this NDEF Message as raw bytes.<p>
* The NDEF Message is formatted as per the NDEF 1.0 specification, * The NDEF Message is formatted as per the NDEF 1.0 specification,
* and the byte array is suitable for network transmission or storage * and the byte array is suitable for network transmission or storage
* in an NFC Forum NDEF compatible tag.<p> * in an NFC Forum NDEF compatible tag.<p>
@@ -166,13 +187,10 @@ public final class NdefMessage implements Parcelable {
* short record (SR) format and omit the identifier field when possible. * short record (SR) format and omit the identifier field when possible.
* *
* @return NDEF Message in binary format * @return NDEF Message in binary format
* @see getByteArrayLength
*/ */
public byte[] toByteArray() { public byte[] toByteArray() {
int length = 0; int length = getByteArrayLength();
for (NdefRecord r : mRecords) {
length += r.getByteLength();
}
ByteBuffer buffer = ByteBuffer.allocate(length); ByteBuffer buffer = ByteBuffer.allocate(length);
for (int i=0; i<mRecords.length; i++) { for (int i=0; i<mRecords.length; i++) {

View File

@@ -889,12 +889,12 @@ public final class NfcAdapter {
* {@link android.Manifest.permission#WRITE_SECURE_SETTINGS} permission. * {@link android.Manifest.permission#WRITE_SECURE_SETTINGS} permission.
* @hide * @hide
*/ */
public void dispatch(Tag tag, NdefMessage message) { public void dispatch(Tag tag) {
if (tag == null) { if (tag == null) {
throw new NullPointerException("tag cannot be null"); throw new NullPointerException("tag cannot be null");
} }
try { try {
sService.dispatch(tag, message); sService.dispatch(tag);
} catch (RemoteException e) { } catch (RemoteException e) {
attemptDeadServiceRecovery(e); attemptDeadServiceRecovery(e);
} }

View File

@@ -108,14 +108,14 @@ import java.util.Arrays;
* <p> * <p>
*/ */
public final class Tag implements Parcelable { public final class Tag implements Parcelable {
/*package*/ final byte[] mId; final byte[] mId;
/*package*/ final int[] mTechList; final int[] mTechList;
/*package*/ final String[] mTechStringList; final String[] mTechStringList;
/*package*/ final Bundle[] mTechExtras; final Bundle[] mTechExtras;
/*package*/ final int mServiceHandle; // for use by NFC service, 0 indicates a mock final int mServiceHandle; // for use by NFC service, 0 indicates a mock
/*package*/ final INfcTag mTagService; // interface to NFC service, will be null if mock tag final INfcTag mTagService; // interface to NFC service, will be null if mock tag
/*package*/ int mConnectedTechnology; int mConnectedTechnology;
/** /**
* Hidden constructor to be used by NFC service and internal classes. * Hidden constructor to be used by NFC service and internal classes.

View File

@@ -18,7 +18,6 @@ package android.nfc.tech;
import android.nfc.ErrorCodes; import android.nfc.ErrorCodes;
import android.nfc.Tag; import android.nfc.Tag;
import android.nfc.TagLostException;
import android.nfc.TransceiveResult; import android.nfc.TransceiveResult;
import android.os.RemoteException; import android.os.RemoteException;
import android.util.Log; import android.util.Log;
@@ -28,12 +27,13 @@ import java.io.IOException;
/** /**
* A base class for tag technologies that are built on top of transceive(). * A base class for tag technologies that are built on top of transceive().
*/ */
/* package */ abstract class BasicTagTechnology implements TagTechnology { abstract class BasicTagTechnology implements TagTechnology {
private static final String TAG = "NFC"; private static final String TAG = "NFC";
/*package*/ final Tag mTag; final Tag mTag;
/*package*/ boolean mIsConnected;
/*package*/ int mSelectedTechnology; boolean mIsConnected;
int mSelectedTechnology;
BasicTagTechnology(Tag tag, int tech) throws RemoteException { BasicTagTechnology(Tag tag, int tech) throws RemoteException {
mTag = tag; mTag = tag;
@@ -139,7 +139,7 @@ import java.io.IOException;
} }
} }
/** Internal transceive */ /** Internal transceive */
/*package*/ byte[] transceive(byte[] data, boolean raw) throws IOException { byte[] transceive(byte[] data, boolean raw) throws IOException {
checkConnected(); checkConnected();
try { try {

View File

@@ -231,7 +231,6 @@ http://developer.android.com/resources/samples/JetBoy/index.html
http://developer.android.com/resources/samples/CubeLiveWallpaper/index.html http://developer.android.com/resources/samples/CubeLiveWallpaper/index.html
http://developer.android.com/resources/samples/LunarLander/index.html http://developer.android.com/resources/samples/LunarLander/index.html
http://developer.android.com/resources/samples/MultiResolution/index.html http://developer.android.com/resources/samples/MultiResolution/index.html
http://developer.android.com/resources/samples/NFCDemo/index.html
http://developer.android.com/resources/samples/NotePad/index.html http://developer.android.com/resources/samples/NotePad/index.html
http://developer.android.com/resources/samples/SampleSyncAdapter/index.html http://developer.android.com/resources/samples/SampleSyncAdapter/index.html
http://developer.android.com/resources/samples/SearchableDictionary/index.html http://developer.android.com/resources/samples/SearchableDictionary/index.html
@@ -1996,17 +1995,6 @@ http://developer.android.com/reference/java/io/Reader.html
http://developer.android.com/reference/android/content/DialogInterface.html http://developer.android.com/reference/android/content/DialogInterface.html
http://developer.android.com/reference/org/apache/http/message/BasicHeaderIterator.html http://developer.android.com/reference/org/apache/http/message/BasicHeaderIterator.html
http://developer.android.com/reference/org/apache/http/message/BasicListHeaderIterator.html http://developer.android.com/reference/org/apache/http/message/BasicListHeaderIterator.html
http://developer.android.com/resources/samples/NFCDemo/src/com/example/android/nfc/TagViewer.html
http://developer.android.com/resources/samples/NFCDemo/src/com/example/android/nfc/NdefMessageParser.html
http://developer.android.com/resources/samples/NFCDemo/src/com/example/android/nfc/record/ParsedNdefRecord.html
http://developer.android.com/resources/samples/NFCDemo/src/com/example/android/nfc/record/SmartPoster.html
http://developer.android.com/resources/samples/NFCDemo/src/com/example/android/nfc/record/TextRecord.html
http://developer.android.com/resources/samples/NFCDemo/src/com/example/android/nfc/record/UriRecord.html
http://developer.android.com/resources/samples/NFCDemo/src/com/example/android/nfc/simulator/FakeTagsActivity.html
http://developer.android.com/resources/samples/NFCDemo/src/com/example/android/nfc/simulator/MockNdefMessages.html
http://developer.android.com/resources/samples/NFCDemo/res/index.html
http://developer.android.com/resources/samples/NFCDemo/src/index.html
http://developer.android.com/resources/samples/NFCDemo/AndroidManifest.html
http://developer.android.com/reference/java/lang/InternalError.html http://developer.android.com/reference/java/lang/InternalError.html
http://developer.android.com/reference/java/lang/Error.html http://developer.android.com/reference/java/lang/Error.html
http://developer.android.com/reference/java/lang/VirtualMachineError.html http://developer.android.com/reference/java/lang/VirtualMachineError.html
@@ -3039,7 +3027,6 @@ http://developer.android.com/sdk/api_diff/3/changes/pkg_dalvik.system.html
http://developer.android.com/sdk/api_diff/3/changes/pkg_java.lang.html http://developer.android.com/sdk/api_diff/3/changes/pkg_java.lang.html
http://developer.android.com/sdk/api_diff/3/changes/pkg_java.util.jar.html http://developer.android.com/sdk/api_diff/3/changes/pkg_java.util.jar.html
http://developer.android.com/sdk/api_diff/3/changes/pkg_java.util.logging.html http://developer.android.com/sdk/api_diff/3/changes/pkg_java.util.logging.html
http://developer.android.com/resources/samples/NFCDemo/src/com/index.html
http://developer.android.com/sdk/api_diff/9/changes/alldiffs_index_removals.html http://developer.android.com/sdk/api_diff/9/changes/alldiffs_index_removals.html
http://developer.android.com/sdk/api_diff/9/changes/alldiffs_index_additions.html http://developer.android.com/sdk/api_diff/9/changes/alldiffs_index_additions.html
http://developer.android.com/sdk/api_diff/9/changes/alldiffs_index_changes.html http://developer.android.com/sdk/api_diff/9/changes/alldiffs_index_changes.html
@@ -3514,7 +3501,6 @@ http://developer.android.com/reference/javax/sql/ConnectionPoolDataSource.html
http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LabelView.html http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/LabelView.html
http://developer.android.com/resources/samples/ApiDemos/res/layout/custom_view_1.html http://developer.android.com/resources/samples/ApiDemos/res/layout/custom_view_1.html
http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html
http://developer.android.com/resources/samples/NFCDemo/src/com/example/index.html
http://developer.android.com/reference/org/apache/http/conn/ssl/SSLSocketFactory.html http://developer.android.com/reference/org/apache/http/conn/ssl/SSLSocketFactory.html
http://developer.android.com/reference/android/location/package-descr.html http://developer.android.com/reference/android/location/package-descr.html
http://developer.android.com/resources/samples/AccessibilityService/res/values/strings.html http://developer.android.com/resources/samples/AccessibilityService/res/values/strings.html
@@ -3939,10 +3925,6 @@ http://developer.android.com/reference/android/graphics/drawable/shapes/RoundRec
http://developer.android.com/resources/samples/ContactManager/res/drawable-mdpi/icon.html http://developer.android.com/resources/samples/ContactManager/res/drawable-mdpi/icon.html
http://developer.android.com/resources/samples/BackupRestore/src/com/example/index.html http://developer.android.com/resources/samples/BackupRestore/src/com/example/index.html
http://developer.android.com/reference/org/apache/http/message/package-descr.html http://developer.android.com/reference/org/apache/http/message/package-descr.html
http://developer.android.com/resources/samples/NFCDemo/res/drawable/index.html
http://developer.android.com/resources/samples/NFCDemo/res/layout/index.html
http://developer.android.com/resources/samples/NFCDemo/res/raw/index.html
http://developer.android.com/resources/samples/NFCDemo/res/values/index.html
http://developer.android.com/reference/android/bluetooth/package-descr.html http://developer.android.com/reference/android/bluetooth/package-descr.html
http://developer.android.com/resources/samples/SipDemo/res/drawable/index.html http://developer.android.com/resources/samples/SipDemo/res/drawable/index.html
http://developer.android.com/resources/samples/SipDemo/res/layout/index.html http://developer.android.com/resources/samples/SipDemo/res/layout/index.html
@@ -4110,7 +4092,6 @@ http://developer.android.com/sdk/api_diff/9/changes/methods_index_removals.html
http://developer.android.com/sdk/api_diff/9/changes/methods_index_additions.html http://developer.android.com/sdk/api_diff/9/changes/methods_index_additions.html
http://developer.android.com/sdk/api_diff/9/changes/methods_index_changes.html http://developer.android.com/sdk/api_diff/9/changes/methods_index_changes.html
http://developer.android.com/reference/android/media/audiofx/package-descr.html http://developer.android.com/reference/android/media/audiofx/package-descr.html
http://developer.android.com/resources/samples/NFCDemo/res/values/strings.html
http://developer.android.com/reference/android/sax/ElementListener.html http://developer.android.com/reference/android/sax/ElementListener.html
http://developer.android.com/reference/android/sax/EndElementListener.html http://developer.android.com/reference/android/sax/EndElementListener.html
http://developer.android.com/reference/android/sax/EndTextElementListener.html http://developer.android.com/reference/android/sax/EndTextElementListener.html
@@ -4599,7 +4580,6 @@ http://developer.android.com/resources/samples/SoftKeyboard/src/com/index.html
http://developer.android.com/reference/android/text/method/package-descr.html http://developer.android.com/reference/android/text/method/package-descr.html
http://developer.android.com/resources/samples/JetBoy/JETBOY_content/JETBOY_Music.logic/LgDoc/index.html http://developer.android.com/resources/samples/JetBoy/JETBOY_content/JETBOY_Music.logic/LgDoc/index.html
http://developer.android.com/resources/samples/TicTacToeMain/res/layout/main.html http://developer.android.com/resources/samples/TicTacToeMain/res/layout/main.html
http://developer.android.com/resources/samples/NFCDemo/src/com/example/android/index.html
http://developer.android.com/resources/samples/SearchableDictionary/res/drawable-mdpi/ic_menu_search.html http://developer.android.com/resources/samples/SearchableDictionary/res/drawable-mdpi/ic_menu_search.html
http://developer.android.com/resources/samples/TicTacToeMain/res/values/strings.html http://developer.android.com/resources/samples/TicTacToeMain/res/values/strings.html
http://developer.android.com/sdk/api_diff/7/changes/alldiffs_index_additions.html http://developer.android.com/sdk/api_diff/7/changes/alldiffs_index_additions.html
@@ -4637,9 +4617,6 @@ http://developer.android.com/resources/samples/SoftKeyboard/res/values/index.htm
http://developer.android.com/resources/samples/SoftKeyboard/res/values-land/index.html http://developer.android.com/resources/samples/SoftKeyboard/res/values-land/index.html
http://developer.android.com/resources/samples/SoftKeyboard/res/xml/index.html http://developer.android.com/resources/samples/SoftKeyboard/res/xml/index.html
http://developer.android.com/reference/junit/runner/package-descr.html http://developer.android.com/reference/junit/runner/package-descr.html
http://developer.android.com/resources/samples/NFCDemo/res/layout/tag_divider.html
http://developer.android.com/resources/samples/NFCDemo/res/layout/tag_text.html
http://developer.android.com/resources/samples/NFCDemo/res/layout/tag_viewer.html
http://developer.android.com/resources/samples/AccelerometerPlay/res/drawable-ldpi/icon.html http://developer.android.com/resources/samples/AccelerometerPlay/res/drawable-ldpi/icon.html
http://developer.android.com/resources/samples/CubeLiveWallpaper/src/com/example/index.html http://developer.android.com/resources/samples/CubeLiveWallpaper/src/com/example/index.html
http://developer.android.com/reference/android/text/style/package-descr.html http://developer.android.com/reference/android/text/style/package-descr.html
@@ -4726,14 +4703,12 @@ http://developer.android.com/resources/samples/SoftKeyboard/res/values-land/dime
http://developer.android.com/sdk/api_diff/3/changes/classes_index_additions.html http://developer.android.com/sdk/api_diff/3/changes/classes_index_additions.html
http://developer.android.com/sdk/api_diff/3/changes/classes_index_changes.html http://developer.android.com/sdk/api_diff/3/changes/classes_index_changes.html
http://developer.android.com/resources/samples/WiktionarySimple/src/com/index.html http://developer.android.com/resources/samples/WiktionarySimple/src/com/index.html
http://developer.android.com/resources/samples/NFCDemo/res/drawable/icon.html
http://developer.android.com/resources/samples/SearchableDictionary/res/drawable-hdpi/ic_menu_search.html http://developer.android.com/resources/samples/SearchableDictionary/res/drawable-hdpi/ic_menu_search.html
http://developer.android.com/resources/samples/SipDemo/res/values/strings.html http://developer.android.com/resources/samples/SipDemo/res/values/strings.html
http://developer.android.com/resources/samples/SpinnerTest/src/com/android/index.html http://developer.android.com/resources/samples/SpinnerTest/src/com/android/index.html
http://developer.android.com/sdk/api_diff/3/changes/methods_index_removals.html http://developer.android.com/sdk/api_diff/3/changes/methods_index_removals.html
http://developer.android.com/sdk/api_diff/3/changes/methods_index_additions.html http://developer.android.com/sdk/api_diff/3/changes/methods_index_additions.html
http://developer.android.com/sdk/api_diff/3/changes/methods_index_changes.html http://developer.android.com/sdk/api_diff/3/changes/methods_index_changes.html
http://developer.android.com/resources/samples/NFCDemo/src/com/example/android/nfc/index.html
http://developer.android.com/resources/samples/SoftKeyboard/res/xml/method.html http://developer.android.com/resources/samples/SoftKeyboard/res/xml/method.html
http://developer.android.com/resources/samples/SoftKeyboard/res/xml/qwerty.html http://developer.android.com/resources/samples/SoftKeyboard/res/xml/qwerty.html
http://developer.android.com/resources/samples/SoftKeyboard/res/xml/symbols.html http://developer.android.com/resources/samples/SoftKeyboard/res/xml/symbols.html
@@ -5326,8 +5301,6 @@ http://developer.android.com/resources/samples/ApiDemos/res/drawable-ldpi/stylog
http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_removals.html http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_removals.html
http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_additions.html http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_additions.html
http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_changes.html http://developer.android.com/sdk/api_diff/5/changes/alldiffs_index_changes.html
http://developer.android.com/resources/samples/NFCDemo/src/com/example/android/nfc/record/index.html
http://developer.android.com/resources/samples/NFCDemo/src/com/example/android/nfc/simulator/index.html
http://developer.android.com/resources/samples/BackupRestore/src/com/example/android/index.html http://developer.android.com/resources/samples/BackupRestore/src/com/example/android/index.html
http://developer.android.com/resources/samples/BluetoothChat/src/com/example/android/BluetoothChat/index.html http://developer.android.com/resources/samples/BluetoothChat/src/com/example/android/BluetoothChat/index.html
http://developer.android.com/resources/samples/ContactManager/src/com/example/android/index.html http://developer.android.com/resources/samples/ContactManager/src/com/example/android/index.html