Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Выявление и прослушивание поддерживаемых объектов






Для выявления объектов, которые поддерживаются платформой, использовавшей метод DiscoveryManager.getSupportedTargetTypes(), который возвращает массив TargetTypes. Затем для каждого типа объекта регистрируется прослушивающее устройство объекта. Следующий фрагмент кода демонстрирует метод registerTargetListener(), который запрашивает платформу о поддерживаемых объектах, затем об объектах типа ISO 14443-4 (совместимых с бесконтактными смарт-картами), он регистрирует устройство прослушивания объекта:

 

Листинг 1 – Выявление объектов и их регистрация

import javax.microedition.contactless.TargetListener;: DiscoveryManager dm = DiscoveryManager.getInstance();: /** * Discover supported targets, registers listeners * * @param targetListener the target listener */public void registerTargetListeners(TargetListener targetListener) { // Discover supported types TargetType[] tp = DiscoveryManager.getSupportedTargetTypes(); try { // Register listener for each of the supported types for (int i=0; i< tp.length; i++) { if (tp[i].equals((TargetType.ISO14443_CARD))) { dm.addTargetListener(targetListener, TargetType.ISO14443_CARD); } else...:: } } } catch (Exception e) { //... } }

Заметим, что API бесконтактных коммуникаций определяют следующие типы объектов: ISO14443_CARD, NDEF_TAG, RFID_TAG и VISUAL_TAG.

Когда нужные объекты выявлены и соответствующие приемные устройства зарегистрированы, как это показано выше, программная реализация будет использовать метод TargetListener.targetDetected(TargetProperties[]), если детектирован новый объект:

 

Листинг 2 – Прослушивание приемных устройств зарегистрированных объектов

import javax.microedition.contactless.TargetListener;: /** * A new target has been detected. This method is invoked by * the platform. * * @param prop the properties for the detected target */public void targetDetected(TargetProperties[] prop) { for (int i = 0; i < prop.length; i++) { // Get UID String uid = prop[i].getUid(); // Get Connection Classes Class[] classes = prop[i].getConnectionNames(); // Get Target Types TargetType[] types = prop[i].getTargetTypes(); // Connect to each Target String url = prop[i].getUrl(); try { // Open NDEFTagConnection to the target NDEFTagConnection conn = (NDEFTagConnection) Connector.open(url);:: } catch (IOException e) { //... } }}

Метод targetDetected() обычно выполняет следующее:

 

1. Метод targetDetected получает TargetProperties для детектированных объектов,

2. Для каждого детектированного объекта, его URL извлекается из перечня свойств объекта,

3. Соединение с объектом осуществляется с помощью GCF,

4. Производится обмен данными,

5. Входные сообщения обрабатываются в соответствии с их атрибутами,

6. По завершении, все ресурсы освобождаются, а соединения разрываются.

Следует заметить, что чтение меток RFID требует понимания того, как работают команды ISO14443 I/O и ADPU.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.