Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0ccac6e3 authored by Jeff Hamilton's avatar Jeff Hamilton Committed by Android (Google) Code Review
Browse files

Merge "Merge commit '446aea40' into manualmerge" into honeycomb-plus-aosp

parents 6e274c5e b0cae141
Loading
Loading
Loading
Loading
+129 −137
Original line number Diff line number Diff line
@@ -118406,21 +118406,6 @@
 visibility="public"
>
</method>
<method name="getTechnology"
 return="android.nfc.technology.TagTechnology"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="tag" type="android.nfc.Tag">
</parameter>
<parameter name="tech" type="int">
</parameter>
</method>
<method name="isEnabled"
 return="boolean"
 abstract="false"
@@ -118633,7 +118618,7 @@
</constructor>
</class>
</package>
<package name="android.nfc.technology"
<package name="android.nfc.tech"
>
<class name="BasicTagTechnology"
 extends="java.lang.Object"
@@ -118643,7 +118628,7 @@
 deprecated="not deprecated"
 visibility=""
>
<implements name="android.nfc.technology.TagTechnology">
<implements name="android.nfc.tech.TagTechnology">
</implements>
<method name="close"
 return="void"
@@ -118717,13 +118702,26 @@
</method>
</class>
<class name="IsoDep"
 extends="android.nfc.technology.BasicTagTechnology"
 extends="android.nfc.tech.BasicTagTechnology"
 abstract="false"
 static="false"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
<method name="get"
 return="android.nfc.tech.IsoDep"
 abstract="false"
 native="false"
 synchronized="false"
 static="true"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="tag" type="android.nfc.Tag">
</parameter>
</method>
<method name="getHiLayerResponse"
 return="byte[]"
 abstract="false"
@@ -118776,7 +118774,7 @@
</method>
</class>
<class name="MifareClassic"
 extends="android.nfc.technology.BasicTagTechnology"
 extends="android.nfc.tech.BasicTagTechnology"
 abstract="false"
 static="false"
 final="true"
@@ -118836,6 +118834,19 @@
<exception name="IOException" type="java.io.IOException">
</exception>
</method>
<method name="get"
 return="android.nfc.tech.MifareClassic"
 abstract="false"
 native="false"
 synchronized="false"
 static="true"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="tag" type="android.nfc.Tag">
</parameter>
</method>
<method name="getBlockCount"
 return="int"
 abstract="false"
@@ -119179,13 +119190,26 @@
</field>
</class>
<class name="MifareUltralight"
 extends="android.nfc.technology.BasicTagTechnology"
 extends="android.nfc.tech.BasicTagTechnology"
 abstract="false"
 static="false"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
<method name="get"
 return="android.nfc.tech.MifareUltralight"
 abstract="false"
 native="false"
 synchronized="false"
 static="true"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="tag" type="android.nfc.Tag">
</parameter>
</method>
<method name="getType"
 return="int"
 abstract="false"
@@ -119279,7 +119303,7 @@
</field>
</class>
<class name="Ndef"
 extends="android.nfc.technology.BasicTagTechnology"
 extends="android.nfc.tech.BasicTagTechnology"
 abstract="false"
 static="false"
 final="true"
@@ -119297,6 +119321,19 @@
 visibility="public"
>
</method>
<method name="get"
 return="android.nfc.tech.Ndef"
 abstract="false"
 native="false"
 synchronized="false"
 static="true"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="tag" type="android.nfc.Tag">
</parameter>
</method>
<method name="getCachedNdefMessage"
 return="android.nfc.NdefMessage"
 abstract="false"
@@ -119390,7 +119427,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="105"
 value="101"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -119454,7 +119491,7 @@
</field>
</class>
<class name="NdefFormatable"
 extends="android.nfc.technology.BasicTagTechnology"
 extends="android.nfc.tech.BasicTagTechnology"
 abstract="false"
 static="false"
 final="true"
@@ -119478,15 +119515,41 @@
<exception name="IOException" type="java.io.IOException">
</exception>
</method>
<method name="get"
 return="android.nfc.tech.NdefFormatable"
 abstract="false"
 native="false"
 synchronized="false"
 static="true"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="tag" type="android.nfc.Tag">
</parameter>
</method>
</class>
<class name="NfcA"
 extends="android.nfc.technology.BasicTagTechnology"
 extends="android.nfc.tech.BasicTagTechnology"
 abstract="false"
 static="false"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
<method name="get"
 return="android.nfc.tech.NfcA"
 abstract="false"
 native="false"
 synchronized="false"
 static="true"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="tag" type="android.nfc.Tag">
</parameter>
</method>
<method name="getAtqa"
 return="byte[]"
 abstract="false"
@@ -119526,13 +119589,26 @@
</method>
</class>
<class name="NfcB"
 extends="android.nfc.technology.BasicTagTechnology"
 extends="android.nfc.tech.BasicTagTechnology"
 abstract="false"
 static="false"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
<method name="get"
 return="android.nfc.tech.NfcB"
 abstract="false"
 native="false"
 synchronized="false"
 static="true"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="tag" type="android.nfc.Tag">
</parameter>
</method>
<method name="getApplicationData"
 return="byte[]"
 abstract="false"
@@ -119572,13 +119648,26 @@
</method>
</class>
<class name="NfcF"
 extends="android.nfc.technology.BasicTagTechnology"
 extends="android.nfc.tech.BasicTagTechnology"
 abstract="false"
 static="false"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
<method name="get"
 return="android.nfc.tech.NfcF"
 abstract="false"
 native="false"
 synchronized="false"
 static="true"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="tag" type="android.nfc.Tag">
</parameter>
</method>
<method name="getManufacturer"
 return="byte[]"
 abstract="false"
@@ -119618,13 +119707,26 @@
</method>
</class>
<class name="NfcV"
 extends="android.nfc.technology.BasicTagTechnology"
 extends="android.nfc.tech.BasicTagTechnology"
 abstract="false"
 static="false"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
<method name="get"
 return="android.nfc.tech.NfcV"
 abstract="false"
 native="false"
 synchronized="false"
 static="true"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="tag" type="android.nfc.Tag">
</parameter>
</method>
<method name="getDsfId"
 return="byte"
 abstract="false"
@@ -119705,17 +119807,6 @@
 visibility="public"
>
</method>
<method name="getTechnologyId"
 return="int"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="reconnect"
 return="void"
 abstract="true"
@@ -119729,105 +119820,6 @@
<exception name="IOException" type="java.io.IOException">
</exception>
</method>
<field name="ISO_DEP"
 type="int"
 transient="false"
 volatile="false"
 value="3"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="MIFARE_CLASSIC"
 type="int"
 transient="false"
 volatile="false"
 value="8"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="MIFARE_ULTRALIGHT"
 type="int"
 transient="false"
 volatile="false"
 value="9"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="NDEF"
 type="int"
 transient="false"
 volatile="false"
 value="6"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="NDEF_FORMATABLE"
 type="int"
 transient="false"
 volatile="false"
 value="7"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="NFC_A"
 type="int"
 transient="false"
 volatile="false"
 value="1"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="NFC_B"
 type="int"
 transient="false"
 volatile="false"
 value="2"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="NFC_F"
 type="int"
 transient="false"
 volatile="false"
 value="4"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="NFC_V"
 type="int"
 transient="false"
 volatile="false"
 value="5"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
</interface>
</package>
<package name="android.opengl"
+1 −11
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ import android.content.Context;
import android.content.IntentFilter;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.nfc.technology.TagTechnology;
import android.nfc.tech.TagTechnology;
import android.os.IBinder;
import android.os.RemoteException;
import android.os.ServiceManager;
@@ -531,16 +531,6 @@ public final class NfcAdapter {
        }
    }

    /**
     * Retrieve a TagTechnology object used to interact with a Tag that is
     * in field.
     * <p>
     * @return TagTechnology object, or null if not present
     */
    public TagTechnology getTechnology(Tag tag, int tech) {
        return tag.getTechnology(NfcAdapter.this, tech);
    }

    /**
     * Set the NDEF Message that this NFC adapter should appear as to Tag
     * readers.
+1 −1
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@

package android.nfc;

import android.nfc.technology.TagTechnology;
import android.nfc.tech.TagTechnology;
import android.os.RemoteException;
import android.util.Log;

+28 −57
Original line number Diff line number Diff line
@@ -16,20 +16,10 @@

package android.nfc;

import android.nfc.technology.IsoDep;
import android.nfc.technology.MifareClassic;
import android.nfc.technology.MifareUltralight;
import android.nfc.technology.NfcV;
import android.nfc.technology.Ndef;
import android.nfc.technology.NdefFormatable;
import android.nfc.technology.NfcA;
import android.nfc.technology.NfcB;
import android.nfc.technology.NfcF;
import android.nfc.technology.TagTechnology;
import android.nfc.tech.TagTechnology;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.RemoteException;

import java.util.Arrays;

@@ -44,8 +34,8 @@ import java.util.Arrays;
 * {@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 TagTechnology}
 * (with {@link NfcAdapter#getTechnology}).
 * directly queried for its UID and Type, or used to create a {@link TagTechnology} using the
 * static <code>get()</code> methods on the varios tech classes.
 * <p>
 * A {@link Tag} can  be used to create a {@link TagTechnology} only while the tag is in
 * range. If it is removed and then returned to range, then the most recent
@@ -61,6 +51,7 @@ public class Tag implements Parcelable {
    /*package*/ final int[] mTechList;
    /*package*/ final Bundle[] mTechExtras;
    /*package*/ final int mServiceHandle;  // for use by NFC service, 0 indicates a mock
    /*package*/ final INfcTag mTagService;

    /*package*/ int mConnectedTechnology;

@@ -68,7 +59,8 @@ public class Tag implements Parcelable {
     * Hidden constructor to be used by NFC service and internal classes.
     * @hide
     */
    public Tag(byte[] id, int[] techList, Bundle[] techListExtras, int serviceHandle) {
    public Tag(byte[] id, int[] techList, Bundle[] techListExtras, int serviceHandle,
            INfcTag tagService) {
        if (techList == null) {
            throw new IllegalArgumentException("rawTargets cannot be null");
        }
@@ -77,15 +69,15 @@ public class Tag implements Parcelable {
        // Ensure mTechExtras is as long as mTechList
        mTechExtras = Arrays.copyOf(techListExtras, techList.length);
        mServiceHandle = serviceHandle;
        mTagService = tagService;

        mConnectedTechnology = -1;
    }

    /**
     * Construct a mock Tag.
     * <p>This is an application constructed tag, so NfcAdapter methods on this
     * Tag such as {@link NfcAdapter#getTechnology} may fail with
     * {@link IllegalArgumentException} since it does not represent a physical Tag.
     * <p>This is an application constructed tag, so NfcAdapter methods on this Tag may fail
     * with {@link IllegalArgumentException} since it does not represent a physical Tag.
     * <p>This constructor might be useful for mock testing.
     * @param id The tag identifier, can be null
     * @param techList must not be null
@@ -93,7 +85,7 @@ public class Tag implements Parcelable {
     */
    public static Tag createMockTag(byte[] id, int[] techList, Bundle[] techListExtras) {
        // set serviceHandle to 0 to indicate mock tag
        return new Tag(id, techList, techListExtras, 0);
        return new Tag(id, techList, techListExtras, 0, null);
    }

    /**
@@ -127,7 +119,16 @@ public class Tag implements Parcelable {
        return Arrays.copyOf(mTechList, mTechList.length);
    }

    /*package*/ TagTechnology getTechnology(NfcAdapter adapter, int tech) {
    /** @hide */
    public boolean hasTech(int techType) {
        for (int tech : mTechList) {
            if (tech == techType) return true;
        }
        return false;
    }
    
    /** @hide */
    public Bundle getTechExtras(int tech) {
        int pos = -1;
        for (int idx = 0; idx < mTechList.length; idx++) {
          if (mTechList[idx] == tech) {
@@ -139,44 +140,12 @@ public class Tag implements Parcelable {
            return null;
        }

        Bundle extras = mTechExtras[pos];
        try {
            switch (tech) {
                case TagTechnology.NFC_A: {
                    return new NfcA(adapter, this, extras);
                }
                case TagTechnology.NFC_B: {
                    return new NfcB(adapter, this, extras);
                }
                case TagTechnology.ISO_DEP: {
                    return new IsoDep(adapter, this, extras);
                }
                case TagTechnology.NFC_V: {
                    return new NfcV(adapter, this, extras);
                }
                case TagTechnology.NDEF: {
                    return new Ndef(adapter, this, tech, extras);
                }
                case TagTechnology.NDEF_FORMATABLE: {
                    return new NdefFormatable(adapter, this, tech, extras);
                }
                case TagTechnology.NFC_F: {
                    return new NfcF(adapter, this, extras);
                }
                case TagTechnology.MIFARE_CLASSIC: {
                    return new MifareClassic(adapter, this, extras);
                }
                case TagTechnology.MIFARE_ULTRALIGHT: {
                    return new MifareUltralight(adapter, this, extras);
        return mTechExtras[pos];
    }

                default: {
                    throw new UnsupportedOperationException("Tech " + tech + " not supported");
                }
            }
        } catch (RemoteException e) {
            return null;
        }
    /** @hide */
    public INfcTag getTagService() {
        return mTagService;
    }

    @Override
@@ -223,6 +192,7 @@ public class Tag implements Parcelable {
        dest.writeIntArray(mTechList);
        dest.writeTypedArray(mTechExtras, 0);
        dest.writeInt(mServiceHandle);
        dest.writeStrongBinder(mTagService.asBinder());
    }

    public static final Parcelable.Creator<Tag> CREATOR =
@@ -235,8 +205,9 @@ public class Tag implements Parcelable {
            in.readIntArray(techList);
            Bundle[] techExtras = in.createTypedArray(Bundle.CREATOR);
            int serviceHandle = in.readInt();
            INfcTag tagService = INfcTag.Stub.asInterface(in.readStrongBinder());

            return new Tag(id, techList, techExtras, serviceHandle);
            return new Tag(id, techList, techExtras, serviceHandle, tagService);
        }

        @Override
+13 −22
Original line number Diff line number Diff line
@@ -14,20 +14,17 @@
 * limitations under the License.
 */

package android.nfc.technology;
package android.nfc.tech;

import java.io.IOException;

import android.nfc.INfcAdapter;
import android.nfc.INfcTag;
import android.nfc.NfcAdapter;
import android.nfc.TransceiveResult;
import android.nfc.Tag;
import android.nfc.ErrorCodes;
import android.nfc.Tag;
import android.nfc.TagLostException;
import android.nfc.TransceiveResult;
import android.os.RemoteException;
import android.util.Log;

import java.io.IOException;

/**
 * A base class for tag technologies that are built on top of transceive().
 */
@@ -37,11 +34,8 @@ import android.util.Log;
    /*package*/ final Tag mTag;
    /*package*/ boolean mIsConnected;
    /*package*/ int mSelectedTechnology;
    private final NfcAdapter mAdapter;
    /*package*/ final INfcAdapter mService;
    /*package*/ final INfcTag mTagService;

    BasicTagTechnology(NfcAdapter adapter, Tag tag, int tech) throws RemoteException {
    BasicTagTechnology(Tag tag, int tech) throws RemoteException {
        int[] techList = tag.getTechnologyList();
        int i;

@@ -56,15 +50,12 @@ import android.util.Log;
            throw new IllegalArgumentException("Technology " + tech + " not present on tag " + tag);
        }

        mAdapter = adapter;
        mService = mAdapter.getService();
        mTagService = mAdapter.getTagService();
        mTag = tag;
        mSelectedTechnology = tech;
    }

    BasicTagTechnology(NfcAdapter adapter, Tag tag) throws RemoteException {
        this(adapter, tag, tag.getTechnologyList()[0]);
    BasicTagTechnology(Tag tag) throws RemoteException {
        this(tag, tag.getTechnologyList()[0]);
    }

    @Override
@@ -100,7 +91,7 @@ import android.util.Log;
        }

        try {
            return mTagService.isPresent(mTag.getServiceHandle());
            return mTag.getTagService().isPresent(mTag.getServiceHandle());
        } catch (RemoteException e) {
            Log.e(TAG, "NFC service dead", e);
            return false;
@@ -110,7 +101,7 @@ import android.util.Log;
    @Override
    public void connect() throws IOException {
        try {
            int errorCode = mTagService.connect(mTag.getServiceHandle(), getTechnologyId());
            int errorCode = mTag.getTagService().connect(mTag.getServiceHandle(), getTechnologyId());

            if (errorCode == ErrorCodes.SUCCESS) {
                // Store this in the tag object
@@ -132,7 +123,7 @@ import android.util.Log;
        }

        try {
            int errorCode = mTagService.reconnect(mTag.getServiceHandle());
            int errorCode = mTag.getTagService().reconnect(mTag.getServiceHandle());

            if (errorCode != ErrorCodes.SUCCESS) {
                mIsConnected = false;
@@ -153,7 +144,7 @@ import android.util.Log;
            /* Note that we don't want to physically disconnect the tag,
             * but just reconnect to it to reset its state
             */
            mTagService.reconnect(mTag.getServiceHandle());
            mTag.getTagService().reconnect(mTag.getServiceHandle());
        } catch (RemoteException e) {
            Log.e(TAG, "NFC service dead", e);
        } finally {
@@ -167,7 +158,7 @@ import android.util.Log;
        checkConnected();

        try {
            TransceiveResult result = mTagService.transceive(mTag.getServiceHandle(), data, raw);
            TransceiveResult result = mTag.getTagService().transceive(mTag.getServiceHandle(), data, raw);
            if (result == null) {
                throw new IOException("transceive failed");
            } else {
Loading