Этот документ познакомит Вас с возможностями JSR-82 Java API для Bluetooth. JSR-82 - это дополнительный J2ME пакет, реализующий Java Community Process, который предоставляет стандартный API для Bluetooth соединения. Для разработки и тестирования всех приведенных ниже листингов использовался телефон Sony Ericsson P900, однако ни что не мешает вам вести разработку для других устройств.
Чтобы начать разрабатывать Bluetooth приложения, Вам понадобятся следующие инструменты:
Этот документ описывает использование Java API for Bluetooth (JSR-82). Статья разделена на три части: описание Bluetooth технологии, обзор Java API for Bluetooth, использование Java API for Bluetooth.
Примечание: Обратите внимание, Java Bluetooth API не поддерживались некоторыми телефонами, например первыми телефонами Sony Ericson P900 (Organizer SW version R1*). Возможно Вам придется обновить прошивку.
Bluetooth это дешевая технология, позволяющая электронным устройствам обмениваться информацией посредствам радиоканала. Радиус действия Bluetooth передатчиков, как правило, не превышает 15-ти метров. Для связи используется частота 2.45 GHz. В настоящее время доступна технология Bluetooth версии 1.1, которая включает в себя технологию радио связи, набор программ и профилей.
Разработчиком Bluetooth является Bluetooth Special Interest Group (SIG).
Стек Bluetooth протоколов состоит из двух частей: контроллера, который, как правило, имеет аппаратную реализацию, и on-host стека с которым, собственно, и взаимодействуют приложения. На рисунке показаны Bluetooth протоколы.
Основное внимание в этой статье уделено верхним уровням стека Программных протоколов. Он состоит из следующих уровней:
Чтобы обеспечить совместимость между устройствами, Bluetooth профили определяют возможность некого нейтрального устройства. Сам по себе терминпрофиль означает набор функций и возможностей, которые использует Bluetooth в качестве механизма транспортировки. Профили гарантируют возможность обмена информацией между устройствами разных производителей. Bluetooth SIG определяет несколько стандартных профилей:
Sony Ericsson P900 поддерживает следующие Bluetooth профили:
Bluetooth устройства используют уникальные IEEE 802 48-bit адреса. Когда два или более Bluetooth устройства соединяются, они образуют структуру, известную под названием Piconet. Это динамическая сеть, в которой одно из устройств выступает в роли мастера (Master), а все другие (до семи устройств) в роли клиентов(Slave). Клиенты могут участвовать в различных Piconet сетях. Если два мастера соединяются, они образуют перекрывающийся Piconet, известный как Scatternet. На представленном рисунке Piconet мастер одной сети подключился к клиенту другой Piconet сети.
Bluetooth поддерживает один канал данных и три (максимум) голосовых канала. Максимальная скорость передачи данных составляет 720 килобит в секунду. Теоретически, радиус действия Bluetooth устройств составляет около 100 метров. Радиус Sony Ericsson P900/P908 - примерно 10 метров.
Более подробную информацию о Bluetooth профилях можно найти на сайтеhttp://www.bluetooth.org/
Все низкоуровневые реализации Blutooth должны удовлетворять набору требований, который сводится к поддержке ряда стандартных профилей и протоколов:
Уровни Bluetooth version 1.1 | Профили |
RFCOMM Service Discovery Protocol L2CAP | Generic Access Profile Service Discovery Application Profile Serial Port Profile |
Кроме того, Bluetooth устройства должны поддерживать так называемый Bluetooth Control Center (BCC), который позволяет проводить настройку локальных параметров Bluetooth устройства. BCC не является частью Bluetooth Java API, но Bluetooth Java API использует его для установки рабочего уровня и настройки параметров безопасности.
Java API for Bluetooth представляет собой дополнительный пакет для Java Community Process (JSR-82). Этот дополнительный пакет предоставляет разработчику общий API для работы с Bluetooth. На следующем рисунке показано отношение между Java API for Bluetooth и платформой J2ME, использующей Mobile Information Device Profile (MIDP) и Connected Limited Device Configuration (CLDC).
Как видите, внизу у нас расположились hardware, operating system и Bluetooth stack; выше находятся конфигурация (в нашем случае это CLDC) и профиль (MIDP), а также дополнительные пакеты. В самом верху располагается собственно MIDP приложение (MIDlet).
Таблица 2 - Java APIs for Bluetooth
Пакет | Описание |
javax.microedition.io | Ядро CLDC Generic Connection Framework. |
javax.bluetooth | Ядро Bluetooth API, включающее в себя Discovery, L2CAP, а также интерфейсы и классы устройства и данных. |
javax.obex | Ядро Object Exchange (OBEX) API. Этот пакет является дополнительным и поддерживается не всеми устройствами. |
В рамках Java APIs for Bluetooth определяется новый протокол соединения для GCF и Object Exchange (OBEX) API на основе спецификации IrDA Data Association.
Примечание: В Sony Ericsson P900/P908 реализованна урезанная версия пакета javax.bluetooth.*, а javax.obex.* - вообще не поддерживается.
На следующем рисунке показаны все интерфейсы и классы, которые можно использовать в JSR-82 мидлете. Более подробно они будут рассмотрены ниже.
Использование Java APIs for Bluetooth состоит из нескольких отдельных этапов:
На приведенном ниже рисунке схемотично показано приложение, использующее Bluetooth.
Инициализация Bluetooth, как правило, влечет за собой установку параметров. В частности необходимо задать имя устройства, настройки безопасности, включить или выключить Bluetooth радио канал. Все это можно сделать с помощью Bluetooth Control Center (BCC), который представляет собой набор панелей управления, которые являются основным механизмом управления параметрами Bluetooth устройства.
С помощью Bluetooth Control Center Вы можете задать несколько дополнительных настроек, в частности имя, которое будут видеть другие устройства, или режим доступности другим устройствам. Вы также можете выполнить поиск других Bluetooth устройств, задать условия соединения, соединиться и отключиться от устройства.
Эта статья является переводом документа Developing Applications with the Java APIs for Bluetooth™ (JSR-82), найденного на сайтеhttp://developer.sonyericsson.com
Перевод:aRix.