Работа с 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 заслуживает вашего внимания.
ссылка на оригинал статьи https://habr.com/ru/articles/942474/
Добавить комментарий