我正在嘗試在 Android 上寫(xiě)入和讀回許多 NdefRecords,但在檢索記錄 ID 時(shí)遇到問(wèn)題。我相信這是因?yàn)樗鼈冏畛鯖](méi)有被寫(xiě)入標(biāo)簽。我正在創(chuàng)建我的記錄: private NdefRecord createRecord(String text, byte ID) throws UnsupportedEncodingException { String lang = "en"; byte[] textBytes = text.getBytes(); byte[] langBytes = lang.getBytes("US-ASCII"); int langLength = langBytes.length; int textLength = textBytes.length; byte[] id = new byte[1]; id[0] = ID; int idLength = id.length; byte[] payload = new byte[1 + langLength + textLength + idLength]; payload[0] = (byte) langLength; //set use id flag payload[0] |= (1 << 3); // copy langbytes and textbytes into payload System.arraycopy(langBytes, 0, payload, 1, langLength); System.arraycopy(textBytes, 0, payload, 1 + langLength, textLength);// System.arraycopy(id, 0, payload, 1 + langLength + textLength, idLength); NdefRecord recordNFC = new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, id, payload); return recordNFC; }public void addRecord(String record_contents, RECORD_IDS record_id) throws UnsupportedEncodingException { this.records.add(createRecord(record_contents, (byte) record_id.getValue()));}我以為我在做某事// System.arraycopy(id, 0, payload, 1 + langLength + textLength, idLength);但它對(duì)我沒(méi)有用。此方法將 NdefRecords 存儲(chǔ)在類(lèi)對(duì)象中,然后使用public void writeStoredRecords(Tag tag) throws IOException, FormatException { NdefRecord[] final_records = (NdefRecord[]) this.records.toArray(new NdefRecord[0]); NdefMessage message = new NdefMessage(final_records); try { Ndef ndef = Ndef.get(tag); if (ndef != null) { ndef.connect(); if(!ndef.isWritable()) return; ndef.writeNdefMessage(message); ndef.close(); } }catch(Exception e){}}記錄對(duì)象在調(diào)用后填充了它們的 ID,new NdefRecord但是當(dāng)使用應(yīng)用程序NXP TagInfo讀取標(biāo)簽時(shí),NDEF 記錄 ID 顯示為“”。有人對(duì)這個(gè)有經(jīng)驗(yàn)么?由于記錄 ID 很少與 NFC 一起使用,因此在線資源稀缺。
1 回答

慕絲7291255
TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
根據(jù) NFC 論壇 NDEF 規(guī)范,NDEF 記錄的 ID 字段必須是 URI。因此,NXP TagInfo 會(huì)將此值視為 URI 字符串并將字節(jié)數(shù)組解碼為字符串(我不太確定他們期望哪種編碼,但瀏覽 NDEF 規(guī)范,我期望 US-ASCII 編碼)。
由于您使用單個(gè)字節(jié)作為 ID 字段,因此該值可能不會(huì)解碼為可打印字符。因此,NXP TagInfo 只打印“”(不可打印的字符串值周?chē)囊?hào))。
添加回答
舉報(bào)
0/150
提交
取消