我正在开发一个minSdk = 14且targetSdk = 17的Android应用程序。我希望应用程序使用Android Beam将纯文本字符串从手机发送到NFC阅读器。我还没有读者,并且一直试图将纯文本数据从一个Android设备传输到另一个设备(我有一个运行4.2.2的Nexus 4和一个运行4.0.3的LG Optimus L5)。
我发现了两种发送文本数据的方法,第一种是使用TNF_WELL_KNOWN和RTD_TEXT作为类型,另一种是使用TNF_MIME_MEDIA和text / plain作为类型。
从L5发送到N4之后,我看到的所有内容都在“收集的新标签”下面是“text / plain”。我也尝试用NXP TagWriter读取Beam数据,这是我在使用RTD_TEXT http://i.imgur.com/0qbAwld.png时得到的,这是在使用text / plain MIME http://i.imgur.com/bz9RxuI.png时。
这是使用RTD_TEXT时的代码
NdefRecord[] records = {
new NdefRecord(NdefRecord.TNF_WELL_KNOWN,
NdefRecord.RTD_TEXT,
new byte[0],
"testing".getBytes())
};
NdefMessage msg = new NdefMessage(records);
adapter.setNdefPushMessage(msg, this);
这是使用text / plain MIME
时的代码 NdefRecord[] records = {
new NdefRecord(NdefRecord.TNF_MIME_MEDIA,
"text/plain".getBytes(),
new byte[0],
"testing".getBytes())
};
NdefMessage msg = new NdefMessage(records);
adapter.setNdefPushMessage(msg, this);
如何正确创建NdefRecord?或者它只是按预期工作,有效载荷不显示在另一部手机上?发送纯文本数据时,首选哪两种方法(RTD_TEXT和MIME)?
答案 0 :(得分:0)
RTD_TEXT
条记录映射到MIME类型“text / plain”以进行意图过滤。也就是说:“text / plain”的intent过滤器将匹配两种类型的记录。因此,使用哪种类型并不重要。
RTD_TEXT
记录的有效负载比MIME类型的文本/普通记录稍微复杂一些。它应包含有关所用编码和内容语言的信息,请参阅http://www.nfc-forum.org/specs/spec_list/中提供的规范。 (因此,您创建的RTD_TEXT
记录不正确。)