diff options
author | Andres Morales <anmorales@google.com> | 2014-11-19 18:09:05 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-11-19 18:09:06 +0000 |
commit | 3349df3a5709fcd6eda40f29b8dd52850a265f6f (patch) | |
tree | e0e891ae499e15c7a8af513784b3fcfe2b81e9f2 | |
parent | ae4ceda68f132844239fa6542a1f0cfb11e0b4f6 (diff) | |
parent | aaca83594d177442e993a8ba68349a5f7cb31200 (diff) | |
download | android_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-x | res/values/strings.xml | 1 | ||||
-rw-r--r-- | src/com/android/nfc/P2pEventManager.java | 9 | ||||
-rwxr-xr-x | src/com/android/nfc/P2pLinkManager.java | 39 | ||||
-rw-r--r-- | src/com/android/nfc/handover/HandoverServer.java | 5 |
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(); |