Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы. Мобильные устройства.doc
Скачиваний:
2
Добавлен:
01.05.2019
Размер:
1.8 Mб
Скачать

Создание соединения

Создание Bluetooth (сервер и клиент) соединения аналогично созданию других типов GCF соединений, то есть оно реализуется с помощью класса Connector. Для создания соединения используется метод Connector.open() и соответствующий URL, описывающий тип создаваемого Bluetooth соединения. Всего существуют три формы метода open():

  • open(String url)

  • open(String url, int mode)

  • open(String url, int mode, boolean timeout)

где

  • url — это URL, описывающий тип создаваемого Bluetooth соединения (пример приведен ниже);

  • mode — определяет режим соединения: READ, WRITE или READ_WRITE (последнее используется по умолчанию);

  • timeout — это флаг, который указывает, что вызывающий ожидает возвращения сообщения об истечении времени ожидания (InterruptedIOException), если основное подключение поддерживает механизм уведомлений (по умолчанию флаг установлен в false).

Наиболее часто используется первая форма записи. Параметр URL имеет следующий вид:

scheme://host:port;parameters

где

  • scheme — определяет тип соединения (см. приведенную ниже таблицу);

  • host — для клиента определяет удаленный адрес сервера; для сервера: localhost;

  • port — для клиента определяет протокол соединения; для сервера — service UUID;

  • parameters — дополнительные параметры, например дружественное имя или размер MTU.

В следующей таблице приведена информация о URL схеме и типах GCF соединения, которые можно использовать для RFCOMM и L2CAP Bluetooth соединениях:

Bluetooth Connection

URL Scheme

Client Connection

Server Connection

Serial Port Profile (RFCOMM)

Btspp

StreamConnection

StreamConnectionNotifier, StreamConnection

L2CAP

btl2cap

L2CAPConnection

L2CAPConnectionNotifier

Для создания клиентского Bluetooth соединения, Вы должны указать в URL адрес удаленного устройства и канал. Например, чтобы создать RFCOMM соединение, укажите в URL btspp схему, удаленный адрес и канал сервиса:

StreamConnection con = (StreamConnection) Connector.open("btspp://0050C000321B:5");

Для L2CAP соединения аналогично указываем схему btl2cap, адрес и мультиплексор обслуживания протокола.

L2CAPConnection con = (L2CAPConnection) Connector.open("btl2cap://0050C000321B:1000");

Для обнаружения клиентского соединения, используйте метод ServiceRecord.getConnectionURL().

Для того чтобы создать серверное Bluetooth соединение, необходимо указать localhost, service UUID и имя. Например, для создания RFCOMM (SPP) соединения, укажите схему btspp, localhost в качестве адреса, UUID и имя:

StreamConnectionNotifier cn = (StreamConnectionNotifier) Connector.open("btspp://localhost:" + MY_SERVICE_NUMBER);

Здесь переменная MY_SERVICE_NUMBER содержит UUID и имя сервиса:

"3B9FA89520078C303355AAA694238F08;name=mySPPSrv".

Для создания L2CAP соединения, укажите схему btl2cap, UUID и имя:

L2CAPConnectionNotifier = cn (L2CAPConnectionNotifier)

Connector.open("btl2cap://localhost:" + MY_SERVICE_NUMBER);

MY_SERVICE_NUMBER определяется аналогично случаю RFCOMM (SPP)

Перед созданием Bluetooth соединения необходимо получить ссылку на локальное устройство и сделать его доступным для поиска:

LocalDevice local = LocalDevice.getLocalDevice();

local.setDiscoverable(DiscoveryAgent.GIAC);