0

我正在使用 FakeTagsActivity

FakeTagsActivity — 一种启动标签的活动,就像它们已被扫描一样。如果您无法访问启用 NFC 的设备或标签,这将非常有用。

它定义了一些假数据:

 /**
     * A plain text tag in english.
     */
    public static final byte[] ENGLISH_PLAIN_TEXT =
        new byte[] {(byte) 0xd1, (byte) 0x01, (byte) 0x1c, (byte) 0x54, (byte) 0x02, (byte) 0x65,
            (byte) 0x6e, (byte) 0x53, (byte) 0x6f, (byte) 0x6d, (byte) 0x65, (byte) 0x20,
            (byte) 0x72, (byte) 0x61, (byte) 0x6e, (byte) 0x64, (byte) 0x6f, (byte) 0x6d,
            (byte) 0x20, (byte) 0x65, (byte) 0x6e, (byte) 0x67, (byte) 0x6c, (byte) 0x69,
            (byte) 0x73, (byte) 0x68, (byte) 0x20, (byte) 0x74, (byte) 0x65, (byte) 0x78,
            (byte) 0x74, (byte) 0x2e};

我怎样才能像这样制作自己的数据?

问候

4

3 回答 3

1

数据是所谓的 NDEF 消息,包含一个或多个 NDEF 记录。您可以使用类NdefMessageNdefRecord. 一条记录有一个类型和一个有效负载(数据),有时还有一个 ID。

您显示的示例是带有文本记录的 NDEF 消息。可以从NFC 论坛网站获得此类记录(和其他记录)的确切详细信息。

于 2012-09-06T11:56:21.237 回答
1

我创建了一个NDEF 编辑器作为 Eclipse 插件,它可以让您以文件的形式定义大量“假”数据。

从 res/raw 目录加载文件很容易。

于 2012-09-07T08:27:26.587 回答
0

看起来像

new byte[] {(byte) 0xd1, (byte) 0x01, (byte) 0x1c, (byte) 0x54, (byte) 0x02, (byte) 0x65,
        (byte) 0x6e,

是 NFC 标签标题(“�Ten”),其余的是实际文本(“一些随机英文文本。”)

编辑-请注意,其中一些数字不会转换为可见字符(0x01 和 0x02)-这就是为什么有 6 个数字序列且只有 4 个字符的原因。这也是为什么他们必须像他们正在做的那样构建 byte[](而不仅仅是使用字符串)——简单地将“�Ten”复制到字符串中不会是一回事——所以不要尝试:-)

这些字节是 ASCII 字符的十六进制代码——我可以用 PHP 解码它们——

php -r "print chr(0xd1).chr(0x01).chr(0x1c).chr(0x54) . chr(0x02) . chr(0x65).chr(0x6e).chr(0x53).chr(0x6f).chr(0x6d).chr(0x65).chr(0x20).chr(0x72).chr(0x61).chr(0x6e).chr(0x64).chr(0x6f).chr(0x6d).chr(0x20).chr(0x65).chr(0x6e).chr(0x67).chr(0x6c).chr(0x69).chr(0x73).chr(0x68).chr(0x20).chr(0x74).chr(0x65).chr(0x78).chr(0x74).chr(0x2e);"

�TenSome 随机英文文本。

ASCII 表 - http://www.asciitable.com/

如果您想制作其他标签,则必须查找要发送的标签类型的规范 - Google 可以帮助您

编辑- 根据您的评论进行转换的 PHP 代码(我只是不想查找 java 函数,即使我这样做了,您也必须编写一堆代码才能运行/查看输出 - PHP像这样的东西要快得多)

$text = 'Some random english text.';
for ($i = 0; $i < strlen($text); $i++) {
   print " (byte) 0x" . dechex(ord(substr($text,$i,1))) .',';
}
于 2012-09-06T03:33:26.677 回答