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

Форматирование Mifare Ultralight C в NDEF

Я хочу отформатировать Mifare Ultralight C для обработки сообщений NDEF. Я написал приведенный ниже код, и он отлично работает с чипами Mifare Classic 1K, но он получает IOExeption, когда я пытаюсь подключиться к чипу Ultralight C.

NdefFormatable format = NdefFormatable.get(tag)

    if(format != null){
        try {
            format.connect();
            format.format(new NdefMessage(new NdefRecord(NdefRecord.TNF_EMPTY, null, null, null)));
            format.close();
            Toast.makeText(getApplicationContext(), "Tag formated.",    Toast.LENGTH_LONG).show();
        }catch (IOException e) {
            // TODO Auto-generated catch block
            Toast.makeText(getApplicationContext(), "Failed to connect", Toast.LENGTH_SHORT).show();
            e.printStackTrace();

        } catch (FormatException e) {
            // TODO Auto-generated catch block
            Toast.makeText(getApplicationContext(), "Failed Format", Toast.LENGTH_SHORT).show();
            e.printStackTrace();
        }
    }
    else
        Toast.makeText(getApplicationContext(), "Tag unformatable or already formatted to Ndef.", Toast.LENGTH_LONG).show();

}

Кто-нибудь знает, в чем может быть ошибка и почему код работает для чипов 1k, а не для Ultralight C? Бирка новая и абсолютно пустая.

Это вывод в logcat:

    04-21 08:49:27.300: W/System.err(9351): java.io.IOException
04-21 08:49:27.300: W/System.err(9351):     at android.nfc.tech.NdefFormatable.format(NdefFormatable.java:132)
04-21 08:49:27.300: W/System.err(9351):     at android.nfc.tech.NdefFormatable.format(NdefFormatable.java:95)
04-21 08:49:27.300: W/System.err(9351):     at com.example.exjobb.nfc.FormatTag.formatTag(FormatTag.java:69)
04-21 08:49:27.300: W/System.err(9351):     at com.example.exjobb.nfc.FormatTag.onNewIntent(FormatTag.java:58
04-21 08:49:27.300: W/System.err(9351):     at android.app.Instrumentation.callActivityOnNewIntent(Instrumentation.java:1178)
04-21 08:49:27.300: W/System.err(9351):     at android.app.ActivityThread.deliverNewIntents(ActivityThread.java:2418)
04-21 08:49:27.300: W/System.err(9351):     at android.app.ActivityThread.performNewIntents(ActivityThread.java:2431)
04-21 08:49:27.300: W/System.err(9351):     at android.app.ActivityThread.handleNewIntent(ActivityThread.java:2440)
04-21 08:49:27.300: W/System.err(9351):     at android.app.ActivityThread.access$1500(ActivityThread.java:159)
04-21 08:49:27.300: W/System.err(9351):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1387)
04-21 08:49:27.300: W/System.err(9351):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-21 08:49:27.300: W/System.err(9351):     at android.os.Looper.loop(Looper.java:176)
04-21 08:49:27.300: W/System.err(9351):     at android.app.ActivityThread.main(ActivityThread.java:5419)
04-21 08:49:27.300: W/System.err(9351):     at java.lang.reflect.Method.invokeNative(Native Method)
04-21 08:49:27.300: W/System.err(9351):     at java.lang.reflect.Method.invoke(Method.java:525)
04-21 08:49:27.305: W/System.err(9351):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
04-21 08:49:27.305: W/System.err(9351):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
04-21 08:49:27.305: W/System.err(9351):     at dalvik.system.NativeStart.main(Native Method)
20.04.2015

  • Пожалуйста, поделитесь трассировкой стека в logcat 20.04.2015
  • Это пустая (т.е. ранее не использовавшаяся) бирка Ultralight C? 20.04.2015
  • @LaurentY Добавлена ​​трассировка стека в logcat. 21.04.2015
  • @MichaelRoland Тег совершенно новый и совершенно пустой. 21.04.2015
  • Есть ли что-нибудь еще в logcat, что может указать, почему форматирование не удалось? Также вы проверяли с помощью какого-либо приложения для чтения NFC, что блок CC (блок 3) пуст и биты блокировки не установлены? 23.04.2015
  • @MichaelRoland Я не смог найти ничего другого в logcat, и я попытался отформатировать тег с помощью NXP Tag Writer, и тогда он работает нормально. 28.04.2015

Ответы:


1

Я сделал работу по форматированию, добавив другой фильтр в фильтр ForegroundDispatch. Раньше я фильтровал только обнаружение тегов, но после добавления обнаружения технологий он, кажется, работает.

IntentFilter tagDetected = new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED);
IntentFilter techDetected = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED);
IntentFilter[] nfcIntentFilter = new IntentFilter[]{tagDetected,techDetected};

nfcAdapter.enableForegroundDispatch(this, nfcPendingIntent, nfcIntentFilter, null);

Не забудьте добавить новый фильтр в метод onNewIntent.

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

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

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

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

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

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

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

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