am 0d27f999: Expose reconnect(), to allow applications to reset tag state.

* commit '0d27f999f4b1ad51da11946800b40d2978fc6326':
  Expose reconnect(), to allow applications to reset tag state.
This commit is contained in:
Martijn Coenen
2010-12-16 16:04:41 -08:00
committed by Android Git Automerger
2 changed files with 39 additions and 0 deletions

View File

@@ -164,6 +164,40 @@ import android.util.Log;
}
} catch (RemoteException e) {
attemptDeadServiceRecovery(e);
throw new IOException("NFC service died");
}
}
/**
* Re-connect to the {@link Tag} associated with this connection.
* <p>
* Reconnecting to a tag can be used to reset the state of the tag itself.
* This method blocks until the connection is re-established.
* <p>
* {@link #close} can be called from another thread to cancel this connection
* attempt.
* <p>Requires {@link android.Manifest.permission#NFC} permission.
* @throws IOException if the target is lost, or connect canceled
*/
@Override
public void reconnect() throws IOException {
if (!mIsConnected) {
throw new IllegalStateException("Technology not connected yet");
} else {
try {
int errorCode = mTagService.reconnect(mTag.getServiceHandle());
if (errorCode != ErrorCodes.SUCCESS) {
mIsConnected = false;
mTag.setTechnologyDisconnected();
throw new IOException();
}
} catch (RemoteException e) {
mIsConnected = false;
mTag.setTechnologyDisconnected();
attemptDeadServiceRecovery(e);
throw new IOException("NFC service died");
}
}
}

View File

@@ -81,6 +81,11 @@ public interface TagTechnology {
*/
public void connect() throws IOException;
/**
* @throws IOException
*/
public void reconnect() throws IOException;
/**
* Non-blocking. Immediately causes all blocking calls
* to throw IOException.