首先,确定并澄清一下,Smartwatch 3的NFC只是一个嵌入式标签,还是理论上功能齐全的NFC芯片?
希望它不仅仅是一个标签,我们希望使用NFC构建Android Wear应用程序,为此最大的问题是:
谢谢,克里斯
TLDR: 基本上它与sony的新智能手表3的问题相同:NFC是否可供开发人员使用? Is there an NFC API for the Sony SmartWatch 2?
答案 0 :(得分:17)
我终于抓住了其中一款智能手表。这是我到目前为止所发现的。
将SWR50扫描为标签:
SWR50被识别为Broadcom制造的NFC论坛类型2标签。我测试的手表的7字节UID是2e020d00000000
。我无法从Broadcom找到任何专用的Type 2标签和UID中的多个零这一事实让我觉得这可能是使用某些NFC控制器模拟的标签。
标签有122个块(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 6d 10: 3a 70 6b 67 11: 63 6f 6d 2e 12: 67 6f 6f 67 13: 6c 65 2e 61 14: 6e 64 72 6f 15: 69 64 2e 77 16: 65 61 72 61 17: 62 6c 65 2e 18: 61 70 70 fe 19: ff ff ff ff 20: 30 a8 db f2 21: 43 1c ff ff 22: 30 a8 db f5 23: 2a 78 ff ff 24: 14 39 2d 4d 25: f2 6a 91 40 26: ff ff ff ff 27: ff ff ff ff (remaining blocks are all filled with ff ff ff ff)
静态锁定位(块2,字节2和3)都已设置(表示锁定状态)。
第3块包含Type 2标记的功能容器(魔术字节0xE1
)。
但是,映射版本号1.1(0x11
)不符合NFC论坛提供的任何当前映射版本文档!当前定义的唯一映射版本号是1.0。
块4包含3个空TLV(0x00
)和锁定控制TLV的第一个字节(标记0x01
)。
锁定控制TLV表示从字节位置232开始有48个锁定位(= 7 * 2 5 +8)。即从块58开始的6个字节,因此它们都被设置(0xFFFFFFFFFFFF
)。每个锁定位锁定3个字节,因此它们表示块16到51被锁定。
第6块包含NDEF消息TLV(标记0x03
,长度0x31
)的开头。 NDEF消息由单个NDEF记录组成(适用于app.google.android.wearable.app的Android应用程序记录):
+--------------------------------------------+ | TNF: EXTERNAL TYPE | | Type: urn:nfc:ext:android.com:pkg | +--------------------------------------------+ | Payload: com.google.android.wearable.app | +--------------------------------------------+
第18块包含一个终结者TLV(标记0xFE
),表示标记存储区内的最后一个TLV块。
块20和21(前2个字节)包含设备蓝牙地址。
第22和23栏(前2个字节)也包含看起来像蓝牙地址的内容。
第24和25栏包含设备序列号。
其余的块都填充了FF FF FF FF
。
Android NFC API访问:
请求NFC适配器的实例失败(getDefaultAdapter()
方法返回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控制器简单模拟Type 2标签的方式编码,同时无法从操作系统访问。
答案 1 :(得分:2)
SmartWatch 3中有一个功能齐全的芯片。它现在按照CM787(here's a new one链接的规范进行操作,因为旧的芯片似乎死了。)
当Android Wear正式扩展对NFC的支持时,SmartWatch 3将能够跟进。
答案 2 :(得分:1)
不。它表示NFC适用于规格表上的电源或配对。看起来不像第三方开发者这次会对它进行破解。
答案 3 :(得分:0)
智能手表支持NFC,基于此处http://www.smartwatchspecifications.com/Device/smartwatch-3-swr50/的规格,但目前还没有NFC API可用,希望会有一个,我也在寻找这个功能,计划开发应用程序这个功能