Nano Hash - криптовалюты, майнинг, программирование

Принудительное событие отправки NFC // отключение и повторное включение возможностей системы NFC

Фон

Я работаю над интерфейсом связи NFC между встроенной системой и приложением Android. Встроенная система может реагировать на команды, записанные в сообщение NDEF тега NFC. Во время обработки команды поле RF неактивно. Обычно по окончании обработки команды срабатывает событие android.nfc.action.NDEF_DISCOVERED и я могу обработать ответ в своем приложении.

К сожалению, это не всегда так, и иногда устройство Android не генерирует такое событие. Если я физически удаляю Android-устройство из метки NFC и снова помещаю его в метку, срабатывает событие NDEF_DISCOVERED. Я хочу реализовать механизм опроса, который запускает событие NDEF_DISCOVERED.

Что я пробовал

Я начал с отключения и повторного включения ReaderMode адаптера NFC, но безуспешно:

    public void reconnectNfc() {
      NfcAdapter nfcAdapter = getNfcAdapter();
      nfcAdapter.disableReaderMode(this);
      getNfcAdapter().enableReaderMode(...);     
    }

событие отправки не запускается при отключении режима чтения.

Принятый ответ на этот вопрос: android получает тег NFC без использование системы отправки предполагает, что я мог бы получить обновленный объект Tag для отправки таким образом, но, к сожалению, это не работает для меня.

Есть ли способ отключить и снова включить возможности системы NFC?

Система взаимодействия

В моем AndroidManifest.xml я указал действие, которое запускается, когда система Android получает намерение отправки NFC:

    <activity
        android:name="myNfcDispatchActivity"
        ...>

        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="text/plain" />
        </intent-filter>
    </activity>

Диспетчеризация в myNfcDispatchActivity выполняется так:

@Override
protected void onResume() {
    super.onResume();

    getNfcAdapter().enableReaderMode(this, 
        tag -> {
          Handler mainHandler = new Handler(Looper.getMainLooper());
          mainHandler.post(() -> dispatchTag(tag));
        },
        NfcAdapter.FLAG_READER_NO_PLATFORM_SOUNDS | NfcAdapter.FLAG_READER_NFC_A,
        null);
}

и я обрабатываю сообщение NDEF объекта tag в методе dispatchTag()

29.04.2020

  • Кажется, вы смешиваете 2 разных метода взаимодействия с картами NFC в Android: «android.nfc.action.NDEF_DISCOVERED» из системы Intent, а enableReaderMode из более новой системы обратного вызова. Предоставьте больше кода о том, как вы взаимодействуете через NFC 29.04.2020
  • Помещение этого intent-filter в ваш манифест приведет только к тому, что служба NFC запустит ваше приложение, если оно еще не запущено, когда будет обнаружена карта с сообщением NDEF, которое вам затем нужно будет обработать, вам нужно будет enableForegroudDispatch получить Intents для уже работающего приложения . Вам действительно нужно показать весь myNfcDispatchActivity 29.04.2020
  • К сожалению, я не могу показать весь myNfcDispatchActivity (в любом случае он довольно большой), но я надеюсь, что добавленный фрагмент поможет прояснить мою проблему. 29.04.2020

Ответы:


1

Принятый ответ на этот вопрос: Как мне повторно подключиться к тегу IsoDep? предполагает, что программно решить мою проблему невозможно

Все, что вы можете сделать в этом случае, это физически удалить метку и снова предъявить ее считывателю.

05.05.2020
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..