NFC超时应在哪里处理?
在Android应用程序中的NFC超时情况下,我需要返回服务器特定的返回代码。
我找到了设置超时的文档,但是我找不到有关该超时应如何处理的文档。
超时本身应该在哪里处理,是例外还是应该覆盖的方法?
private boolean ConnectToTag(@NonNull IsoDep isoDep) {
if (!isoDep.isConnected()) {
try {
isoDep.connect();
isoDep.setTimeout(5000);
} catch (Exception e) {
HyperLog.e(TAG, "Could not connect to tag", e);
onNFCException(SIM.TRANSMISSION_ERROR);
return false;
}
}
return true;
}
@Nullable
public byte[] Transceive(byte[] apdu) {
try {
if (!isoDep.isConnected()) {
boolean connected = ConnectToTag(isoDep);
}
if (isoDep.isConnected()) {
byte[] response;
HyperLog.i(TAG, "NFC => " + ByteUtils.BytesToHexString(apdu));
response = isoDep.transceive(apdu);
if (response == null) {
HyperLog.i(TAG, "NFC <= null");
} else {
HyperLog.i(TAG, "NFC <= " + ByteUtils.BytesToHexString(response));
return response;
}
} else {
HyperLog.e(TAG, "Transceive() - Tag disconnected.");
}
} catch (TagLostException e) {
HyperLog.e(TAG, "Transceive() - Error transceiving data", e);
onNFCException(SIM.TRANSMISSION_ERROR);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
响应= isodep.transceive(apdu);
也可以投掷
ioexception
,因此您的尝试/捕获也应处理此例外,因为这是可能返回超时的方式。
response = isoDep.transceive(apdu);
can also throw an
IOException
so your try/catch should also handle this Exception as this is how a timeout is likely to be returned.