我正在使用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};
我如何制作这样的数据?
此致
答案 0 :(得分:1)
数据是所谓的NDEF消息,包含一个或多个NDEF记录。您可以使用类NdefMessage
和NdefRecord
创建它们。记录具有类型和有效负载(数据),有时还有ID。
您显示的示例是带有文本记录的NDEF消息。可以从NFC Forum site获取该类记录(及其他记录)的确切详细信息。
答案 1 :(得分:1)
我创建了一个NDEF editor作为Eclipse插件,可以让你以文件的形式定义很多“假”数据。
从res / raw目录加载文件很简单。
答案 2 :(得分: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))) .',';
}