Когда вы обнаружили удаленное 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 с.: ил.
- Предыдущая запись: Генераторы высокочастотные AKTAK0M АНР-2015/ 2150
- Следующая запись: Дискретные случайные процессы
- УСТРОЙСТВО ЗАЩИТЫ ПК C ПОМОЩЬЮ ПАРОЛЯ (0)
- БЫСТРОДЕЙСТВУЮЩИЙ АМПЛИТУДНЫЙ ДЕТЕКТОР CO СХЕМОЙ ПАМЯТИ И ПЕРЕУСТАНОВКОЙ (0)
- СХЕМА ЗАПИСИ И ВОСПРОИЗВЕДЕНИЯ HA МИКРОСХЕМЕ ISD1000A (0)
- УСИЛИТЕЛЬ ДЛЯ ПРЕЦИЗИОННОГО КОНТРОЛЯ TOKA (0)
- Усилитель мощности для радиостанций типа "Колибри" (0)
- ДВУПОЛЯРНЫЙ ВЫПРЯМИТЕЛЬ (0)
- Базовый блок универсального программатора (2)