Gridens - информационные технологии

Тег NFC не обнаружен для действия ACTION_NDEF_DISCOVERED, даже если он содержит данные Ndef

Я пытаюсь прочитать 2 разных тега NFC с помощью Samsung S5. Оба тега содержат сообщение NDEF, первый тег содержит запись типа MIME в качестве своей первой записи, а второй тег содержит запись альтернативного носителя (TNF = TNF_WELL_KNOWN, Type = RTD_ALTERNATIVE_CARRIER) в качестве своей первой записи.

Когда я читаю теги через отправку переднего плана, используя намерение ACTION_TECH_DISCOVERED. Для первого тега в списке технологий указаны NfcA, MifareClassic и Ndef. Для второго тега перечислены NfcA и Ndef.

Когда я пытаюсь прочитать тег, используя намерение ACTION_NDEF_DISCOVERED, используя тип данных "*/*" , первый тег обнаруживается нормально, но второй тег вообще не обнаруживается.


  • Какие данные хранятся в двух тегах? 05.06.2015
  • Просто простые данные тестирования, записанные в формате Ndef. 05.06.2015
  • Хорошо, чтобы уточнить мой вопрос: каков тип данных первой записи NDEF в сообщениях NDEF для этих тегов? 05.06.2015
  • в 1-м теге TNFType = TNF_MIME_MEDIA и во 2-м теге TNFType = TNF_WELL_KNOWN, RTDType = RTD_ALTERNATIVE_CARRIER 05.06.2015

Ответы:


1

Проблема здесь в том, как работает фильтр намерений NDEF_DISCOVERED. С помощью NDEF_DISCOVERED вы можете отслеживать определенный тип данных (например, тип MIME) или определенный URI. Во всех случаях сопоставление будет применено к первой записи в сообщении NDEF обнаруженного тега.

С помощью сопоставления типов данных вы можете обнаружить

  • запись типа MIME, которая содержит данный тип носителя MIME или
  • текстовая запись RTD (TNF_WELL_KNOWN + RTD_TEXT) с сопоставлением с типом MIME "text/plain".

С помощью сопоставления URI вы можете обнаружить

  • запись RTD URI (TNF_WELL_KNOWN + RTD_URI),
  • запись RTD URI, инкапсулированная в запись RTD Smart Poster,
  • запись с типом на основе URI (TNF_ABSOLUTE_URI) или
  • запись внешнего типа форума NFC (TNF_EXTERNAL).

Оба типа сопоставления являются взаимоисключающими, поэтому вы можете сопоставлять тип данных или URI в одном фильтре намерений.

В случае вашего второго тега тип первой записи (TNF_WELL_KNOWN + RTD_ALTERNATIVE_CARRIER) не поддерживается системой диспетчеризации намерений NDEF. Следовательно, вы не можете использовать фильтр намерений NDEF_DISCOVERED в сочетании с этим тегом.

Примеры

Соответствие типу данных:

  • в манифесте:

    <intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:mimeType="some/mimetype" />
    </intent-filter>
    
  • в коде:

    IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
    ndef.addDataType("some/mimetype");
    

Соответствие URL:

  • в манифесте:

    <intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:scheme="http"
              android:host="somehost.example.com"
              android:pathPrefix="/somepath" />
    </intent-filter>
    
  • в коде:

    IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
    ndef.addDataScheme("http");
    ndef.addDataAuthority("somehost.example.com", null);
    ndef.addDataPath("/somepath", PatternMatcher.PATTERN_PREFIX);
    

Соответствие внешнему типу форума NFC:

  • в манифесте:

    <intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:scheme="vnd.android.nfc"
              android:host="ext"
              android:pathPrefix="/com.example:sometype" />
    </intent-filter>
    
  • в коде:

    IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
    ndef.addDataScheme("vnd.android.nfc");
    ndef.addDataAuthority("ext", null);
    ndef.addDataPath("/com.example:sometype", PatternMatcher.PATTERN_PREFIX);
    
05.06.2015
Новые материалы

Журналы Py № 2: Если, Элиф, Иначе?
У меня такое чувство, будто я давно ничего не писал, хотя прошло два дня с тех пор, как я опубликовал свою первую историю. В любом случае, сегодня произошло много всего, так что приступим...

Работа в Реакции
Я изучаю React в Bloc прямо сейчас. До сих пор я изо всех сил пытался понять темы. Тем не менее, я только что закончил проблему, над которой некоторое время размышлял, и хочу записать свой..

Нужен ли банкам искусственный интеллект, чтобы кардинально изменить свою работу?
Почему необходимо использовать искусственный интеллект в банковской сфере? Существенное использование многочисленных инноваций ИИ, таких как машинное обучение , глубокое обучение и..

Какую последнюю статью вы считаете стоящей поделиться?
Я люблю читать качественные статьи. Не стесняйтесь делиться своей работой.

Преобразование CoreML, позволяющее использовать Fast-Neural-Style-Transfer на iOS и MacOS.
Как использовать Fast-Neural-Style-Transfer на iOS Преобразованная модель: GitHub — john-rocky/CoreML-Models: Преобразованный зоопарк моделей CoreML...

ИИ в правоохранительных органах: мощный инструмент с двойной природой
Искусственный интеллект (ИИ) революционизирует правоохранительную деятельность, предлагая инновационные тактики расследования, повышая достоверность доказательств и оптимизируя процессы. Тем..

Autoencoder Average Distance  — классический способ, используемый внутри Microsoft для выявления сходства…
Среднее расстояние автоэнкодера (AAD) использует более простой подход для определения расстояния между двумя наборами данных. Нейронный автоэнкодер может преобразовать любой элемент данных в..