Приложения для работы с NFC
Существует достаточно много бесплатных приложений для работы с NFC. Таковые доступны для всех NFC поддерживаемых мобильных платформ, включая Android, Windows Phone и Blackberry. Эти приложения позволяют кодировать свои NFC метки, запускать приложения, обновлять настройки телефона и многое другое!
NFC приложения для Android NFC TagWriter от NXPЛучшее в наше время NFC приложение для кодировки веб-адреса, текста, звонков, действий и многое другое! Мы писали о пошаговой инструкции кодировки тут
Совет:
В меню настройки изменить ‘UI Mode’ на ‘Advanced Features’ для разблокировки более сложных параметров кодирования.
Доступно на Android.
Ранее известное как NFC Task Launcher это приложение предлагает чрезвычайно широкий набор возможностей и теперь также может включать Bluetooth и Wi-Fi .
Доступно на Android. Нажмите, чтобы скачать из Play Store.
Отлично подходит для разработчиков и тех, кто хочет лучше понять NFC технологию. Это приложение предоставляет пользователям полный спектр технической информации с помощью простого сканирования NFC меток. Техническая информация включает тип IC, набор данных NFC и информацию о распределении памяти в чипе.
Доступно на Android. Нажмите, чтобы скачать из Play Store.
Отключите будильник, коснувшись к NFC метке. Это приложение также предлагает огромный спектр дополнительных функций, таких как случайные головоломки с различными сигналами и др.
Доступно на Android.
Обширное NFC приложение предназначенное для разработчиков и энтузиастов. Это приложение позволяет пользователям кодировать URL (веб- адреса), SMS, электронную почту, социальные сети (Twitter, Facebook и т.д.), так же дополнительные возможности, такие как запись мультисообщений и просмотра исходных данных NDEF.
Доступно на Windows Phone. Нажмите, чтобы загрузить из App Store.
Коснитесь телефоном для автоматического запуска приложения Bluetooth, Wi-Fi и др. Действия могут быть из двух разделов: ‘System Apps’ и ‘Popular Apps’ из которых более ста поддерживаются из Windows Store
Доступно на Windows Phone. Нажмите, чтобы загрузить из App Store.
Это приложение позволяет записывать голосовые сообщения и хранить их на NFC метке. Кто-то может просто коснуться NFC метку и слушать записанное сообщение. Хорошее средство для напоминании о себе и своего голоса. Самое интересное приложение может автоматически перевести голосовое сообщение на выбранный язык.
Доступно на Windows Phone.
- Перевод
NFC (near field communication) – стандартизированная технология обмена данными на короткие расстояния, позволяющая осуществлять взаимодействия между двумя электронными устройствами простым и интуитивно понятным способом. Например, с помощью оснащенного NFC смартфона вы можете делать покупки, раздавать визитные карты, скачивать купоны на скидки и так далее. Множество новых применений для NFC будет найдено в ближайшее время.
Эта статья описывает технологии, использующие NFC и способы их применения на сегодняшний день. Также показано, как использовать NFC в Android приложениях и, наконец, приведены два примера NFC приложений с исходными кодами.
Технология NFC имеет три режима: эмуляция NFC-карты, пиринговый режим и режим чтения/записи.
В режиме эмуляции карты NFC представляет собой аналог чипованной RFID карты со своим модулем безопасности, позволяющим защищать процесс покупки. В пиринговом режиме вы можете делиться информацией, например визитной карточкой, с другими NFC устройствами. В также можете устанавливать WiFi или Bluetooth соединения посредством 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.
Пиринговый режимДва NFC устройства могут легко взаимодействовать друг с другом напрямую, обмениваясь небольшими файлами. Для установления Bluetooth/WiFi соединения необходимо обменяться XML файлом специального формата. В этом режиме ЭБ не используется.Режим записи/чтенияВ данном режиме NFC устройство может читать и записывать NFC метки. Хорошим примером применения является чтение информации с оснащенных NFC «умных» постеров.Основными классами в 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 обнаруживает метку, система доставки автоматически создает пакет целевой информации. Если в телефоне имеется несколько приложений, способных работать с этой целевой информаций, пользователю будет показано окно с предложением выбрать одно из списка. Система доставки меток определяет три типа целевой информации, в порядке убывания приоритета: NDEF_DISCOVERED, TECH_DISCOVERED, TAG_DISCOVERED.
Здесь мы используем целевой фильтр для работы со всеми типами информации начиная с TECH_DISCOVERED до ACTION_TECH_DISCOVERED. Файл nfc_tech_filter.xml используется для всех типов, определенных в метке. Подробности можно найти в документации Android . Рисунок ниже показывает схему действий при обнаружении метки.
Минимальную версию SDK, которую должно поддерживать ваше приложение - 10, объявите об этом в файле AndroidManifest.xml
In the onCreate function,you can apply the NfcAdapter:
public void onCreate(Bundle savedInstanceState) {
……
adapter = NfcAdapter.getDefaultAdapter(this);
……
}
Следующий целевой вызов демонстрирует функцию чтения. Если широковещательное сообщение системы равняется 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).getRecords();
byte payload = firstRecord.getPayload();
int payloadLength = payload.length;
int langLength = payload;
int textLength = payloadLength - langLength - 1;
byte text = new byte;
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();
}
В зависимости от прочитанной информации вы можете выполнить дополнительные действия, такие как запуск какого-либо задания, переход по ссылке и т.д.
Последний блок в зоне называется трейлером и используется обычно для хранения локального ключа чтения/записи. Он содержит два ключа, А и В, 6 байт длиной каждый, по умолчанию забитые 00 или FF, в зависимости от значения MifareClassic.KEY_DEFAULT.
Для записи на карту Mifare вы, прежде всего, должны иметь корректное значение ключа (что играет защитную роль), а также успешно пройти аутентификацию.
res/xml/nfc_tech_filter.xml:
android.nfc.tech.MifareClassic
Пример того, как читать карту MifareClassic:
Private void processIntent(Intent intent) { Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); for (String tech: tagFromIntent.getTechList()) { System.out.println(tech); } boolean auth = false; MifareClassic mfc = MifareClassic.get(tagFromIntent); try { String metaInfo = ""; //Enable I/O operations to the tag from this TagTechnology object. mfc.connect(); int type = mfc.getType(); int sectorCount = mfc.getSectorCount(); String typeS = ""; switch (type) { case MifareClassic.TYPE_CLASSIC: typeS = "TYPE_CLASSIC"; break; case MifareClassic.TYPE_PLUS: typeS = "TYPE_PLUS"; break; case MifareClassic.TYPE_PRO: typeS = "TYPE_PRO"; break; case MifareClassic.TYPE_UNKNOWN: typeS = "TYPE_UNKNOWN"; break; } metaInfo += "Card type:" + typeS + "n with" + sectorCount + " Sectorsn, " + mfc.getBlockCount() + " BlocksnStorage Space: " + mfc.getSize() + "Bn"; for (int j = 0; j < sectorCount; j++) { //Authenticate a sector with key A. auth = mfc.authenticateSectorWithKeyA(j, MifareClassic.KEY_DEFAULT); int bCount; int bIndex; if (auth) { metaInfo += "Sector " + j + ": Verified successfullyn"; bCount = mfc.getBlockCountInSector(j); bIndex = mfc.sectorToBlock(j); for (int i = 0; i < bCount; i++) { byte data = mfc.readBlock(bIndex); metaInfo += "Block " + bIndex + " : " + bytesToHexString(data) + "n"; bIndex++; } } else { metaInfo += "Sector " + j + ": Verified failuren"; } } promt.setText(metaInfo); } catch (Exception e) { e.printStackTrace(); } }
Об авторахSongyue Wang и Liang Zhang - инженеры в Intel Software and Service Group, разрабатывающие мобильные приложения, в том числе и для Android, и оптимизирующие их под платформу х86.NFC Task Launcher - это мощная и удобная программа, которая позволяет реализовать часть потенциала, который заложен в новомодную технологию NFC. С помощью этих инструментов вы сможете создать профили настроек, которые будут автоматически активироваться на устройстве при соприкосновении с NFC-меткой.
Программу разработала студия Tagstand, которая вместе с приложением также начала продавать собственный набор NFC-меток. При этом не стоит пугаться, так как программа поддерживает любые универсальные метки, которые можно заказать в интернет магазинах.
Возможности NFC Task LauncherДанная программа умеет переключать любые функции и настройки смартфона, а также запускать различные профили, приложения и вообще все, что душа пожелает. По умолчанию, в NFC Task Launcher уже будет записано несколько базовых профилей: Car (активирует Bluetooth, запускает карты), Office (отключает звуки, включает Wi-Fi), Bedside (отключает все звуки, запускает будильник) и многое другое.Вы можете сами создавать любые конфигурации, выбирая более чем из 200-пунктов настроек. После того, когда вы выберете понравившуюся вам конфигурацию, достаточно будет просто поднести смартфон задней стороной к NFC-метке, и на нее тут же произведется запись. После этого для считывания данных достаточно будет просто прикладывать к метке смартфон.
Модели, поддерживающие NFC:
- Sony Xperia Sola
- HTC One X
- Samsung Galaxy S III
- Nexus 7
- Samsung Galaxy Nexus
- и практически все новые смартфоны от 2012 года.
Самый удобный и проверенный способ - это купить NFC-метки на интернет площадках Ebay и Aliexpress. Заходите на эти сайты и набирайте в поиске "NFC Tag", после чего смотрите, где будет написано "free shipping" и страна отправителя Китай. Заказывать метки из Америки бессмысленно и очень дорого, так как они ничем не отличаются друг от друга.
При выборе продавца ориентируйтесь на цену ~1$ (30 рублей) за 1 метку. Продают их обычно пачками от 10 штук, поэтому придется заказать сразу набор, что выльется вам всего в 300 рублей. Для сравнения, наши продавцы просят по 300-500 рублей за 1 штуку.
Сами по себе NFC-метки универсальны, так что не переживайте на счет того, что смартфоны Sony читают только метки от Sony и т.д. Любое устройство, поддерживающее технологию NFC, способно прочитать любую метку.
Недостатки:
- Отсутствие русского языка;
- Невозможность переключать GPS (требуется Root).