Intereting Posts

Существует ли API-интерфейс NFC для Smartwatch 3 (SWR50)

Чтобы быть уверенным, и сначала прояснить это, является ли NFC Smartwatch 3 встроенным тегом или это теоретически полностью функционирующий NFC-чип?

Надеясь, что это не просто тег, мы хотим создать приложение Android Wear с помощью NFC, и для этого самый большой вопрос:

  • Есть ли (будет?) API для использования чипа NFC от SWR50?
  • Если нет, есть ли другой способ его активировать, или, может быть, обновленная версия Android Wear может обеспечить поддержку чипа для смарт-карты? Любая помощь приветствуется!

Спасибо, Крис


TLDR: В принципе, это тот же вопрос для нового смартвчера 3 из sony: Является ли NFC для разработчиков? Есть ли NFC API для Sony SmartWatch 2?

В SmartWatch 3 есть полностью функциональный чип. Сегодня он работает в соответствии со спецификацией, связанной с CM787 ( здесь новая, так как старая кажется мертвой).

Когда Android Wear официально расширит поддержку NFC, SmartWatch 3 сможет следовать.

Наконец-то я получил руку на одном из этих умных часов. Это то, что я нашел до сих пор.

  1. Сканирование SWR50 в качестве тега:

    SWR50 идентифицируется как тег типа NFC Forum 2, выпущенный Broadcom. 7-байт-UID часов, которые я тестировал, составляет 2e020d00000000 . И то, что я не мог найти никаких выделенных тегов Type 2 из Broadcom и многих нулей в 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
     (Остальные блоки заполняются ff ff ff ff)
    
    • Биты статической блокировки (блок 2, байты 2 и 3) установлены (указывает состояние блокировки).

    • Блок 3 содержит контейнер возможностей для тега типа 2 (магический байт 0xE1 ).

    • Тем не менее, номер версии 1.1 ( 0x11 ) не соответствует ни одному из текущих документов с версией, представленным на форуме NFC! Единственный номер версии сопоставления, который в настоящее время определен, равен 1.0.

    • Блок 4 содержит 3 NULL TLV ( 0x00 ) и первый байт TLV блокировки (тег 0x01 ).

    • TLV Lock Control указывает, что имеется 48 бит блокировки, начиная с байтового положения 232 (= 7 * 2 5 + 8). Т.е. 6 байт, начиная с блока 58, поэтому все они установлены ( 0xFFFFFFFFFFFF ). Каждый бит блокировки блокирует 3 байта, поэтому они указывают, что блоки с 16 по 51 заблокированы.

    • Блок 6 содержит начало TLV сообщения NDEF (тег 0x03 , длина 0x31 ). Сообщение NDEF состоит из одной записи NDEF (Android Application Record для приложения com.google.android.wearable.app):

       + -------------------------------------------- +
       |  TNF: ВНЕШНИЙ ТИП |
       |  Тип: urn: nfc: ext: android.com: pkg |
       + -------------------------------------------- +
       |  Полезная нагрузка: com.google.android.wearable.app |
       + -------------------------------------------- +
      
    • Блок 18 содержит TLV Terminator (тег 0xFE ), указывающий последний блок TLV в области памяти тега.

    • Блоки 20 и 21 (первые 2 байта) содержат адрес устройства Bluetooth.

    • Блоки 22 и 23 (первые 2 байта) содержат что-то похожее на адрес Bluetooth.

    • Блоки 24 и 25 содержат серийный номер устройства.

    • Остальные блоки заполняются FF FF FF FF .

  2. Доступ к API NFC для Android:

    Запрос об отказе экземпляра адаптера 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 в настоящее время нет API NFC.

  3. Анализ прошивки:

    • Существует файл BCM43341B0_002.001.014.0122.0174.hcd под / system / vendor / firmware /, поэтому кажется, что часы на самом деле содержат четырехдиапазонный чип Broadcom BCM43341, который также содержит контроллер NFC.
    • / Proc / misc lists bcm2079x, поэтому кажется, что драйвер bcm2079x был скомпилирован в ядро.
    • В системном разделе нет NFC-приложения (Nfc * .apk).

    Таким образом, может быть поддержка NFC со стороны аппаратного обеспечения и со стороны ядра, но часть пользовательского пространства в стеке NFC отсутствует. Хотя драйвер ядра мог бы точно указать на никуда. И прошивка BCM43341 может быть закодирована таким образом, что контроллер NFC просто эмулирует тег типа 2, будучи недоступным из операционной системы.

Неа. В нем говорится, что NFC предназначен для включения или сопряжения на спецификации. Не похоже, что сторонние разработчики на этот раз собираются взломать.

Smartwatch поддерживает NFC, основываясь на спецификациях здесь: http://www.smartwatchspecifications.com/Device/smartwatch-3-swr50/ , но на данный момент API NFC отсутствует, надеюсь, что будет один, я также Ищет эту функциональность, планируя разрабатывать приложения с этой функцией