Разработка NFC приложений для Android / Хабр

Введение в разработку nfc под android

Android поддерживает NFC с помощью двух пакетов: android.nfc и android.nfc.tech.

Основными классами в android.nfc являются:

NfcManager: Устройства под Android могут быть использованы для управления любыми обнаруженными NFC адаптерами, но поскольку большинство Android устройств поддерживают только один NFC адаптер, NfcManager обычно вызывается с getDefaultAdapter для доступа к конкретному адаптеру.

NfcAdapter работает как NFC агент, подобно сетевому адаптеру на ПК. С его помощью телефон получает доступ к аппаратной части NFC для инициализации NFC соединения.

NDEF: Стандарты NFC определяют общий формат данных, называемый NFC Data Exchange Format (NDEF), способный хранить и передавать различные типы объектов, начиная с MIME и заканчивая ультра-короткими RTD-документами, такими как URL. NdefMessage и NdefRecord – два типа NDEF для определенных NFC форумом форматов данных, которые будут использоваться в коде-примере.

Tag: Когда устройство Android обнаруживает пассивный объект типа ярлыка, карты и т.д., он создает объект типа «метка», помещая его далее в целевой объект и в заключении пересылая в соответствующий процесс.

Пакет android.nfc.tech также содержит множество важных подклассов. Эти подклассы обеспечивают доступ к функциям работы с метками, включающими в себя операции чтения и записи. В зависимости от используемого типа технологий, эти классы разбиты на различные категории, такие как NfcA, NfcB, NfcF, MifareClassic и так далее.

Когда телефон со включенным NFC обнаруживает метку, система доставки автоматически создает пакет целевой информации. Если в телефоне имеется несколько приложений, способных работать с этой целевой информаций, пользователю будет показано окно с предложением выбрать одно из списка.

Здесь мы используем целевой фильтр для работы со всеми типами информации начиная с TECH_DISCOVERED до ACTION_TECH_DISCOVERED. Файл nfc_tech_filter.xml используется для всех типов, определенных в метке. Подробности можно найти в

. Рисунок ниже показывает схему действий при обнаружении метки.

‎instant nfc

Instant NFC – это простой и быстрый инcтрумент для чтения ваших NFC меток.

Всего одно касание – и содержимое метки у вас на экране!

Переходите на сайт или звоните без лишних действий и ожидания.
Смотрите сохранённые метки в любое время.
Читайте NFC мгновенно.

При возникновении проблем/пожеланий оставьте отзыв или пишите мне на почту.

Примечания:
– Приложение работает только с данными в формате NDEF.
– Совместимо с iPhone 7 (и выше) и iOS 11.

‎nfc tag reader and writer

To use the NFC Tag Reader you need following Requirements:
– Your device must support NFC hardware.
– NFC Chip-set card or Sticker.

Читайте ещё про NFC:  Списали деньги с карты Сбербанка – что делать, узнать куда ушли, как вернуть если минус на балансе

Features of using NFC tag reader :

1. Its compatible with most famous tags.
2. No internet connection required.
3. You can read and write below type of performance.
– Contact details
– Link content
– Email data
– Geo location
– Launch application
– Plane text
– SMS

4. You can erase the tag’s previous data.
5. History

To use NFC Tag Reader, you have just to hold a tag or a card against the /front top of your device to read it. NFC Reader lets you copy the content of the tag.

‎nfc tools

NFC Tools, позволит вам считывать и создавать собственные NFC-теги.

NFC Tools считывает и записывает Ваши NFC-метки через простой и удобный интерфейс.
Поднося своё устройства к NFC-метке, Вы можете считывать её содержимое и взаимодействовать с этими данными.

функция “Чтение” предоставляет Вам следующую информацию:

– производитель метки
– тип метки (например: Mifare Ultralight, NTAG213)
– стандарт метки (например: NFC Forum Type 2)
– технология (например: NFC A)
– серийный номер (например: 04:85:c8:5a:40:2b:80)
– размер метки и данные на ней
– возможны ли запись на метку
– все данные на метке (формат NDEF)

NFC Tools может записывать стандартную информацию, совместимую с любым NFC-устройством, на Ваши теги.
К примеру, Вы можете хранить запись VCARD и легко делиться своими контактами, открывать ссылки, передавать телефонные номера или местоположение.

функция “Запись” позволяет Вам записать стандартизированные данные, такие как:
– простой текст
– ссылка на веб-сайт
– адрес электронной почты
– контакт
– номер телефона
– заготовка текстового сообщения
– адрес или местоположение
– конфигурация Wi-Fi или Bluetooth
– персонализированные данные

Функция записи позволяет Вам добавлять любые данные, какие Вы только пожелаете.
Таким образом, Вы можете записывать самую разнообразную информацию на Вашу метку.

Также это приложение позволяет Вам сохранить содержимое Вашей метки для последующего доступа.

NFC Tools был протестирован со следующими NFC-метками:
– NTAG 203, 210, 210u, 212, 213, 213TT, 215, 216, 413 DNA, 424 DNA
– Ultralight, Ultralight C, Ultralight EV1
– ICODE SLI, SLI-S, SLIX, SLIX-S, SLIX-L, SLIX2, DNA
– DESFire EV1, EV2, EV3
– ST25TV, ST25TA
– Felica

Читайте ещё про NFC:  Мобильные платежи и оплата в приложении

Если у Вас возникли какие-либо проблемы, не стесняйтесь обращаться ко мне.

Примечания:
– Совместимо с iPhone 7 (и выше) и iOS 13.

Архитектура технологии nfc

NFC основана на RFID технологии с частотой 13.56 МГц и рабочей дистанцией до 10 см. Скорость обмена данными составляет до 424 кб/сек. По сравнению с другими коммуникационными технологиями, основным преимуществом NFC является быстрота и простота использования. На рисунке ниже видно расположение NFC среди других коммуникационных технологий.

Технология NFC имеет три режима: эмуляция NFC-карты, пиринговый режим и режим чтения/записи.

В режиме эмуляции карты NFC представляет собой аналог чипованной RFID карты со своим модулем безопасности, позволяющим защищать процесс покупки. В пиринговом режиме вы можете делиться информацией, например визитной карточкой, с другими NFC устройствами.

Об авторах

Songyue Wang и Liang Zhang — инженеры в Intel Software and Service Group, разрабатывающие мобильные приложения, в том числе и для Android, и оптимизирующие их под платформу х86.

Пиринговый режим

Два NFC устройства могут легко взаимодействовать друг с другом напрямую, обмениваясь небольшими файлами. Для установления Bluetooth/WiFi соединения необходимо обменяться XML файлом специального формата. В этом режиме ЭБ не используется.

Пример 1. разработка nfc приложения для чтения/записи меток.

Следующий пример показывает функции чтения/записи NFC метки. Для того, чтобы получить доступ к аппаратной части NFC и корректно обрабатывать NFC информацию, объявите эти позиции в файле AndroidManifest.xml.

Минимальную версию SDK, которую должно поддерживать ваше приложение — 10, объявите об этом в файле AndroidManifest.xml


Следующий целевой вызов демонстрирует функцию чтения. Если широковещательное сообщение системы равняется NfcAdapter.ACTION_TAG_DISCOVERED, тогда вы можете считать информацию и показать ее.

@Override
	    protected void onNewIntent(Intent intent){
	        if(NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())){
	        mytag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);  // get the detected tag
	        Parcelable[] msgs =
	intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
	            NdefRecord firstRecord = ((NdefMessage)msgs[0]).getRecords()[0];
	            byte[] payload = firstRecord.getPayload();
	            int payloadLength = payload.length;
	            int langLength = payload[0];
	            int textLength = payloadLength - langLength - 1;
	            byte[] text = new byte[textLength];
	            System.arraycopy(payload, 1 langLength, text, 0, textLength);
	            Toast.makeText(this, this.getString(R.string.ok_detection) new String(text), Toast.LENGTH_LONG).show();
	                    }
	    }

Следующий код демонстрирует функцию записи. Перед тем, как определить значение mytag, вы должны убедиться, что метка определена и только потом вписать в нее свои данные.

	If (mytag==Null){
	    ……
	}
	else{
	……
	write(message.getText().toString(),mytag);
	……
	}
	    private void write(String text, Tag tag) throws IOException, FormatException {
	        NdefRecord[] records = { createRecord(text) };
	        NdefMessage  message = new NdefMessage(records);
	// Get an instance of Ndef for the tag.
	        Ndef ndef = Ndef.get(tag); // Enable I/O
	        ndef.connect(); // Write the message
	        ndef.writeNdefMessage(message); // Close the connection
	        ndef.close();
	    }

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

Читайте ещё про NFC:  Samsung Pay в России. Как подключить и как пользоваться Samsung Pay.

Пример 2. разработка nfc-приложения, использующего карты mifareclassic

В этом примере для чтения мы будем использовать карты MifareClassic и соответствующий им тип метки. Карты MifareClassic широко используются для различных нужд, таких как идентификация человека, автобусный билет и т.д. В традиционной карте MifareClassic область хранения разбита на 16 зон, в каждой зоне 4 блока, и каждый блок может хранить 16 байт данных.

Последний блок в зоне называется трейлером и используется обычно для хранения локального ключа чтения/записи. Он содержит два ключа, А и В, 6 байт длиной каждый, по умолчанию забитые 00 или FF, в зависимости от значения MifareClassic.KEY_DEFAULT.

Для записи на карту Mifare вы, прежде всего, должны иметь корректное значение ключа (что играет защитную роль), а также успешно пройти аутентификацию.

Режим записи/чтения

В данном режиме NFC устройство может читать и записывать NFC метки. Хорошим примером применения является чтение информации с оснащенных NFC «умных» постеров.

Режим эмуляции nfc карты

NFC модуль обычно состоит из двух частей: NFC контроллера и элемента безопасности (ЭБ). NFC контроллер отвечает за коммуникации, ЭБ – за шифрацию и дешифрацию чувствительной к взлому информации.

ЭБ подключается к NFC контроллеру посредством шины SWP (Single Wire Protocol) или DCLB (Digital Contactless Bridge). Стандарты NFC определяют логический интерфейс между хостом и контроллером, позволяя им взаимодействовать через RF-поле. ЭБ реализуется с помощью встроенного приложения или компонента ОС.

Существует три варианта реализации ЭБ: можно встроить его в SIM-карту, SD-карту или в NFC чип.

Операторы связи, такие как CMCC (China Mobile Communication Corporation), Vodafone или AT&T обычно используют решение на SIM-карте, поощряя своих абонентов бесплатной заменой старых SIM-карт на новые, оснащенные NFC.

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

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

Adblock
detector