Работа с NFC в Android всегда была непростой задачей. Нативный API требует от разработчика понимания низкоуровневых протоколов и механизмов обработки данных. Новый TAO NFC SDK (Android) призван решить эту проблему, предоставляя высокоуровневую абстракцию, которая значительно упрощает взаимодействие с NFC-метками.

Что такое TAO NFC SDK?

Это библиотека, созданная для упрощения NFC-операций в Android-приложениях. Её основная цель — сделать чтение, запись и управление NFC-метками максимально простым, особенно когда речь идёт о формате NDEF (NFC Data Exchange Format). SDK разработан с учётом расширяемости, позволяя разработчикам добавлять поддержку различных технологий и пользовательских форматов данных.

Ключевые особенности

  • Высокоуровневый API: Вместо работы с низкоуровневыми деталями, SDK предоставляет простой и интуитивно понятный интерфейс для выполнения распространённых NFC-операций.

  • Полная поддержка NDEF: Обеспечивает надёжное чтение и запись NDEF-сообщений.

  • Гибкость: Вы можете создавать собственные обработчики NfcHandler для различных технологий, а также использовать NfcDataParser и NfcDataPreparer для поддержки пользовательских структур данных и их кодирования.

  • Обработка ошибок: Стандартизированный перечень ошибок NfcAdminError позволяет получать подробные отчёты о проблемах.

  • Система колбэков: Слушатели событий (Listeners) уведомляют приложение об изменении состояния NFC-адаптера, результатах чтения или записи и возникших ошибках.

Как начать? Пошаговая инструкция

Настройка SDK состоит из двух основных этапов: добавление зависимости и конфигурирование вашего проекта.

1. Добавление зависимости

Добавьте ссылку на глобальный репозиторий:

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
        repositories {
            mavenCentral()
            maven { url = uri("https://jitpack.io") }
        }
    }

Добавьте зависимость:

dependencies {
            implementation("com.github.lordtao:android-tao-nfc:latestVersion")
    }

Настройка AndroidManifest.xml

Для корректной работы приложения с NFC, вам нужно добавить несколько строк в файл AndroidManifest.xml:

Разрешение на использование NFC:

<uses-permission android:name="android.permission.NFC" />

Объявление о поддержке NFC:

<uses-feature android:name="android.hardware.nfc" android:required="true" />

Фильтры намерений (Intent Filters): Это позволяет вашей Activity получать уведомления, когда обнаруживается NFC-метка. Обязательно используйте launchMode="singleTop" или singleTask, чтобы onNewIntent() вызывался при обнаружении метки, когда Activity уже запущена.

<activity
    android:name=".YourNfcHandlingActivity"
    android:launchMode="singleTop">
    <intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:mimeType="*/*" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.nfc.action.TECH_DISCOVERED"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
    <intent-filter>
        <action android:name="android.nfc.action.TAG_DISCOVERED"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

Начало работы с кодом

Использование SDK начинается с инициализации NfcAdmin и NfcHandler. NfcAdmin — это основная точка входа, которая управляет режимами работы NFC-адаптера, а NfcHandler отвечает за логику взаимодействия с конкретным типом метки.

class YourNfcHandlingActivity : AppCompatActivity() {

    private lateinit var nfcAdmin: NfcAdmin

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // ...
        setupNfc()
    }

    private fun setupNfc() {
        // Создаем экземпляр NfcAdmin
        nfcAdmin = NfcAdmin(
            activity = this,
            isAdminLogEnabled = true, // Включаем логирование для отладки
            nfcStateListener = yourStateListener // Слушатель изменений состояния NFC
        )
        
        // Создаем обработчик для NDEF-меток с текстовыми данными
        val ndefTextHandler = NfcHandler(
            parser = YourTextDataParser(), // Пользовательский парсер
            preparer = YourTextDataPreparer(), // Пользовательский preparer
            nfcListener = yourNfcListener // Слушатель для результатов чтения/записи
        )
        
        // Добавляем обработчик в NfcAdmin
        nfcAdmin.addHandlers(ndefTextHandler)
    }

    override fun onResume() {
        super.onResume()
        // Регистрируем наблюдатель состояния NFC и включаем режим чтения
        nfcAdmin.registerNfcStateReceiver()
        nfcAdmin.enableReaderMode()
    }

    override fun onPause() {
        super.onPause()
        // Отключаем режим чтения и наблюдатель при паузе Activity
        nfcAdmin.disableReaderMode()
        nfcAdmin.unregisterNfcStateReceiver()
    }
}

Для чтения и записи данных достаточно вызвать соответствующие методы в NfcHandler. Например, чтобы записать данные, нужно вызвать prepareToWrite(data) и поднести метку к устройству. Результат операции будет передан в NfcListener.

Заключение

TAO NFC SDK (Android) — это отличный инструмент для разработчиков, которые хотят добавить NFC-функциональность в свои приложения, избежав при этом сложностей нативного API. Он предоставляет надёжную, расширяемую и простую в использовании основу для работы с NFC. Если вы ищете способ упростить разработку, этот SDK заслуживает вашего внимания.

Скачать последний релиз и код демо-приложения

Комментарии (1)


  1. kirich1409
    01.09.2025 19:02

    Большая работа проделана. Спасибо!