2012-10-04 45 views
1

我試圖找到一個可用於驗證NDEF消息的工具。正如在這裏發佈的許多帖子中所列出的那樣,在Android 4.1中,NDEF解析器已經變得比4.0.4或Android 2.3更嚴格,因此曾經工作的一些應用程序不再有效。但是,開發工具並沒有真正指定NDEF消息的錯誤,因此確定消息的哪一部分可能會被錯誤地格式化並不容易。驗證NDEF消息的工具?

是否有任何工具可以接收NDEF消息的字節流並確定該消息是否有效,如果沒有 - 消息有什麼問題?

+0

如果你有機會到4.0.4設備,你總是可以使用[這](https://play.google.com/基地store/apps/details?id = com.antares.nfc)將NDEF消息保存到文件系統,然後使用NdefMessage(byte [])4.1構造函數解析問題。 – ThomasRS

回答

2

Android 4.1和Android 4/3/2中的NFC/NDEF之間的主要區別在於,4.1中不能創建沒有記錄的消息。即下面的行會在運行時崩潰:

new NdefMessage(new NdefRecord[0]); 

當我將NFC應用移植到4.1時,這是我必須做的唯一更改。

+1

此外,創建具有空參數的ndef記錄在各種Android版本中處理方式不同。 – ThomasRS

2

通常,問題是跟蹤字節。由NFC標籤指示的NDEF消息長度比實際的NDEF消息本身長。 Android的早期版本在最後忽略了額外的字節。但是,Android 4.1中的新NDEF消息解析器將引發異常,導致NFC意圖中未報告NDEF消息。

檢測此類問題的工具確實有用。它需要對標籤進行低級讀取(使用標籤技術的transceive()方法),因爲Android的自動NDEF檢測在這種情況下不起作用。不幸的是,這部分Android不是用Java實現的,所以你不能僅僅把源代碼放在一個應用程序中。

+0

嗯,這將是[NFCTools for Java](https://github.com/grundid/nfctools)的一個有趣功能? – ThomasRS

+0

這個想法也超出了我的想法:) –

+0

在這裏添加了一些'規範化'解析代碼:[記錄](https://code.google.com/p/ndef-tools-for-android/source/browse/ndeftools/ SRC /組織/ ndeftools/Record.java) – ThomasRS

1

我在創建了以下Online NDEF Parser後,眼睛保齡球過多NDEF字節流。

它可以讓你粘貼一個字節流並解析它。如果它是一個有效的NDEF,它將解析它並顯示其記錄(也支持嵌套記錄),如果無效,它將突出顯示預期的錯誤字節,並將顯示一條錯誤消息並提供修復它的建議。

它是在NFC數據交換格式(NDEF)技術規範1.0