2017-02-23 125 views
-1

我在Android應用程序,讀取與NFC RFID標籤,但我發現,錯誤代碼爲IO異常-5用下面的代碼工作:Android的NFC連接錯誤

Tag tag = params[0]; 

NfcV nfcvTag = NfcV.get(tag); 
try { 
    nfcvTag.connect(); 
    byte[] comReadTemp = new byte[]{ 
     (byte) 0x20, // Flags 
     (byte) 0xAD, // Command: Get Temperature 
     (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, // placeholder for tag UID 
    }; 
    byte[] userdata = nfcvTag.transceive(comReadTemp); 

    //Log.d("socialdiabetes", "systeminfo: "+systeminfo.toString()+" - "+systeminfo.length); 
    //Log.d("socialdiabetes", "systeminfo HEX: "+bytesToHex(systeminfo)); 

    userdata = Arrays.copyOfRange(userdata, 2, userdata.length - 1); 
    int tempCode = ((0x003 & userdata[2]) << 8) | 
        ((0x0FF & userdata[1]) << 0); 
    double tempValue = 0.169 * tempCode - 92.7 - 0.169 * 32; 
} catch (IOException e) { 
    e.printStackTrace(); 
    MainActivity.this.runOnUiThread(new Runnable() { 
     public void run() { 
      Toast.makeText(getApplicationContext(), "Error opening NFC connection!", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    return null; 
} 

有人可以幫助我?

回答

0

由於每從NfcEe.open()google documentation:

返回值 - 這些是1:1的映射

在NFC的額外拋出EE_EXCEPTION_異常。

static final int EE_ERROR_EXT_FIELD = -5;

瀏覽Android 4.4.2源代碼(我沒有檢查舊版本)顯示,如果makeReadOnly()因任何原因失敗,您將總是得到一個IOException。所以你在Android中發現了一個錯誤,或者至少與API文檔不匹配。

ErrorCodes.ERROR_INVALID_PARAM似乎根本沒有被返回,因此makeReadOnly()方法通常不會返回false。

希望這可以讓你明白。