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

Commit f47fcf70 authored by Martijn Coenen's avatar Martijn Coenen Committed by Android (Google) Code Review
Browse files

Merge "First cut at Bluetooth Beam"

parents 7c8fd157 1d7e9062
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package android.nfc;

import android.nfc.NdefMessage;
import android.net.Uri;

/**
 * @hide
@@ -24,5 +25,7 @@ import android.nfc.NdefMessage;
interface INdefPushCallback
{
    NdefMessage createMessage();
    Uri getUri();
    String getMimeType();
    void onNdefPushComplete();
}
+39 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.nfc;

import android.app.Activity;
import android.app.Application;
import android.net.Uri;
import android.os.Bundle;
import android.os.RemoteException;
import android.util.Log;
@@ -107,6 +108,8 @@ public final class NfcActivityManager extends INdefPushCallback.Stub
        NdefMessage ndefMessage = null;  // static NDEF message
        NfcAdapter.CreateNdefMessageCallback ndefMessageCallback = null;
        NfcAdapter.OnNdefPushCompleteCallback onNdefPushCompleteCallback = null;
        Uri uri = null;
        String mimeType = null;
        public NfcActivityState(Activity activity) {
            if (activity.getWindow().isDestroyed()) {
                throw new IllegalStateException("activity is already destroyed");
@@ -121,12 +124,14 @@ public final class NfcActivityManager extends INdefPushCallback.Stub
            ndefMessage = null;
            ndefMessageCallback = null;
            onNdefPushCompleteCallback = null;
            uri = null;
            mimeType = null;
        }
        @Override
        public String toString() {
            StringBuilder s = new StringBuilder("[").append(" ");
            s.append(ndefMessage).append(" ").append(ndefMessageCallback).append(" ");
            s.append(onNdefPushCompleteCallback).append("]");
            s.append(onNdefPushCompleteCallback).append(" ").append(uri).append("]");
            return s.toString();
        }
    }
@@ -175,6 +180,19 @@ public final class NfcActivityManager extends INdefPushCallback.Stub
        mDefaultEvent = new NfcEvent(mAdapter);
    }

    public void setNdefPushContentUri(Activity activity, String mimeType, Uri uri) {
        boolean isResumed;
        synchronized (NfcActivityManager.this) {
            NfcActivityState state = getActivityState(activity);
            state.uri = uri;
            state.mimeType = mimeType;
            isResumed = state.resumed;
        }
        if (isResumed) {
            requestNfcServiceCallback(true);
        }
    }

    public void setNdefPushMessage(Activity activity, NdefMessage message) {
        boolean isResumed;
        synchronized (NfcActivityManager.this) {
@@ -247,6 +265,26 @@ public final class NfcActivityManager extends INdefPushCallback.Stub
        }
    }

    /** Callback from NFC service, usually on binder thread */
    @Override
    public Uri getUri() {
        synchronized (NfcActivityManager.this) {
            NfcActivityState state = findResumedActivityState();
            if (state == null) return null;

            return state.uri;
        }
    }
    /** Callback from NFC service, usually on binder thread */
    @Override
    public String getMimeType() {
        synchronized (NfcActivityManager.this) {
            NfcActivityState state = findResumedActivityState();
            if (state == null) return null;

            return state.mimeType;
        }
    }
    /** Callback from NFC service, usually on binder thread */
    @Override
    public void onNdefPushComplete() {
+13 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import android.content.Context;
import android.content.IntentFilter;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.nfc.tech.MifareClassic;
import android.nfc.tech.Ndef;
import android.nfc.tech.NfcA;
@@ -555,6 +556,18 @@ public final class NfcAdapter {
        }
    }

    //TODO: Consider a callback alternative
    //TOOD: See if we get rid of mimeType
    //TODO: make sure NFC service has permission for URI
    //TODO: javadoc
    /** @hide */
    public void setBeamPushUri(String mimeType, Uri uri, Activity activity) {
        if (activity == null) {
            throw new NullPointerException("activity cannot be null");
        }
        mNfcActivityManager.setNdefPushContentUri(activity, mimeType, uri);
    }

    /**
     * Set a static {@link NdefMessage} to send using Android Beam (TM).
     *