Поиск сервиса

March 7, 2012 by admin Комментировать »

Когда вы обнаружили удаленное Bluetooth устройство, желательно знать, какие  сервисы (услуги) оно может обеспечить. Для получения такой информации следует воспользоваться методом searchServices() класса DiscoveryAgent, который выполняет поиск сервисов на уда ленном устройстве, представленном объектом RemoteDevice. Если какой либо сервис обна ружен, то виртуальная Java машина вызывает  метод servicesDiscovered() (при условии, что

в объекте был реализован интерфейс DiscoveryListener). Этот метод передает объект Service Record, принадлежащий обнаруженному сервису. Получив этот объект, вы сможете работать с удаленным устройством, но для этого необходимо вначале установить связь с устройством, передавшим объект ServiceRecord.

Для установки связи с удаленным устройством вызовите метод getConnectionURL объек та ServiceRecord. Например, если получен один из объектов списка сервисов servRecord[i], то следующий оператор устанавливает связь с удаленным устройством:

String connectionURL = servRecord[i].getConnectionURL(0,  false);

Регистрация сервиса

Перед тем как  выполнять поиск  сервисов  удаленных Bluetooth устройств,  сервер Blue tooth должен зарегистрировать сервисы во внутренней базе данных под названием  SDDB (Service Discovery DataBase). Этот процесс  называется  регистрацией  сервиса.  Здесь хочу на помнить, что в приложениях  типа «точка точка», например,  ftp, telnet  и др., любое устройство может быть либо клиентом, либо сервером.  В этом случае для улучшения функциональности приложения желательно включить в него программный код, отрабатывающий как клиентский (например, поиск устройств), так и серверный (регистрация сервиса).

Ниже показан  возможный алгоритм регистрации сервиса и сохранения данных в базе данных SDDB:

    вызовите  метод Connector.open() и передайте результат интерфейсу StreamConnec tionNotifier  (здесь метод Connector.open() создает новый объект ServiceRecord и уста навливает для него некоторые атрибуты);

    используйте объекты LocalDevice и StreamConnectionNotifier  для получения объекта

ServiceRecord, созданного системой;

    если необходимо, модифицируйте или добавьте свои атрибуты в объект ServiceRecord;

    используйте StreamConnectionNotifier и вызов acceptAndOpen(), после чего ожидайте, пока  сервисы  не будут обнаружены клиентскими Bluetooth устройствами и не будет выполнена установка соединения;

    если сервер должен отключиться, вызовите метод close() объекта StreamConnec

tionNotifier.

Классы StreamConnectionNotifier и Connector включены в пакет javax.microedition.io плат

формы J2ME platform. Ниже показан программный код, реализующий описанный алгоритм:

// èíèöèàëèçàöèÿ  ïåðåìåííûõ

StreamConnectionNotifier  notifier = null; StreamConnection   sconn  = null;

LocalDevice  localdevice  = null;

ServiceRecord   servicerecord  = null;

// øàã  1

// ñòðîêà  òèïà   String ñ URL  äîëæíà áûòü èíèöèàëèçèðîâàíà notifier =  (StreamConnectionNotifier)Connector.open(url);

ПРОГРАММИРОВАНИЕ BLUETOOTH

// øàã  2

// ïîëó÷èì îáúåêò   LocalDevice,  åñëè  ýòî  åùå  íå ñäåëàíî

localdevice  = LocalDevice.getLocalDevice();

servicerecord  = localdevice.getRecord(notifier);

// øàã  3  (íåîáÿçàòåëüíûé)

// øàã  4

// íà ýòîì øàãå  áëîêèðóåòñÿ   êëèåíòñêèé  ïîòîê, ïîêà íå áóäåò

// ïîëó÷åí îòâåò  îò  êëèåíòà. Ïîñëå òîãî  êàê  îòâåò  ïîëó÷åí,

// çàïèñü   î ñåðâèñå  áóäåò  çàïèñàíà â  SDDB

notifier.acceptAndOpen();

// øàã  5

// âûïîëíÿåòñÿ  îæèäàíèå

// ïðåäïîëîæèì, ÷òî  êëèåíò óñïåøíî  ñîåäèíèëñÿ, òîãäà   ìîæíî âûõîäèòü

// øàã  6

// çäåñü  çàïèñü   ñåðâèñà  ìîæåò  áûòü óäàëåíà èç  SDDB

notifier.close();

Это все, что необходимо для регистрации  сервиса Bluetooth.  Далее следует установить соединение с удаленным устройством.

Источник:  Магда Ю. С. Компьютер  в домашней лаборатории.  – М.: ДМК Пресс, 2008. – 200 с.: ил.

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты