Android Beam上的纯文本

时间:2013-04-16 07:56:07

标签: android nfc android-beam

我正在开发一个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)?

1 个答案:

答案 0 :(得分:0)

RTD_TEXT条记录映射到MIME类型“text / plain”以进行意图过滤。也就是说:“text / plain”的intent过滤器将匹配两种类型的记录。因此,使用哪种类型并不重要。

RTD_TEXT记录的有效负载比MIME类型的文本/普通记录稍微复杂一些。它应包含有关所用编码和内容语言的信息,请参阅http://www.nfc-forum.org/specs/spec_list/中提供的规范。 (因此,您创建的RTD_TEXT记录不正确。)