晚上好,
您的网页已经帮了很多但我在尝试格式化NFC标签时发现了问题,而且我找不到与NDEF格式相关的主题标签。
首先,我必须说我是NFC技术的新手。
我买了以下标签:http://www.ti.com/product/RI-I16-112A-03/description
该芯片经过工厂测试,因此每个字节都写入0x00。
现在问题开始了: 我将应用说明下载到代码:http://www.ti.com/lit/an/sloa166a/sloa166a.pdf 并创建了一个Android应用程序(下面的源代码)来编写内存,如图12所示。 当我用NXP-TagInfo应用程序读出标签的内容时,内存看起来应该如此。问题仍然是它在NXP-TagInfo中显示存在"没有NFC数据集存储"此外,它被发现为NFC_TECH。告诉我,如果我错了,但这表明该标签绝对不是NDEF格式的。
为了写入标签,我做了一些研究,因为它没有记录在应用笔记/数据表中,这让我最困惑。 是否有任何文档指定可以使用哪些字节标志或哪些字节标志存在?我使用了0x42,因为我已经在这个论坛中看到了它 - 如果你想要源代码请求它。
我的硬件:Sony Xperia S - Android 4.1.2(Build-number:6.2.B.1.96)
使用Eclipse编译 - 目标SDK = min SDK = API-level 16
最后是代码:
public class Nfc_activity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView textView = new TextView(this);
String result = "";
textView.setTextSize(40);
Intent intent = getIntent();
Tag receivedTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
byte[] block0 = new byte[] {0x42,0x21,(byte)0x00,(byte)0xe1,0x40,0x20,0x01};
byte[] block1 = new byte[] {0x42,0x21,(byte)0x01,0x03,0x0b,(byte)0xd1,0x01};
byte[] block2 = new byte[] {0x42,0x21,(byte)0x02,0x07,0x55,0x01,0x74};
byte[] block3 = new byte[] {0x42,0x21,(byte)0x03,0x69,0x2e,0x63,0x6f};
byte[] block4 = new byte[] {0x42,0x21,(byte)0x04,0x6d,(byte)0xfe,(byte)0x00,(byte)0x00};
for(int i=0; i<receivedTag.getId().length; i++) {
result+= Integer.toHexString(receivedTag.getId()[i]&0xff)+':';
}
textView.setText(result);
setContentView(textView);
NfcV nvcv = NfcV.get(receivedTag);
try {
nvcv.connect();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
nvcv.transceive(block0);
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
try {
nvcv.transceive(block1);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
nvcv.transceive(block2);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
nvcv.transceive(block3);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
nvcv.transceive(block4);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
nvcv.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
修改 在这里你可以看到NXP的taginfo:
<?xml version="1.0" encoding="UTF-8"?>
<scan>
<version>3.0</version>
<date>2014-09-20 14:19:38</date>
<title>Texas Instruments Tag-it HF-I Plus (inlay) tag</title>
<uid nxp="false">3C:A7:4C:2B:00:00:07:E0</uid>
<hasndef>false</hasndef>
<section>
<subsection title="IC manufacturer">
<block type="text">
<content>Texas Instruments</content>
</block>
</subsection>
<subsection title="IC type">
<block type="text">
<content>Tag-it HF-I Plus (inlay)</content>
</block>
</subsection>
</section>
<section>
<subsection title="No NFC data set storage">
<block type="text">
<content></content>
</block>
</subsection>
</section>
<section>
<subsection title="Memory size">
<block type="text">
<content>256 bytes
► 64 blocks, with 4 bytes per block</content>
</block>
</subsection>
<subsection title="IC detailed information">
<block type="text">
<content>Supported read commands:
► Single Block Read
► Multiple Block Read
► Get System Information
AFI supported
DSFID supported
IC reference value: 0x8B</content>
</block>
</subsection>
</section>
<section>
<subsection title="Technologies supported">
<block type="text">
<content>ISO/IEC 15693-3 compatible
ISO/IEC 15693-2 compatible</content>
</block>
</subsection>
<subsection title="Android technology information">
<block type="text">
<content>Tag description:
► TAG: Tech [android.nfc.tech.NfcV]
android.nfc.tech.NfcV
► Maximum transceive length: 253 bytes
<hexoutput>MIFARE Classic support present in Android</hexoutput></content>
</block>
</subsection>
<subsection title="Detailed protocol information">
<block type="text">
<content>ID: E0:07:00:00:2B:4C:A7:3C
AFI: 0x00
DSFID: 0x00</content>
</block>
</subsection>
<subsection title="Memory content">
<block>
<address>0</address>
<data access=".">E1 40 20 01</data>
</block>
<block>
<address>1</address>
<data access=".">03 0B D1 01</data>
</block>
<block>
<address>2</address>
<data access=".">07 55 01 74</data>
</block>
<block>
<address>3</address>
<data access=".">69 2E 63 6F</data>
</block>
<block>
<address>4</address>
<data access=".">6D FE 00 00</data>
</block>
<block>
<address>5</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>6</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>7</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>8</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>9</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>10</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>11</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>12</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>13</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>14</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>15</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>16</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>17</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>18</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>19</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>20</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>21</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>22</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>23</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>24</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>25</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>26</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>27</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>28</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>29</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>30</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>31</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>32</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>33</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>34</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>35</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>36</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>37</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>38</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>39</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>40</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>41</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>42</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>43</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>44</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>45</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>46</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>47</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>48</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>49</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>50</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>51</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>52</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>53</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>54</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>55</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>56</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>57</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>58</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>59</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>60</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>61</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>62</address>
<data access=".">00 00 00 00</data>
</block>
<block>
<address>63</address>
<data access=".">00 00 00 00</data>
</block>
<block type="text">
<content>
x:user locked, *:factory locked, .:unlocked</content>
</block>
</subsection>
</section>
</scan>
感谢您的回复 迈克尔
答案 0 :(得分:0)
使用NfcV(ISO / IEC 15693)标签作为NDEF标签仍然没有标准化。因此,设备制造商必须将对标签制造商的专有定义(同时在大多数部分中类似/相同)的支持集成到他们的Android版本中。
您正在使用的设备(与Android版本结合使用) 1 在NfcV标记上支持NDEF。因此,您无法以Android设备检测到NDEF邮件的方式格式化标记。
1 )实际上并非完全正确。该设备可能支持NXP的ICODE标签上的NDEF(使用与TI标签上使用的格式完全相同的格式)。不幸的是,通过测试标签序列号中的制造商指示是否等于0x04(= NXP),该支持仅限于恩智浦标签。