2015-05-14 46 views
2

我想從android手機發送一些apdu命令到nfc標籤並獲得答案。使用的技術類型是IsoDep。一切工作正常,但有時,當發送命令之間的時間太長時,標記切換到禁用狀態,然後每次重新連接失敗。我如何重新連接到IsoDep標籤?

我的代碼:

public byte[] transferCommand(byte[] command) throws Exception { 
     byte[] result = null; 
     if (iso == null) { 
      iso = IsoDep.get(tag); 
      iso.connect(); 
     } 
     if (!iso.isConnected()) { 
      try { 
       iso.close(); 
       iso.connect(); 
       result = iso.transceive(command); 
      } catch (Exception ex) { 
       iso.close(); 
      } 
     }    
     return result; 
    } 

可能有人幫助我嗎?非常感謝。

回答

2

connect和相關命令只是管理到標記的邏輯連接。即:他們授予您的線程和應用程序對標記對象的獨佔訪問權限。他們不對物理標籤連接做任何事情。 (至少據我所知,自從我上次閱讀NfcService代碼以來已經有一段時間了)。

因此,一旦標籤停止回答您的請求,連接和重新連接將無濟於事。在這種情況下,您所能做的只是實際移除標籤並再次將其呈現給讀者。

如果遇到超時問題,請嘗試通過在標記對象上調用setTimeout來提高超時值。

+0

謝謝!可能它是解決這個問題的唯一方法。 – Ksenia

+0

那麼,我認爲當Google爲Android設計NFC API時,他們沒有想到如何處理像你這樣的錯誤。他們的目標很可能是儘快把事情弄出門外。 –

相關問題