Android NFC连接错误

时间:2017-02-23 11:08:36

标签: android

我正在开发一款Android应用程序,该应用程序使用NFC读取RFID标签,但我使用以下代码获取错误代码为-5的IO异常:

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;
}

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

根据google documentation:

  

从NfcEe.open()返回值 - 这些是1:1映射

     

在nfc-extras中抛出EE_EXCEPTION_异常。

     

static final int EE_ERROR_EXT_FIELD = -5;

浏览Android 4.4.2源代码(我没有查看旧版本)显示,如果makeReadOnly()因任何原因失败,您将始终获得IOException。所以你在Android中发现了一个错误,或者至少与API文档不匹配。

  

似乎根本没有返回ErrorCodes.ERROR_INVALID_PARAM,因此makeReadOnly()方法通常应该永远不会返回false。

希望这能让你清楚明白。