Работа с 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 заслуживает вашего внимания.
kirich1409
Большая работа проделана. Спасибо!