Упрощаем NFC: обзор нового SDK для Android разработки

от автора

Работа с 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/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *