Данная статья ориентирована на тех, у кого есть желание написать j2me приложение с использованием Bluetooth, не вникая в логику соединения. Возможно, она окажется полезной и для оставшейся аудитории. Предлагаю Вам рассмотреть основные классы, которые мы будем использовать при создании приложения:
Чтобы создать простейшее соединение, необходимо:
Создать сервер, который в свою очередь создает сервис, открывает соединение и ждет подключения клиента. Делать мы это будем с помощью класса BlueServer, который имеет два конструктора:
В приложении можно реализовать только один сервер, поэтому нет необходимости создавать более одного экземпляра этого класса.
BlueServer bs=new BlueServer(“MyServer”); bs.start();
Следующим шагом необходимо организоватьпоиск устройств-серверрв, и выбрать из этого списка нужный сервис. Поможет в этом класс BlueSearcher, из которого нам понадобится два метода:
BlueSearcher bch=new BlueServer(); bch.start();
На заключительном этапе мы создаемклиент, который будет подключаться к одному из найденных серверов. Для этого будем использовать класс BlueClient, которому нужно передать значение сервиса. Класс имеет два конструктора:
BlueClient bc=new BlueClient(bch.getRecordById(id)); bc.start();
Конечной целью нашей программы будет не просто установление соединения, а передача данных. Эту функцию выполняет класс BlueDataManager, который, в принципе, нам не понадобится явно, поскольку он встроен в классы BlueServer и BlueClient. Мы будем использовать метод send(String s) этого класса, который отсылает данные от клиента серверу, или наоборот. Класс клиента содержит один экземпляр этого класса, класс сервера – массив, поскольку к серверу может подключиться до восьми клиентов.
bc.dataManager.send(“myClientData”); for(int=0; i<8; i++) bs.dataManager[i].send(“myServerData”);
Для приема данных нужно просто создать новый класс, наследующий абстрактный класс BlueListener и содержащий два метода:
class BListenerextends BlueListener{ public void actionReceiveData(String s){ text+= s; form.deleteAll(); form.append(text); } public void actionAfterClose(){ text= “connection is closed”; form.deleteAll(); form.append(text); } }
Чтобы все это работало, нужно еще установить этот слушатель событий для классов клиента и сервера. Сделать это можно следующим образом:
bc.setBlueListener(new BListener());
Все операции по созданию соединений и поиску сервисов лучше создавать в отдельном потоке. Основные классы наследуются от Thread и запускается методом start(). Сервер может разорвать все соединения с клиентами методом stop(). Клиент также может разорвать соединение. Для отслеживания хода выполнения программы реализован класс BlueLogger. Он достаточно прост и не требует комментариев. К статье прилагаются все вышеописанные классы инебольшой пример, который, надеюсь, позволит более детально разобраться с использованием всех классов. Спасибо за внимание.
Автор:Игорь Гарус