Merge "Fix Android Beam stop working during repetition"
diff --git a/src/com/android/nfc/P2pEventManager.java b/src/com/android/nfc/P2pEventManager.java
index 1f84947..faec610 100644
--- a/src/com/android/nfc/P2pEventManager.java
+++ b/src/com/android/nfc/P2pEventManager.java
@@ -207,4 +207,11 @@
         mInDebounce = false;
     }
 
+    @Override
+    public boolean isP2pIdle() {
+        if (mSendUi != null && !mSendUi.isSendUiInIdleState()) {
+            return false;
+        }
+        return true;
+    }
 }
diff --git a/src/com/android/nfc/P2pLinkManager.java b/src/com/android/nfc/P2pLinkManager.java
index 3dd601b..d34ad20 100755
--- a/src/com/android/nfc/P2pLinkManager.java
+++ b/src/com/android/nfc/P2pLinkManager.java
@@ -132,6 +132,11 @@
      */
     public void onP2pOutOfRange();
 
+    /**
+     * Indicates the P2P Beam UI is in idle mode.
+     */
+    public boolean isP2pIdle();
+
     public interface Callback {
         public void onP2pSendConfirmed();
         public void onP2pCanceled();
@@ -442,6 +447,10 @@
             mPeerLlcpVersion = peerLlcpVersion;
             switch (mLinkState) {
                 case LINK_STATE_DOWN:
+                    if (!mEventListener.isP2pIdle() && mSendState != SEND_STATE_PENDING) {
+                        break;
+                    }
+
                     if (DBG) Log.d(TAG, "onP2pInRange()");
                     // Start taking a screenshot
                     mEventListener.onP2pInRange();
diff --git a/src/com/android/nfc/beam/SendUi.java b/src/com/android/nfc/beam/SendUi.java
index 7e3fb38..ab35467 100644
--- a/src/com/android/nfc/beam/SendUi.java
+++ b/src/com/android/nfc/beam/SendUi.java
@@ -877,6 +877,10 @@
     public void onActionModeFinished(ActionMode mode) {
     }
 
+    public boolean isSendUiInIdleState() {
+        return mState == STATE_IDLE;
+    }
+
     private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {