Loading api/current.txt +7 −0 Original line number Diff line number Diff line Loading @@ -12441,6 +12441,7 @@ package android.nfc.tech { method public static android.nfc.tech.IsoDep get(android.nfc.Tag); method public byte[] getHiLayerResponse(); method public byte[] getHistoricalBytes(); method public int getMaxTransceiveLength(); method public void setTimeout(int); method public byte[] transceive(byte[]) throws java.io.IOException; } Loading @@ -12453,6 +12454,7 @@ package android.nfc.tech { method public static android.nfc.tech.MifareClassic get(android.nfc.Tag); method public int getBlockCount(); method public int getBlockCountInSector(int); method public int getMaxTransceiveLength(); method public int getSectorCount(); method public int getSize(); method public int getType(); Loading @@ -12479,6 +12481,7 @@ package android.nfc.tech { public final class MifareUltralight extends android.nfc.tech.BasicTagTechnology { method public static android.nfc.tech.MifareUltralight get(android.nfc.Tag); method public int getMaxTransceiveLength(); method public int getType(); method public byte[] readPages(int) throws java.io.IOException; method public byte[] transceive(byte[]) throws java.io.IOException; Loading Loading @@ -12515,6 +12518,7 @@ package android.nfc.tech { public final class NfcA extends android.nfc.tech.BasicTagTechnology { method public static android.nfc.tech.NfcA get(android.nfc.Tag); method public byte[] getAtqa(); method public int getMaxTransceiveLength(); method public short getSak(); method public byte[] transceive(byte[]) throws java.io.IOException; } Loading @@ -12522,6 +12526,7 @@ package android.nfc.tech { public final class NfcB extends android.nfc.tech.BasicTagTechnology { method public static android.nfc.tech.NfcB get(android.nfc.Tag); method public byte[] getApplicationData(); method public int getMaxTransceiveLength(); method public byte[] getProtocolInfo(); method public byte[] transceive(byte[]) throws java.io.IOException; } Loading @@ -12529,6 +12534,7 @@ package android.nfc.tech { public final class NfcF extends android.nfc.tech.BasicTagTechnology { method public static android.nfc.tech.NfcF get(android.nfc.Tag); method public byte[] getManufacturer(); method public int getMaxTransceiveLength(); method public byte[] getSystemCode(); method public byte[] transceive(byte[]) throws java.io.IOException; } Loading @@ -12536,6 +12542,7 @@ package android.nfc.tech { public final class NfcV extends android.nfc.tech.BasicTagTechnology { method public static android.nfc.tech.NfcV get(android.nfc.Tag); method public byte getDsfId(); method public int getMaxTransceiveLength(); method public byte getResponseFlags(); method public byte[] transceive(byte[]) throws java.io.IOException; } core/java/android/nfc/INfcTag.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -46,4 +46,6 @@ interface INfcTag int setTimeout(int technology, int timeout); int getTimeout(int technology); void resetTimeouts(); boolean canMakeReadOnly(int ndefType); int getMaxTransceiveLength(int technology); } core/java/android/nfc/TransceiveResult.java +27 −24 Original line number Diff line number Diff line Loading @@ -19,33 +19,38 @@ package android.nfc; import android.os.Parcel; import android.os.Parcelable; import java.io.IOException; /** * Class used to pipe transceive result from the NFC service. * * @hide */ public final class TransceiveResult implements Parcelable { private final boolean mTagLost; private final boolean mSuccess; private final byte[] mResponseData; public static final int RESULT_SUCCESS = 0; public static final int RESULT_FAILURE = 1; public static final int RESULT_TAGLOST = 2; public static final int RESULT_EXCEEDED_LENGTH = 3; public TransceiveResult(final boolean success, final boolean tagIsLost, final byte[] data) { mSuccess = success; mTagLost = tagIsLost; mResponseData = data; } final int mResult; final byte[] mResponseData; public boolean isSuccessful() { return mSuccess; } public boolean isTagLost() { return mTagLost; public TransceiveResult(final int result, final byte[] data) { mResult = result; mResponseData = data; } public byte[] getResponseData() { public byte[] getResponseOrThrow() throws IOException { switch (mResult) { case RESULT_SUCCESS: return mResponseData; case RESULT_TAGLOST: throw new TagLostException("Tag was lost."); case RESULT_EXCEEDED_LENGTH: throw new IOException("Transceive length exceeds supported maximum"); default: throw new IOException("Transceive failed"); } } @Override Loading @@ -55,9 +60,8 @@ public final class TransceiveResult implements Parcelable { @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(mSuccess ? 1 : 0); dest.writeInt(mTagLost ? 1 : 0); if (mSuccess) { dest.writeInt(mResult); if (mResult == RESULT_SUCCESS) { dest.writeInt(mResponseData.length); dest.writeByteArray(mResponseData); } Loading @@ -67,18 +71,17 @@ public final class TransceiveResult implements Parcelable { new Parcelable.Creator<TransceiveResult>() { @Override public TransceiveResult createFromParcel(Parcel in) { boolean success = (in.readInt() == 1) ? true : false; boolean tagLost = (in.readInt() == 1) ? true : false; int result = in.readInt(); byte[] responseData; if (success) { if (result == RESULT_SUCCESS) { int responseLength = in.readInt(); responseData = new byte[responseLength]; in.readByteArray(responseData); } else { responseData = null; } return new TransceiveResult(success, tagLost, responseData); return new TransceiveResult(result, responseData); } @Override Loading core/java/android/nfc/tech/BasicTagTechnology.java +10 −10 Original line number Diff line number Diff line Loading @@ -129,6 +129,15 @@ import java.io.IOException; } } /** Internal getMaxTransceiveLength() */ int getMaxTransceiveLengthInternal() { try { return mTag.getTagService().getMaxTransceiveLength(mSelectedTechnology); } catch (RemoteException e) { Log.e(TAG, "NFC service dead", e); return 0; } } /** Internal transceive */ /*package*/ byte[] transceive(byte[] data, boolean raw) throws IOException { checkConnected(); Loading @@ -139,16 +148,7 @@ import java.io.IOException; if (result == null) { throw new IOException("transceive failed"); } else { if (result.isSuccessful()) { return result.getResponseData(); } else { if (result.isTagLost()) { throw new TagLostException("Tag was lost."); } else { throw new IOException("transceive failed"); } } return result.getResponseOrThrow(); } } catch (RemoteException e) { Log.e(TAG, "NFC service dead", e); Loading core/java/android/nfc/tech/IsoDep.java +11 −0 Original line number Diff line number Diff line Loading @@ -156,6 +156,9 @@ public final class IsoDep extends BasicTagTechnology { * will be automatically fragmented and defragmented by {@link #transceive} if * it exceeds FSD/FSC limits. * * <p>Use {@link #getMaxTransceiveLength} to retrieve the maximum number of bytes * that can be sent with {@link #transceive}. * * <p>This is an I/O operation and will block until complete. It must * not be called from the main application thread. A blocked call will be canceled with * {@link IOException} if {@link #close} is called from another thread. Loading @@ -170,4 +173,12 @@ public final class IsoDep extends BasicTagTechnology { public byte[] transceive(byte[] data) throws IOException { return transceive(data, true); } /** * Return the maximum number of bytes that can be sent with {@link #transceive}. * @return the maximum number of bytes that can be sent with {@link #transceive}. */ public int getMaxTransceiveLength() { return getMaxTransceiveLengthInternal(); } } Loading
api/current.txt +7 −0 Original line number Diff line number Diff line Loading @@ -12441,6 +12441,7 @@ package android.nfc.tech { method public static android.nfc.tech.IsoDep get(android.nfc.Tag); method public byte[] getHiLayerResponse(); method public byte[] getHistoricalBytes(); method public int getMaxTransceiveLength(); method public void setTimeout(int); method public byte[] transceive(byte[]) throws java.io.IOException; } Loading @@ -12453,6 +12454,7 @@ package android.nfc.tech { method public static android.nfc.tech.MifareClassic get(android.nfc.Tag); method public int getBlockCount(); method public int getBlockCountInSector(int); method public int getMaxTransceiveLength(); method public int getSectorCount(); method public int getSize(); method public int getType(); Loading @@ -12479,6 +12481,7 @@ package android.nfc.tech { public final class MifareUltralight extends android.nfc.tech.BasicTagTechnology { method public static android.nfc.tech.MifareUltralight get(android.nfc.Tag); method public int getMaxTransceiveLength(); method public int getType(); method public byte[] readPages(int) throws java.io.IOException; method public byte[] transceive(byte[]) throws java.io.IOException; Loading Loading @@ -12515,6 +12518,7 @@ package android.nfc.tech { public final class NfcA extends android.nfc.tech.BasicTagTechnology { method public static android.nfc.tech.NfcA get(android.nfc.Tag); method public byte[] getAtqa(); method public int getMaxTransceiveLength(); method public short getSak(); method public byte[] transceive(byte[]) throws java.io.IOException; } Loading @@ -12522,6 +12526,7 @@ package android.nfc.tech { public final class NfcB extends android.nfc.tech.BasicTagTechnology { method public static android.nfc.tech.NfcB get(android.nfc.Tag); method public byte[] getApplicationData(); method public int getMaxTransceiveLength(); method public byte[] getProtocolInfo(); method public byte[] transceive(byte[]) throws java.io.IOException; } Loading @@ -12529,6 +12534,7 @@ package android.nfc.tech { public final class NfcF extends android.nfc.tech.BasicTagTechnology { method public static android.nfc.tech.NfcF get(android.nfc.Tag); method public byte[] getManufacturer(); method public int getMaxTransceiveLength(); method public byte[] getSystemCode(); method public byte[] transceive(byte[]) throws java.io.IOException; } Loading @@ -12536,6 +12542,7 @@ package android.nfc.tech { public final class NfcV extends android.nfc.tech.BasicTagTechnology { method public static android.nfc.tech.NfcV get(android.nfc.Tag); method public byte getDsfId(); method public int getMaxTransceiveLength(); method public byte getResponseFlags(); method public byte[] transceive(byte[]) throws java.io.IOException; }
core/java/android/nfc/INfcTag.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -46,4 +46,6 @@ interface INfcTag int setTimeout(int technology, int timeout); int getTimeout(int technology); void resetTimeouts(); boolean canMakeReadOnly(int ndefType); int getMaxTransceiveLength(int technology); }
core/java/android/nfc/TransceiveResult.java +27 −24 Original line number Diff line number Diff line Loading @@ -19,33 +19,38 @@ package android.nfc; import android.os.Parcel; import android.os.Parcelable; import java.io.IOException; /** * Class used to pipe transceive result from the NFC service. * * @hide */ public final class TransceiveResult implements Parcelable { private final boolean mTagLost; private final boolean mSuccess; private final byte[] mResponseData; public static final int RESULT_SUCCESS = 0; public static final int RESULT_FAILURE = 1; public static final int RESULT_TAGLOST = 2; public static final int RESULT_EXCEEDED_LENGTH = 3; public TransceiveResult(final boolean success, final boolean tagIsLost, final byte[] data) { mSuccess = success; mTagLost = tagIsLost; mResponseData = data; } final int mResult; final byte[] mResponseData; public boolean isSuccessful() { return mSuccess; } public boolean isTagLost() { return mTagLost; public TransceiveResult(final int result, final byte[] data) { mResult = result; mResponseData = data; } public byte[] getResponseData() { public byte[] getResponseOrThrow() throws IOException { switch (mResult) { case RESULT_SUCCESS: return mResponseData; case RESULT_TAGLOST: throw new TagLostException("Tag was lost."); case RESULT_EXCEEDED_LENGTH: throw new IOException("Transceive length exceeds supported maximum"); default: throw new IOException("Transceive failed"); } } @Override Loading @@ -55,9 +60,8 @@ public final class TransceiveResult implements Parcelable { @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(mSuccess ? 1 : 0); dest.writeInt(mTagLost ? 1 : 0); if (mSuccess) { dest.writeInt(mResult); if (mResult == RESULT_SUCCESS) { dest.writeInt(mResponseData.length); dest.writeByteArray(mResponseData); } Loading @@ -67,18 +71,17 @@ public final class TransceiveResult implements Parcelable { new Parcelable.Creator<TransceiveResult>() { @Override public TransceiveResult createFromParcel(Parcel in) { boolean success = (in.readInt() == 1) ? true : false; boolean tagLost = (in.readInt() == 1) ? true : false; int result = in.readInt(); byte[] responseData; if (success) { if (result == RESULT_SUCCESS) { int responseLength = in.readInt(); responseData = new byte[responseLength]; in.readByteArray(responseData); } else { responseData = null; } return new TransceiveResult(success, tagLost, responseData); return new TransceiveResult(result, responseData); } @Override Loading
core/java/android/nfc/tech/BasicTagTechnology.java +10 −10 Original line number Diff line number Diff line Loading @@ -129,6 +129,15 @@ import java.io.IOException; } } /** Internal getMaxTransceiveLength() */ int getMaxTransceiveLengthInternal() { try { return mTag.getTagService().getMaxTransceiveLength(mSelectedTechnology); } catch (RemoteException e) { Log.e(TAG, "NFC service dead", e); return 0; } } /** Internal transceive */ /*package*/ byte[] transceive(byte[] data, boolean raw) throws IOException { checkConnected(); Loading @@ -139,16 +148,7 @@ import java.io.IOException; if (result == null) { throw new IOException("transceive failed"); } else { if (result.isSuccessful()) { return result.getResponseData(); } else { if (result.isTagLost()) { throw new TagLostException("Tag was lost."); } else { throw new IOException("transceive failed"); } } return result.getResponseOrThrow(); } } catch (RemoteException e) { Log.e(TAG, "NFC service dead", e); Loading
core/java/android/nfc/tech/IsoDep.java +11 −0 Original line number Diff line number Diff line Loading @@ -156,6 +156,9 @@ public final class IsoDep extends BasicTagTechnology { * will be automatically fragmented and defragmented by {@link #transceive} if * it exceeds FSD/FSC limits. * * <p>Use {@link #getMaxTransceiveLength} to retrieve the maximum number of bytes * that can be sent with {@link #transceive}. * * <p>This is an I/O operation and will block until complete. It must * not be called from the main application thread. A blocked call will be canceled with * {@link IOException} if {@link #close} is called from another thread. Loading @@ -170,4 +173,12 @@ public final class IsoDep extends BasicTagTechnology { public byte[] transceive(byte[] data) throws IOException { return transceive(data, true); } /** * Return the maximum number of bytes that can be sent with {@link #transceive}. * @return the maximum number of bytes that can be sent with {@link #transceive}. */ public int getMaxTransceiveLength() { return getMaxTransceiveLengthInternal(); } }