- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
首先要确定并澄清这一点,Smartwatch 3 的 NFC 只是一个嵌入式标签还是理论上功能齐全的 NFC 芯片?
希望它不仅仅是一个标签,我们想使用 NFC 构建一个 Android Wear 应用程序,为此最大的问题是:
谢谢,克里斯
长篇大论:基本上索尼新的smartwatch 3也是一样的问题:NFC对开发者有用吗? Is there an NFC API for the Sony SmartWatch 2?
最佳答案
我终于拿到了其中一款智能 watch 。这是我目前所发现的。
扫描 SWR50 作为标签:
SWR50 被识别为 Broadcom 制造的 NFC Forum Type 2 标签。我测试的 watch 的 7 字节 UID 是 2e020d00000000
。事实上,我找不到来自 Broadcom 的任何专用 Type 2 标签以及 UID 中的许多零,这让我认为这可能是使用某些 NFC Controller 模拟的标签。
标签有 122 个 block (乘以 4 个字节,总共 488 个字节)包含以下数据:
0: 2e 02 0d 0c 1: 00 00 00 00 2: 00 00 ff ff 3: e1 11 3c 0f 4: 00 00 00 01 5: 03 78 30 35 6: 03 31 d4 0f 7: 1f 61 6e 64 8: 72 6f 69 64 9: 2e 63 6f 6d10: 3a 70 6b 67 11: 63 6f 6d 2e12: 67 6f 6f 67 13: 6c 65 2e 6114: 6e 64 72 6f 15: 69 64 2e 7716: 65 61 72 61 17: 62 6c 65 2e18: 61 70 70 fe 19: ff ff ff ff20: 30 a8 db f2 21: 43 1c ff ff22: 30 a8 db f5 23: 2a 78 ff ff24: 14 39 2d 4d 25: f2 6a 91 4026: ff ff ff ff 27: ff ff ff ff(remaining blocks are all filled with ff ff ff ff)
The static lock bits (block 2, bytes 2 and 3) are all set (indicates locked state).
Block 3 contains a capability container for a Type 2 tag (magic byte 0xE1
).
However, the mapping version number 1.1 (0x11
) does not comply to any of the current mapping version documents provided by the NFC Forum! The only mapping version number that is currently defined is 1.0.
Block 4 contains 3 NULL TLVs (0x00
) and the first byte of a Lock Control TLV (tag 0x01
).
The Lock Control TLV indicates that there are 48 lock bits located starting at byte position 232 (= 7 * 25 + 8). I.e. 6 bytes starting at block 58, so they are all set (0xFFFFFFFFFFFF
). Each lock bit locks 3 bytes, so they indicate that blocks 16 to 51 are locked.
Block 6 contains the start of an NDEF Message TLV (tag 0x03
, length 0x31
). The NDEF message consists of a single NDEF record (Android Application Record for app com.google.android.wearable.app):
+--------------------------------------------+| TNF: EXTERNAL TYPE || Type: urn:nfc:ext:android.com:pkg |+--------------------------------------------+| Payload: com.google.android.wearable.app |+--------------------------------------------+
Block 18 contains a Terminator TLV (tag 0xFE
) indicating the last TLV block within the tag memory area.
Blocks 20 and 21 (first 2 bytes) contain the device Bluetooth address.
Blocks 22 and 23 (first 2 bytes) contain something that looks like a Bluetooth address too.
Blocks 24 and 25 contain the device serial number.
The remaining blocks are all filled with FF FF FF FF
.
Android NFC API access:
Requesting an instance of the NFC adapter fails (the getDefaultAdapter()
method returns null):
NfcManager nfcMgr = (NfcManager)mContext.getSystemService(Context.NFC_SERVICE);
NfcAdapter nfcAdapter = nfcMgr.getDefaultAdapter(); // -> null
此外,还有一条日志消息表明该设备不支持 NFC。
V/NFC: this device does not have NFC support
查看NFC系统功能,没有一个NFC系统功能可用:
PackageManager pkgMgr = mContext.getPackageManager();
boolean featureNfc = pkgMgr.hasSystemFeature("android.hardware.nfc"); // -> false
boolean featureHce = pkgMgr.hasSystemFeature("android.hardware.nfc.hce"); // -> false
featureNfc
和featureHce
都是false
,所以android.hardware.nfc和android.hardware.nfc.hce都不可用。
因此目前 SWR50 上没有可用的 NFC API。
固件分析:
因此,可能从硬件端和内核端支持 NFC,但缺少 NFC 堆栈的用户空间部分。尽管内核驱动程序也可能指向任何地方。 BCM43341 的固件可能以 NFC Controller 简单模拟 2 类标签的方式进行编码,同时无法从操作系统访问。
关于android - Smartwatch 3 (SWR50) 是否有 NFC API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26769864/
我正在使用 Vercel SWR Hook usrSWR,我希望我可以将数据存储在某个遥远组件的缓存中,而不必使用上下文或其他一些全局状态管理器。 具体来说,我在 IndexPage 中使用 init
我希望 UI 中的数据立即更新,而不是等待 SWR 与数据库同步。 我试过关注 the docs ,但 UI 仍然不会自动更新(我切换并返回我的浏览器以更新它)。这是代码: import useSWR
例如,我使用 react 路由器切换到不同的页面: const Apage = () => { const { data, error } = useSWR('/a-data', fetche
当用户在输入搜索中输入一些文本时,必须删除 data-testid = 'loading',现在控制台返回 Unable to find an element by: [data-testid="lo
我决定尝试将我的大部分 API 函数转移到 SWR,因为它让我可以做更多事情! 问题 但是,我遇到了一个巨大的问题,我无法弄清楚如何将 header 正确传递到 SWR。我查看了文档等等,但似乎没有任
我有典型的获取请求 const { data } = useSWR( ['api/projects', API_KEY], fetcher ); 获取数据后,我想过滤项目,在我的情况下基于当前
我正在尝试使用 SWR 和 SSR 创建带分页的产品列表。为此,我将初始数据传递给 SWR,当分页发生变化时,我调用一个 mutate 函数,绑定(bind)到第一个 SWR 请求。 问题是页面没有重
我使用 graphql 和 swr 来获取数据 这是我的抓取器: FetcherHelper.js const ENDPOINT = "/api/graphql"; const headers = {
此组件用于计算部署在 AWS Lambda 上的 Next.js 应用程序页面级别的浏览量 function ViewsCounter({ slug }: { slug: string }) {
您好,我尝试构建一个从 API 获取数据的应用程序。 我使用 SWR Hooks 来获取数据 // libs/fetch.js import fetch from "isomorphic-unfetc
当我单击组件内的按钮时,我通过函数 const readUrl 向页面发送回 id。现在我正在尝试将客户端 id 发送到 /api/dat/[id].js 路由,其中基本上在 mongodb 中搜
我在 NextJS 项目中使用 SWR 库,目前我正在构建一个仪表板。我想点击多个端点以获取不同的数据,但我找不到任何使用 SWR 对端点进行多次调用的引用。 我使用的语法如下; const { da
我想为一个页面获取 3 个端点,我正在使用 next.js 的 SWR Hook ,因为我需要从客户端获取它。documentation对我没有帮助,因为我在另一个文件中有 url 的变量。我对此很陌
我正在使用 SWR 在我的代码中,我使用两者的连接点如下 const vehiclesStates = useSelector(({ vehiclesStates: state }) => state
我目前正在使用 next.js 构建一个 Web 应用程序,它需要跨设备进行实时更新,例如,如果有人加入一个组,则需要立即为该组的所有现有成员显示。 目前,我最初是在页面加载时为用户获取数据,并在必要
我想知道传递给我下面的函数的这个参数的类型是什么 const fetcher = async (...args) => { ~_ 0
const fetcher = (url: string) => fetch(url).then((r) => r.json()); const { data, error } = useSWR(
使用 Next.js 动态路由时,我尝试使用路由查询对象发出 SWR 获取请求,但在设置查询对象之前调用了我的 SWR 获取请求。 给定动态路由/posts/[id] ,考虑页面/posts/123
我正在使用 Next.js 制作购物车组件,但在更新购物车数据后出现刷新问题。我的购物车组件是 Next.js 文档( https://nextjs.org/docs/basic-features/d
在我的应用程序中,每次用户创建新专辑时,发布请求响应都会以更新的专辑列表列表进行响应。 为了提供更好的用户体验,我希望用户无需刷新页面即可看到应用中的新内容。 我知道 SWR 变异的存在,但到目前为止
我是一名优秀的程序员,十分优秀!