【问题标题】:Plain text over Android BeamAndroid Beam 上的纯文本
【发布时间】:2013-04-16 07:56:06
【问题描述】:

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

【问题讨论】:

    标签: android nfc android-beam


    【解决方案1】:

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

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

    【讨论】:

    • 但是即使 NXP TagWriter 不会显示其内容,MIME-one 是否应该正确?
    猜你喜欢
    • 2011-05-15
    • 2012-10-16
    • 2018-06-07
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 2022-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多