2017-02-23 44 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。

希望这可以让你明白。