Презентация - 14

advertisement
Разработка NFC-приложений
под Android
Михаил Дударев
Licel, 2014
О нас
• Михаил Дударев, работает с Java Security более 15 лет,
основатель проекта jCardSim, Java Card симулятора,
завоевавшего награду Duke's Choice Award 2013, со-основатель
компании Licel.
• Licel занимается созданием решений для защиты программного
от нелегального использования и модификации третьими
лицами для Java и Android платформ
Краткое содержание
• Немного о стандартах
• NFC API Android
• Пишем приложение BlackTag
Близкие контакты третьей степени
Что такое NFC ?
• Near Field Communication – технология
беспроводного высокочастотного взаимодействия
малого радиуса действия
• Основана на индукции магнитного поля
• Поддерживаются устройства как с источником
питания так и без него
• Взаимодействие устанавливается в радиусе 10 см
или при непосредственном контакте устройств
Особенности NFC
• Расширение стандарта RFID, позволяющее двухстороннее
взаимодействие между устройствами
• Обратная совместимость с ISO 14443 (бесконтактные смарткарты)
• Работает на свободной по всему миру частоте 13.56 Mhz
• Рабочая дистанция со стандартной компактной антенной до 10
см.
• Скорость передачи данных 106,212 и 424 Кбит/с
NFC Reader + NFC Tag
Источник
питания
Радиомодуль
Контроллер
Контроллер
Антенна
NFC Reader (Смартфон)
Память
NFC Tag
Схема взаимодействия
Чтение/Запись
Чтение/Запись
Чтение/Запись
Пассивный режим
Активный режим
Инициатор генерирует
несущее электромагнитное
поле, а отвечающее
устройство отвечает
модуляцией поля
Оба устройства генерируют
свои несущие поля,
взаимодействие
осуществляется путем
наложения полей. При
ожидании данных, устройство
выключает свое поле
Режимы работы
Cчитывание/запись
Устройство с поддержкой
NFC может
считывать/записывать
данные на NFC-метку.
Режимы работы
P2P
NFC-устройства могут
обмениваться данными друг
с другом
Режимы работы
Эмуляция карты
NFC-устройство выступает в
роли бесконтактной
микропроцессорной карты
Спецификации NFC
NDEF
Формат данных передаваемых между
NFC устройствами и метками
RTP
Типы записей (Text, URI, Smart Poster,
Generic Control, Signature)
LLCP
Протокол для P2P-взаимодействия
Connection Handover
Способ установления соединения через
другие беспроводные технологии
Tag Types (1/2/3/4)
Типы NFC-меток
NDEF
NDEF-сообщение
Запись 1
Запись 2
Заголовок
Данные
Идентификатор
Длина
Запись 3
Тип
NDEF-сообщение с URI
D1 01 0B 55 03 64 65 76 63 6F 6E 66 2E 72 75
Данные – http://devconf.ru
ID
сообщения
Размер поля
длины
Длина
данных –
11 байт
Тип Данных – URI, 0x55 – ASCII код для ‘U’
NFC-метки
Type I
• Самые дешевые по цене
–
–
–
–
–
Основаны на стандарте ISO-14443A
Поддерживают чтение/запись, пользователь может установить режим
только чтение
96 байт памяти, расширяемой до 2Кб
Скорость обмена данными 106Кбит/с
Нет защиты от коллизии данных
Type 2
• Аналогичны типу I и произошли от NXP/Phillips MIFARE Ultralight
–
–
–
–
–
Основаны на стандарте ISO-14443A
Поддерживают чтение/запись, пользователь может установить режим
только чтение
96 байт памяти, расширяемой до 2Кб
Скорость обмена данными 106Кбит/с
Защита от коллизии данных
Type 3
• Произошли от Sony FeliCa меток, ГОРАЗДО дороже типов I и 2
–
–
–
–
–
Основаны на японском стандарте JIS X 6319-5
При производстве задается режим доступа – только чтение/чтение-запись
Объем памяти до 1Мб на сервис
Скорость обмена 212 или 424 Кбит/с
Защита от коллизии данных
Type 4
• Аналогичны Type I и произошли от NXP DESFire
–
–
–
–
–
Основаны на стандарте ISO-14443A
При производстве задается режим доступа – только чтение/чтение-запись
Объем памяти до 32Кб на сервис
Скорость обмена 106, 212 или 424 Кбит/с
Защита от коллизии данных
NFC API Android
NFC на Android
• При обнаружении другого NFC-устройства запускается служба
маршрутизации меток
• Служба маршрутизации меток получает данные от другого NFC
устройства и выполняет необходимые действия для его
обработки
• Служба маршрутизации меток работает с Intent и Intent Filter
NFC Чтение/Запись
Activity I
<Intent Filter>
Служба
маршрутизации
Создание
меток
Intent
NDEF
Activity N
<Intent Filter>
Служба маршрутизации меток
• ACTION_NDEF_DISCOVERED – используется для старта Activity в
случае если метка содержащая NDEF-сообщение прочитано и
содержит поддерживаемый тип данных, имеет приоритет перед
другими intent
• ACTION_TECH_DISCOVERED – если нет Activity с
ACTION_NDEF_DISCOVERED запускается приложение с этим
intent. Так же intent запускается если в NDEF-сообщении
содержится незнакомый тип данных
• ACTION_TAG_DISCOVERED – запускается, если нет Activity c
ACTION_NDEF_DISCOVERED или ACTION_TECH_DISCOVERED
Служба маршрутизации меток
Служба маршрутизации меток
Служба маршрутизации меток
Чтение NDEF-сообщений
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="http"
android:host=“devconf.ru”
/>
</intent-filter>
Чтение NDEF-сообщений
public void onResume() {
super.onResume();
...
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {
Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
if (rawMsgs != null) {
msgs = new NdefMessage[rawMsgs.length];
for (int i = 0; i < rawMsgs.length; i++) {
msgs[i] = (NdefMessage) rawMsgs[i];
}
}
}
}
Формирование NDEF-сообщений
NdefRecord uriRecord = new NdefRecord(
NdefRecord.TNF_ABSOLUTE_URI ,
"http://devconf.ru".getBytes(Charset.forName("US-ASCII")),
new byte[0], new byte[0]);
BlackTag
• Вам надоело то, что ваши друзья во время вечеринок уделяют
больше времени своему смартфону чем общению ?
BlackTag (Идея)
• Компания друзей собирается в кафе
• На столе есть наклейки в виде NFC-меток для игры BlackTag
• Когда смартфон кладется на NFC-метку, активируется
приложение, которое отслеживает факт использования
телефона или его удаление от метки
• Если в течении заданного времени условие нарушается,
проигравший выполняет штрафное задание, например покупает
всем … КОФЕ 
BlackTag (Реализация)
•
•
•
•
•
Добавляем Intent на событие появления/удаления NFC-метки
Обрабатываем содержимое NDEF-сообщения
Авторизация через Facebook
Таймер и наказания
Прикручиваем BackEnd
Вместо заключения
Download