Поиск Bluetooth устройств

Поиск Bluetooth устройств

В данной статье рассмотрена методика поиска Bluetooth устройств, которые находятся в зоне действия, и не стоят в режиме “скрытый”.
Для поиска устройств, нам понадобится следующая библиотека:

import javax.bluetooth.*;

Так же наш класс должен иметь принадлежность к DiscoveryListener.
class serv_SearchDevice  implements DiscoveryListener
{  

...
}

После того как мы указали принадлежность к DiscoveryListener, мы должны создать следующие методы:

void deviceDiscovered(RemoteDevice remoteDevice,  DeviceClass deviceClass)  
void startServiceSearch(RemoteDevice device)  
void servicesDiscovered(int _int, ServiceRecord[] records)  
void serviceSearchCompleted(int _int, int _int1)  
void inquiryCompleted(int _int)

и конструктор нашего класса (Вы можете указать функции которые находятся в конструкторе в другом методе, и вызывать его перед началом процедуры поиска)

public serv_SearchDevice() 

Создали. Теперь приступим к заполнению этих методов функциями.

public serv_SearchDevice(BTmidlet midl) {// это параметр моего главного класса - MIDlet  
        midlet = midl;// Присвоение…  
        try {  
            localDevice = LocalDevice.getLocalDevice();  
            discoveryAgent = localDevice.getDiscoveryAgent();  
            discoveryAgent.startInquiry(DiscoveryAgent.GIAC, this);  
        } catch (Exception e) {}  
    }  
  
   public void deviceDiscovered(RemoteDevice remoteDevice,  
                                 DeviceClass deviceClass) {// Поиск устройств завершен  
        remoteDevices.addElement(remoteDevice);// Добавляем найденные устройства в вектор  
    }  
  
    private void startServiceSearch(RemoteDevice device) {  
    // Старт поиска сервисов, пока пусто…   
    // Нужен для поиска блютуз принтеров, или других сервисов, которые вещает сервер  
    }  
  
  
  
    public void servicesDiscovered(int _int, ServiceRecord[] records) {  
    // Если какие либо сервисы найдены, то мы в этом методе добавляем их…  
    }  
  
    public void serviceSearchCompleted(int _int, int _int1) {  
    //Поиск сервисов завершен…  
    }  
  
  
    public void inquiryCompleted(int _int) {// Это завершающий поиск метод, в нем мы добавляем в элемент
                                                                  // List имена найденных устройств
  

        for (int i = 0; i < remoteDevices.size(); i++) {// проверка если устройства найденны  
            try {  
                midlet.ListDev.addElement(((RemoteDevice) remoteDevices.  
                                           elementAt(i)).getFriendlyName(false)); // Берет не адрес устройства, а его имя  
            } catch (IOException ex) {  
            }  
            System.out.println("Device: " + remoteDevices);  
        }  
        midlet.ShowList();// Собственно вызов метода рисования листа, находится в классе MIDlet  
    }

Вот и все! Функция поиска Bluetooth устройств достаточно проста, как видно из кода. Думаю что со сборкой у Вас, дорогой читатель проблем не возникнет. В следующей статье я попытаюсь описать функцию поиска и работы с сервисами, которые вещает сервер. Коды в прикрепленных файлах!