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) {