summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndres Morales <anmorales@google.com>2014-11-19 18:09:05 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-11-19 18:09:06 +0000
commit3349df3a5709fcd6eda40f29b8dd52850a265f6f (patch)
treee0e891ae499e15c7a8af513784b3fcfe2b81e9f2
parentae4ceda68f132844239fa6542a1f0cfb11e0b4f6 (diff)
parentaaca83594d177442e993a8ba68349a5f7cb31200 (diff)
downloadandroid_packages_apps_Nfc-3349df3a5709fcd6eda40f29b8dd52850a265f6f.tar.gz
android_packages_apps_Nfc-3349df3a5709fcd6eda40f29b8dd52850a265f6f.tar.bz2
android_packages_apps_Nfc-3349df3a5709fcd6eda40f29b8dd52850a265f6f.zip
Merge "Add toast to tell the user Beam is busy" into lmp-mr1-dev
-rwxr-xr-xres/values/strings.xml1
-rw-r--r--src/com/android/nfc/P2pEventManager.java9
-rwxr-xr-xsrc/com/android/nfc/P2pLinkManager.java39
-rw-r--r--src/com/android/nfc/handover/HandoverServer.java5
4 files changed, 49 insertions, 5 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1ca995d0..78102a6b 100755
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -28,6 +28,7 @@
<string name="beam_touch_to_view">Touch to view</string>
<string name="beam_handover_not_supported">The receiver\'s device doesn\'t support large file transfer via beam.</string>
<string name="beam_try_again">Bring devices together again</string>
+ <string name="beam_busy">Beam is currently busy. Try again when the previous transfer completes.</string>
<!-- String referring to the device being connected when there is no name for the device -->
<string name="device">device</string>
diff --git a/src/com/android/nfc/P2pEventManager.java b/src/com/android/nfc/P2pEventManager.java
index 468aeaff..c68fae80 100644
--- a/src/com/android/nfc/P2pEventManager.java
+++ b/src/com/android/nfc/P2pEventManager.java
@@ -131,6 +131,15 @@ public class P2pEventManager implements P2pEventListener, SendUi.Callback {
}
@Override
+ public void onP2pHandoverBusy() {
+ mNfcService.playSound(NfcService.SOUND_ERROR);
+ mVibrator.vibrate(VIBRATION_PATTERN, -1);
+ mSendUi.finishAndToast(SendUi.FINISH_SCALE_UP, mContext.getString(R.string.beam_busy));
+ mSending = false;
+ mNdefSent = false;
+ }
+
+ @Override
public void onP2pReceiveComplete(boolean playSound) {
mVibrator.vibrate(VIBRATION_PATTERN, -1);
if (playSound) mNfcService.playSound(NfcService.SOUND_END);
diff --git a/src/com/android/nfc/P2pLinkManager.java b/src/com/android/nfc/P2pLinkManager.java
index 0effe4e3..aa4ec25e 100755
--- a/src/com/android/nfc/P2pLinkManager.java
+++ b/src/com/android/nfc/P2pLinkManager.java
@@ -115,6 +115,11 @@ interface P2pEventListener {
public void onP2pHandoverNotSupported();
/**
+ * Called to indicate the device is busy with another handover transfer
+ */
+ public void onP2pHandoverBusy();
+
+ /**
* Called to indicate a receive was successful.
*/
public void onP2pReceiveComplete(boolean playSound);
@@ -179,6 +184,7 @@ class P2pLinkManager implements Handler.Callback, P2pEventListener.Callback {
static final int MSG_HANDOVER_NOT_SUPPORTED = 7;
static final int MSG_SHOW_CONFIRMATION_UI = 8;
static final int MSG_WAIT_FOR_LINK_TIMEOUT = 9;
+ static final int MSG_HANDOVER_BUSY = 10;
// values for mLinkState
static final int LINK_STATE_DOWN = 1;
@@ -202,6 +208,7 @@ class P2pLinkManager implements Handler.Callback, P2pEventListener.Callback {
static final int HANDOVER_SUCCESS = 0;
static final int HANDOVER_FAILURE = 1;
static final int HANDOVER_UNSUPPORTED = 2;
+ static final int HANDOVER_BUSY = 3;
final NdefPushServer mNdefPushServer;
final SnepServer mDefaultSnepServer;
@@ -610,6 +617,10 @@ class P2pLinkManager implements Handler.Callback, P2pEventListener.Callback {
mHandler.sendEmptyMessage(MSG_HANDOVER_NOT_SUPPORTED);
}
+ void onHandoverBusy() {
+ mHandler.sendEmptyMessage(MSG_HANDOVER_BUSY);
+ }
+
void onSendComplete(NdefMessage msg, long elapsedRealtime) {
// Make callbacks on UI thread
mHandler.sendEmptyMessage(MSG_SEND_COMPLETE);
@@ -760,7 +771,7 @@ class P2pLinkManager implements Handler.Callback, P2pEventListener.Callback {
BeamManager beamManager = BeamManager.getInstance();
if (beamManager.isBeamInProgress()) {
- return HANDOVER_FAILURE;
+ return HANDOVER_BUSY;
}
NdefMessage request = mHandoverDataParser.createHandoverRequestMessage();
@@ -782,12 +793,12 @@ class P2pLinkManager implements Handler.Callback, P2pEventListener.Callback {
return HANDOVER_UNSUPPORTED;
}
- if (beamManager.startBeamSend(mContext,
+ if (!beamManager.startBeamSend(mContext,
mHandoverDataParser.getOutgoingHandoverData(response), uris, userHandle)) {
- return HANDOVER_SUCCESS;
+ return HANDOVER_BUSY;
}
- return HANDOVER_FAILURE;
+ return HANDOVER_SUCCESS;
}
int doSnepProtocol(NdefMessage msg) throws IOException {
@@ -835,6 +846,10 @@ class P2pLinkManager implements Handler.Callback, P2pEventListener.Callback {
result = false;
onHandoverUnsupported();
break;
+ case HANDOVER_BUSY:
+ result = false;
+ onHandoverBusy();
+ break;
}
} catch (IOException e) {
result = false;
@@ -880,6 +895,11 @@ class P2pLinkManager implements Handler.Callback, P2pEventListener.Callback {
public void onHandoverRequestReceived() {
onReceiveHandover();
}
+
+ @Override
+ public void onHandoverBusy() {
+ onHandoverBusy();
+ }
};
final NdefPushServer.Callback mNppCallback = new NdefPushServer.Callback() {
@@ -1018,6 +1038,17 @@ class P2pLinkManager implements Handler.Callback, P2pEventListener.Callback {
}
}
break;
+ case MSG_HANDOVER_BUSY:
+ synchronized (P2pLinkManager.this) {
+ mSendTask = null;
+
+ if (mLinkState == LINK_STATE_DOWN || mSendState != SEND_STATE_SENDING) {
+ break;
+ }
+ mSendState = SEND_STATE_NOTHING_TO_SEND;
+ if (DBG) Log.d(TAG, "onP2pHandoverBusy()");
+ mEventListener.onP2pHandoverBusy();
+ }
}
return true;
}
diff --git a/src/com/android/nfc/handover/HandoverServer.java b/src/com/android/nfc/handover/HandoverServer.java
index 56036d82..23ac1d9d 100644
--- a/src/com/android/nfc/handover/HandoverServer.java
+++ b/src/com/android/nfc/handover/HandoverServer.java
@@ -52,6 +52,7 @@ public final class HandoverServer {
public interface Callback {
void onHandoverRequestReceived();
+ void onHandoverBusy();
}
public HandoverServer(Context context, int sap, HandoverDataParser manager, Callback callback) {
@@ -203,6 +204,7 @@ public final class HandoverServer {
BeamManager beamManager = BeamManager.getInstance();
if (beamManager.isBeamInProgress()) {
+ mCallback.onHandoverBusy();
break;
}
@@ -227,7 +229,8 @@ public final class HandoverServer {
// We're done
mCallback.onHandoverRequestReceived();
if (!beamManager.startBeamReceive(mContext, handoverData.handoverData)) {
- break;
+ mCallback.onHandoverBusy();
+ break;
}
// We can process another handover transfer
byteStream = new ByteArrayOutputStream();