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

Обзор Device Management api

В основе механизмов управления устройством лежат классы javax.bluetooth.LocalDevice, javax.bluetooth.RemoteDevice и javax.bluetooth.DeviceClass. Реализуемые ими методы управления являются частью Generic Access Profile (GAP).

Локальное устройство

Доступ к локальному Bluetooth устройству можно получить через javax.bluetooth.LocalDevice. Этот класс предоставляет методы управления, восстановления и получения информации о локальном устройстве (например, Bluetooth адрес, класс устройства, информация об агенте поиска). Приведем наиболее часто используемые на практике методы:

  • static LocalDevice getLocalDevice() — метод возвращает LocalDevice объект, представляющий локальное устройство.

  • java.lang.String getBluetoothAddress() — возвращает адрес локального Bluetooth устройства. Адрес возвращается в виде Java.lang.String и состоит из 12 символов.

  • java.lang.String getFriendlyName() — метод возвращает дружественное имя локального Bluetooth устройства.

  • DiscoveryAgent getDiscoveryAgent() — метод возвращает агент поиска для локального устройства.

  • boolean setDiscoverable(int mode) — метод задает режим доступности для поиска.

  • static java.lang.String getProperty(java.lang.String property) — метод возвращает системные настройки Bluetooth устройства.

  • ServiceRecord getRecord(javax.microedition.io.Connection notifier) — метод возвращает запись обслуживания, соответствующую переданному механизму уведомления (btspp, btl2cap или btgoep).

Listing 5. Использование LocalDevice методов.

import javax.microedition.io.*;

import javax.bluetooth.*;

LocalDevice localDevice; // Локальное устройство

String localAddress; // Адрес локального устройства

String localName; // Имя локального устройства

DiscoveryAgent agent; // Агент поиска для локального Bluetooth устройства

:

:

try {

// Получаем локальное устройство

localDevice = LocalDevice.getLocalDevice();

// Делаем его доступным для поиска

localDevice.setDiscoverable(DiscoveryAgent.GIAC);

// Получаем адрес локального Bluetooth устройства

localAddress = localDevice.getBluetoothAddress();

// Получаем имя устройства

localName = localDevice.getFriendlyName();

// Получаем объект агента поиска для изучения устройства и сервисов

agent = localDevice.getDiscoveryAgent();

} catch (Exception e) {

... Обрабатываем ошибки

}

Удаленное устройство

Удаленное Bluetooth устройство доступно через javax.bluetooth.RemoteDevice. Этот класс предоставляет методы для получения RemoteDevice объекта, связанного с Bluetooth соединением; методы получения имени и адреса удаленного устройства, а также методы, относящиеся к обеспечению безопасности. Приведем наиболее используемые их них:

  • static RemoteDevice getRemoveDevice(javax.microedition.io.Connection) — метод возвращает RemoteDevice объект, связанный с переданным соединением.

  • java.lang.String getBluetoothAddress() — возвращает адрес удаленного Bluetooth устройства. Адрес возвращается в виде Java.lang.String и состоит из 12 символов.

  • java.lang.String getFriendlyName() — метод возвращает дружественное имя удаленного Bluetooth устройства.

  • boolean authenticate() — подтверждение подлинности удаленного устройства.

  • boolean isAuthenticated() — определяет, прошло ли удаленное устройство проверку.

  • boolean isEncrypted() — определяет, должно ли выполняться шифрование данных при обмене с удаленным устройством.

Listing 6. Using the RemoteDevice methods.

import javax.microedition.io.*;

import javax.bluetooth.*;

String url = "...";

StreamConnection con;

RemoteDevice remoteDevice; // Удаленное устройство

String remoteAddress; // Адрес удаленного устройства

String remoteName; // Имя удаленного устройства

:

:

try {

con = (StreamConnection) Connector.open(url);

remoteDevice = RemoteDevice.getRemoteDevice(con);

// Получаем адрес удаленного устройства

remoteAddress = remoteDevice.getBluetoothAddress();

// Получаем имя удаленного устройства

remoteName = remoteDevice.getFriendlyName();

if (!remoteDevice.isEncrypted()) {

// Если данные не расшифрованы, пытаемся их расшифровать.

if (!remoteDevice.authenticate() || !remoteDevice.encrypt(con, true)) {

// Ошибка, невозможно расшифровать данные

return;

}

}

} catch (Exception e) {

... Обработка ошибок

}