我正在寫一個應用程序來讀取NFC標籤的二進制信息。這裏是NFC意向處理函數的代碼:Android NfcV獲取信息命令只返回一個字節
protected void onNewIntent(@NonNull Intent intent)
{
try
{
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
NfcV nfcV = NfcV.get(tag);
byte[] cmdInfo = new byte[]{(byte) 0x02, (byte) 0x2b}; // 'Get info' command
byte[] answer = nfcV.transceive(cmdInfo); // Read info from tag.
...
}
catch(IOException e)
{
...
}
}
如果我運行這個功能閱讀三星S3新的一切NFC標籤工作正常,答案可變充滿預期的數據:
00 04 4B A0 14 01 00 A0 07 E0 F3 07
Howewer如果我運行相同的功能閱讀華爲P8lite同一NFC標籤上的答案可變充滿只有一個字節:
03
在一個錯誤的情況下,ISO 1569 3-3標準說我應該收到像
01 03
也就是說,至少有兩個字節,其中第二個字節是錯誤代碼。所以我實際得到的答案在理論上是不可能的。
我在做什麼錯?它依賴於移動硬件嗎?我該如何解決它?
使用命令版本的命令解決了問題。非常感謝你! – Carlo
@CarloCe您是否也嘗試Data_rate_flag的不同設置?其他SO讀者可能會感興趣的是知道P8lite是否支持這兩種選項... –
如果我使用尋址命令,它將同時接受data_rate set和unset – Carlo