- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我开发了一个多用途 NFC 应用程序,它能够以不同类型的格式读取和写入不同类型的标签,包括外部类型、RTD 文本和 RTD URI。但是,解析和读取“TNF_WELL_KNOWN”智能海报内容时存在问题。更具体地说,从我遇到的问题开始,我在 Android 上使用著名的“NFC TagWriter”应用程序来创建一个简单的联系人内容。此联系人包含姓名(例如“警察”)和电话号码(例如“911”)。当尝试使用另一个名为“NFC TagInfo”的流行应用程序读取相同内容时,我能够成功读取智能海报,准确显示它应该显示的内容:
众所周知:urn:nfc:wkt:Sp(智能海报)
另一方面,我无法实现相同的目标。这是我想出的代码,试图解码上述内容:
首先,我提取 NDEF 消息及其对应的 NDEF 记录:
// Use NdefMessage[] getNdefMessages(Intent) method to extract NDEF Message(s)
NdefMessage[] ndefMessages = getNdefMessages(intent);
for(int i = 0; i < ndefMessages.length; i++) {
ndefRecords = ndefMessages[i].getRecords();
for (int j = 0; j < ndefRecords.length; j++) {
// NDEF Record parsing snippet comes here!
if (ndefRecords[j].getTnf() == NdefRecord.TNF_WELL_KNOWN) {
// If TNF indicates a "Well-known" type,
// determine the type using "Type" field
if (Arrays.equals(ndefRecords[j].getType(), NdefRecord.RTD_SMART_POSTER)) {
// First try to decode the content
payload = new String(ndefRecords[j].getPayload(), 1, ndefRecords[j].getPayload().length - 1, Charset.forName("UTF-8"));
Log.i(TAG, "Content: " + payload);
// Second try to decode the content
Log.i(TAG, "Content: " + ndefRecords[j].toUri());
}
}
}
}
当查看 Logcat 输出时,第一个 Log.i 打印:
U911Q TenPolice
第二次打印时:
tel:911
在我看来,NFC TagWriter 应用程序创建了一个嵌套的 NDEF 记录,其中连接了一种 URI 类型和一种文本类型。我想弄清楚如何成功解码此内容。第一次尝试删除有效负载 header 并解码 NDEF 记录有效负载的剩余部分。显然,第一部分包含“tel:911”内容,第二部分包含“Police”,其中“en”表示语言。第二次尝试使用 NDEFRecord 类的 toUri() 辅助方法,根据 API 文档,该方法能够提取 RTD URI。我想知道为了提取所有嵌套记录,我们可以解码一个,将其转换为 byte[] 数组并从有效负载中删除,这将被重新迭代以进行另一次解码。虽然,这种方法看起来效率很低。因此,我想知道其他专家对如何解决这个问题有何建议。
[更新] 以下是为感兴趣的人编写智能海报 NDEF 记录的简短 fragment :
NdefRecord uriNdefRecord = NdefRecord.createUri(Uri.parse((String) o[0])); //RTD_URI
NdefRecord textNdefRecord = createTextRecord((String) o[1], Locale.US, true); //RTD_TEXT
NdefRecord[] recs = new NdefRecord[]{uriNdefRecord, textNdefRecord};
NdefMessage smartPosterpContentMessage = new NdefMessage(recs);
byte[] bytes = smartPosterpContentMessage.toByteArray();
NdefRecord newRec = new NdefRecord((short) 0x01, NdefRecord.RTD_SMART_POSTER, null, bytes);
ndefMessageWriter(new NdefMessage(newRec));
在上面的代码 fragment 中,“ndefMessageWriter”使用线程与标签通信并将内容写入标签。
最佳答案
如您所见,智能海报记录包含一个文本记录和一个 URI 记录作为其有效负载。因此,要获得这些记录,您要做的就是解码智能海报记录有效负载(顺便说一句。如果您用 Google 搜索“智能海报记录”,您很快就会想出智能海报记录类型定义规范,捕获它 here ) .
您已经发现 SP 记录包含 NDEF 消息,因此您可以将记录的有效负载解码为 NDEF 消息:
NdefMessage spContentMsg = new NdefMessage(spRecord.getPayload());
现在您有一个 NDEF 消息,根据规范,它至少包含一个 URI 记录和一些其他可选记录(例如,每种语言的一个描述性文本记录):
NdefRecord[] spContentRecs = spContentMsg.getRecords();
for (NdefRecord rec : spContentRecs) {
if (rec.getTnf() == NdefRecord.TNF_WELL_KNOWN) {
if (Arrays.equals(rec.getType(), NdefRecord.RTD_URI)) {
// do something
} else if (Arrays.equals(rec.getType(), NdefRecord.RTD_TEXT)) {
// do something
}
}
}
}
顺便说一句,大多数 NFC Forum 的规范都写得很好并且易于遵循(特别是各种 NDEF 和 RTD 相关规范)。
关于安卓 NFC : Smart Poster NDEF Record with concatenated "URI" and "Text" Contents,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22357664/
我在我的博客右侧遇到了此消息的问题。你能帮我一下吗? 最佳答案 我也刚遇到这个错误。您可能正在对即将为零的值运行液体过滤器。我的 jekyll 网站上有这样的东西: {{ page.title | x
在 posterous 中,当您将鼠标悬停在图像上时,它会显示一个框,使用户可以下载或查看完整尺寸的图像。这是它应该如何工作的示例。 我试图找出为什么这在我创建的主题中不起作用 Here .我们将不胜
我正在通过 beamer 制作海报,发现我的引用书目风格有问题。我希望我的引用资料使用海报中可用的完整水平空间,例如: (1) Authors. Title. Journal. 但取而代之的是,每个引
像 posterous.com 那样,为不同的客户存储主题和 css 的最佳方式是什么? 他们是否为每个客户存储完整的 css?这对大量客户来说是否可持续? 最佳答案 我认为您在谈论个性化。 http
我正在制作一个有趣的网页游戏,其中包含许多将数据发布到 php 页面的表单。有哪些方法可以防止人们使用自己的网络表单在我的网站上发帖? 我的知识 PHP 不是太先进。所以,虽然我一直在研究这个话题,但
我正在使用 HTML5 从后端加载视频。 UX 需要覆盖整个 HTML5 视频播放器(包括 Controller )的封面图像。问题是当我使用海报属性加载封面图像时,它不会覆盖 Controller
params = {'file': open("test.txt", "rb"), 'name': 'upload test'} datagen, headers = poster.encode.mu
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我正在尝试找出 Photoshop“海报边缘”滤镜的效果。它似乎是边缘检测和分色器的结合,但我无法用这些复制它,甚至无法复制它,所以我想我遗漏了一些东西。下图显示了海报边缘过滤器之前和之后的相同图像:
当我的视频从 S3 存储桶加载时,我想在 Video.js 播放器中显示加载器。 我有一个 Video.js 播放器,它显示一个“播放”按钮,当点击这个按钮时,播放器显示黑屏,直到从 S3 存储桶加载
我们使用 YUI 2.9.0,在一个表单上我们遇到了一个问题:如果我们在 input type="text"上按 Enter,表单会以“正常方式”提交,而不是通过 YUI Dialog 的异步模式(
我开发了一个多用途 NFC 应用程序,它能够以不同类型的格式读取和写入不同类型的标签,包括外部类型、RTD 文本和 RTD URI。但是,解析和读取“TNF_WELL_KNOWN”智能海报内容时存在问
使用 Chris Atlee 的 python poster library有什么方法可以包括 cookie 处理吗?我有 python http 登录代码,它与 cookie 一起使用: cooki
我只是在我的服务器上设置了 SSL 证书。我很确定它们设置正确。当在浏览器中转到 https://mydomain.com/myapp 时,页面会正确加载并且地址栏中会显示绿色锁。 从 Firefox
元: 有关本地存储的 A/V 文件的类似问题可以在此处找到:Clickable "positioning" hyperlinks to A/V (locally stored on your webs
我正在尝试将 JSON 内容发布到 Web 服务。它在 POSTER(firefox 插件)和 HTTP Client (Mac) 中运行良好。但尝试从 XCode(iOS 应用程序)进行 POST
我收到错误java.lang.IllegalStateException:预期为 BEGIN_OBJECT,但在第 1 行第 7770 列路径 $.films[8].images.poster 处为
我正在使用 Python 3,并且无法 --> pip 安装海报库 我正在尝试使用海报上传文件。我尝试过: pip install poster 或 easy_install poster 他们都失败
我是一名优秀的程序员,十分优秀!