是否有适用于Smartwatch 3(SWR50)的NFC API

时间:2014-11-06 00:41:00

标签: android nfc wear-os firmware sony-smartwatch

首先,确定并澄清一下,Smartwatch 3的NFC只是一个嵌入式标签,还是理论上功能齐全的NFC芯片?

希望它不仅仅是一个标签,我们希望使用NFC构建Android Wear应用程序,为此最大的问题是:

  • 是否(将要?)使用SWR50的NFC芯片的API?
  • 如果没有其他方法可以激活它,或者Android Wear的更新版本是否可以为智能手表带来芯片支持? 任何帮助表示赞赏!

谢谢,克里斯


TLDR: 基本上它与sony的新智能手表3的问题相同:NFC是否可供开发人员使用? Is there an NFC API for the Sony SmartWatch 2?

4 个答案:

答案 0 :(得分:17)

我终于抓住了其中一款智能手表。这是我到目前为止所发现的。

  1. 将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

  2. 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
    

    featureNfcfeatureHce都是false,因此android.hardware.nfc和android.hardware.nfc.hce都不可用。

    因此,目前SWR50上没有可用的NFC API。

  3. 固件分析:

    • 在/ system / vendor / firmware /下有一个名为BCM43341B0_002.001.014.0122.0174.hcd的文件,因此看起来该手表实际上包含Broadcom的BCM43341四射频芯片,它还包含一个NFC控制器。
    • / proc / misc列出了bcm2079x,因此似乎bcm2079x驱动程序已编译到内核中。
    • / system分区上没有NFC服务应用程序(Nfc * .apk)。

    因此可能从硬件端和内核端支持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可用,希望会有一个,我也在寻找这个功能,计划开发应用程序这个功能