Одним из первых соображений при проектировании приложения, которое получает и обрабатывает информацию меток NFC, является то, что вы взаимодействуете с физической меткой в среде, окружающей устройство, через аппаратный интерфейс. Вызовы API-интерфейса NFC являются блокирующими, а это значит, что возврат происходит не так быстро, как требуется, из-за чего методы, связанные с метками, должны вызываться в отдельном потоке, а не в главном потоке пользовательского интерфейса.
Данные, связанные с меткой NFC, будут находиться в дополнительном пакете полученного намерения. После получения намерения доступ к данным осуществляется с помощью следующего кода:
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA TAG);
String[] techlists = tag.getTechLists;
Если фильтр намерений очень точный, тип полученной метки уже известен. Но если имеется выбор технологий метки, понадобится опросить списки технологий, чтобы выяснить, какие технологии представлены меткой. Каждая строка — это имя класса технологии, перечисленного обнаруженной меткой.
Если выяснилось, что android.nfc.tech.Ndef поддерживается меткой, данные NDEF можно извлечь напрямую:
Теоретически мы можете получить значение null, если намерение не содержит сообщений NDEF. В противном случае вы должны иметь возможность разобрать присланные сообщения NDEF. Можно прочитать объекты NdefMessage из намерения, подсчитать их и затем для каждого объекта извлечь экземпляры NdefRecord, которые он содержит.
В NdefRecord начинается самое интересное. По адресу http://www.nfc-forum.org/ specs/ следует ознакомиться со спецификациями NFC. Для доступа к ним понадобится принять условия лицензионного соглашения с форумом NFC. В принципе, это бесплатно, но потребуется указать свою фамилию, адрес, номер телефона и адрес электронной почты. Как вариант, можно просмотреть демонстрационное приложение NfcDemo, предоставляемое Google. Это приложение включено в пакет Android SDK. и находится в папке samples. Исходный код приложения NfcDemo доступен по адресу http:// developer.android.com/resources/samples/NFCDemo/index.html. Этот пример приложения получает намерения NFC и отображает содержимое объектов NdefRecord в ListView. Сложность связана с тем, что существует множество типов NdefRecord, которые могут быть получены в каждом объекте NdefMessage. Каждый такой тип служит разным целям. Например, тип Text содержит текст на указанном языке. Тип Uri хранит указатель ресурса URI. Из всех известных типов записей NDEF в демонстрационном приложении NfcDemo используются только три, два из которых были только что описаны, а третий тип — SmartPoster — будет рассмотрен очень скоро.
Опубликовал katy
February 18 2015 15:40:52 ·
0 Комментариев ·
3644 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.