0

我正在开发一个具有 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)中的哪一种?

4

1 回答 1

0

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

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

于 2013-04-16T13:00:07.253 回答