На заметку! Тип записи TNF_UNCHANGED используется, когда полезная загрузка сообщения из-за большого своего размера охватывает множество экземпляров NdefRecord. Поскольку Google позаботится об обработке разделенных экземпляров NdefRecord самостоятельно, вы никогда не столкнетесь со значением типа TNF_UNCHANGED. Пакет android.nfc комбинирует фрагменты полезной нагрузки в один крупный объект NdefRecord.
Следующим полем в NdefRecord является идентификатор этого экземпляра NdefRecord. Прочитанный экземпляр NdefRecord может как иметь идентификатор, так и не иметь его.
Наконец, далее следует полезная нагрузка. Это может быть довольно большой массив байтов, но в зависимости от типа NdefRecord есть некоторые внутренние структуры, о которых следует знать. Для типа записи RTD URI первый байт в байтовом массиве полезной нагрузки представляет начало URI. Например, значение этого байта представляет http://www. и это будет находиться перед остальной частью URI в оставшейся полезной нагрузке. Для типа записи Text первый байт в байтовом массиве полезной нагрузки представляет “кодировку байта состояния”, которая идентифицирует систему кодировки текста (UTF- или UTF-), а также длину байтового массива языка, следующего непосредственно за полем состояния. После поля языка идет текст. В случае типа SmartPoster все несколько сложнее, т.к. NdefRecord содержит экземпляр NdefMessage, который, в свою очередь, содержит еще экземпляры NdefRecord. Последняя часть NdefRecord может включать записи Title (подобно записи Text), запись URI (как и ранее), запись рекомендуемого действия, запись размера, запись значка и запись типа. Значение рекомендуемого действия показывает, что приложение может делать с данными SmartPoster. Обратите внимание, что следующие значения не являются частью документации по Android-классу NdefRecord:
Очевидно, что для прочитанной метки имеет смысл выполнить рекомендуемое действие. Например, если в поле TNF содержится TNF_WELL_KNOWN, типом является RTD_SMART_POSTER и рекомендуемое действие выглядит как (DO_ACTION) в комбинации с URL-адресом веб-страницы, может понадобиться запустить браузер с этим URL- адресом. Запись размера позволяет метке сообщать, насколько большим является контент, доступный по этому URL-адресу. Если метка ссылается на загружаемый исполняемый модуль, запись размера может сообщать, насколько велик загружаемый файл. Запись значка содержит изображение, которое устройство будет отображать вместе с заголовком и URI.
Запись типа принимает значения, отличные от типов TNF и NdefRecord. Она предназначена для меток SmartPoster и в этом случае представляет тип MIME контента, доступного по указанному URI. Устройство может выяснить, что этот объектный тип не поддерживается, и не загружать его.
Единственной обязательной подзаписью для метки SmartPoster является запись URI, и для SmartPoster она должна быть только одна. Допускается иметь множество записей Title, причем каждая запись может быть предназначена для своего языка. Можно также иметь множество записей значков, при условии, что каждая из них обладает отличающимся типом MIME для своего формата.
Для всех типов меток NFC, включая метки NDEF, можно применять следующий код для получения экземпляра метки конкретного типа:
NfcA nfca = NfcA.get(tag);
С помощью этого нового объекта можно обращаться к специфическим методам, соответствующим данному типу метки. Классы NdefMessage и NdefRecord очень полезны для работы с данными меток Ndef и NdefFormatable. Другие классы меток имеют методы для обработки своих типов меток и их данных. Существуют методы для чтения и записи данных в метку. Обратите внимание, что запись в метку — это не то же самое, что эмуляция карты устройством. Процесс записи в метку предусматривает размещение устройства поблизости к метке, допускающей запись (естественно, при наличии соответствующих прав доступа). Эмуляция карты отличается от этого.
Опубликовал katy
February 19 2015 17:36:25 ·
0 Комментариев ·
2117 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.