Модераторы: javastic, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помощь с J2ME и Bluetooth, Пример работы с блютуз в Jave 
:(
    Опции темы
AlexeySNG
Дата 17.7.2012, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 17.7.2012

Репутация: нет
Всего: нет



Доброго времени суток! На яве программировать только учусь и синтаксис не совсем понятен для меня. Прошу знающих людей о помощи (при возможности с комментариями) - необходимо реализовать вот какую функцию - телефон с поддержкой JSR-82 при запуске программы постоянно через блютуз сканирует (то есть автоматически, не требуя нажатия кнопок для начала сканирования) и при нахождении устройств проверяет его (найденного устройства) имя, если имя предположим Dev1, Dev2, Dev3 - то переходит на подпрограмму 1, если имя Dev4,Dev5 - переходит на подпрограмму 2, если имя Dev6,Dev7 - на подпрограмму 3 и отображает Dev6, Dev7 в списке найденных устройств. Пожалуйста помогите кто может. Спасибо.
PM MAIL   Вверх
AlexeySNG
Дата 18.7.2012, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 17.7.2012

Репутация: нет
Всего: нет



Помогите примером пожалуйста.
PM MAIL   Вверх
oxigen
Дата 18.7.2012, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 12.4.2010

Репутация: 4
Всего: 4



Примером чего? Примеры базовых функций языка Вы можете найти в любой книге по Java 
Про поиск bluetooth устройств можете почитать тут http://www.rsdn.ru/article/java/bluetooth.xml
PM MAIL   Вверх
AlexeySNG
Дата 18.7.2012, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 17.7.2012

Репутация: нет
Всего: нет



Вот здесь разъясняется как сделать поиск блютуз устройств http://meego.e-werest.org/blog/j2me/2538.html но дело вот в чём - после поиска устройств мне необходимо проверить имена заранее заданные в программе и выполнить какое либо действие в зависимости от найденного имени не показывая это (найденные устройства) на экране - то есть считать имя найденного устройства, сверить его с заданными, и выполнить действие в зависимости от имени найденного устройства. Сервисы на найденных устройствах искать не надо, это позже. И поиск БТ устройств что бы не останавливался, ну или произвёл поиск, сравнил имена с заданными, выполнил действие, продолжил поиск. По ссылке вроде всё расписано хорошо, пытаюсь делать в NetBeans - куча ошибок. Спасибо заранее.
PM MAIL   Вверх
oxigen
Дата 18.7.2012, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 12.4.2010

Репутация: 4
Всего: 4



AlexeySNG, давайте свой код, давайте ошибки и тогда можно будет предметно смотреть, что там не так.

PM MAIL   Вверх
AlexeySNG
Дата 18.7.2012, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 17.7.2012

Репутация: нет
Всего: нет



Вот какой код, не ругайтес сильно, только начинаю:
Код

import javax.microedition.midlet.*;
import java.io.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import javax.bluetooth.*;
import java.util.*;

class serv_SearchDevice  implements DiscoveryListener {
void deviceDiscovered(RemoteDevice remoteDevice,  DeviceClass deviceClass);//Тут ошибка 1   
void startServiceSearch(RemoteDevice device) ;//Тут ошибка 2
void servicesDiscovered(int _int, ServiceRecord[] records);// Тут ошибка 1
void serviceSearchCompleted(int _int, int _int1);// Тут ошибка 1  
void inquiryCompleted(int _int);// Тут ошибка 1
        public serv_SearchDevice();// Тут ошибка 2
        public serv_SearchDevice(BTmidlet midl) {//Тут ошибка 3
            midlet = midl;//Тут ошибка 3
             try {   
            localDevice = LocalDevice.getLocalDevice();//Тут ошибка 4
            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) {
              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();
              }
          }

Ошибка 1 - deviceDiscovered(javax.bluetooth.RemoteDevice,javax.bluetooth.DeviceClass) in serv_SearchDevice cannot implement deviceDiscovered(javax.bluetooth.RemoteDevice,javax.bluetooth.DeviceClass) in javax.bluetooth.DiscoveryListener
  attempting to assign weaker access privileges; was public
Ошибка 2 - missing method body, or declare abstract
Ошибка 3 - cannot find symbol
  symbol:   class BTmidlet
  location: class serv_SearchDevice
Ошибка 4 - cannot find symbol
  symbol:   variable localDevice
  location: class serv_SearchDevice

Вот что пишет при компиляции :
Compiling 1 source file to C:\Users\saa\Documents\NetBeansProjects\BTmidlet\build\compiled
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\src\BTMidlet.java:16: error: cannot find symbol
        public serv_SearchDevice(BTmidlet midl) {
  symbol:   class BTmidlet
  location: class serv_SearchDevice
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\src\BTMidlet.java:25: error: method deviceDiscovered(RemoteDevice,DeviceClass) is already defined in class serv_SearchDevice
        public void deviceDiscovered(RemoteDevice remoteDevice,   
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\src\BTMidlet.java:29: error: method startServiceSearch(RemoteDevice) is already defined in class serv_SearchDevice
        private void startServiceSearch(RemoteDevice device) {//Это не надо, сервисы не нужны
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\src\BTMidlet.java:31: error: method servicesDiscovered(int,ServiceRecord[]) is already defined in class serv_SearchDevice
         public void servicesDiscovered(int _int, ServiceRecord[] records) {//Это тоже не надо
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\src\BTMidlet.java:33: error: method serviceSearchCompleted(int,int) is already defined in class serv_SearchDevice
         public void serviceSearchCompleted(int _int, int _int1) {
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\src\BTMidlet.java:36: error: method inquiryCompleted(int) is already defined in class serv_SearchDevice
          public void inquiryCompleted(int _int) {
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\src\BTMidlet.java:12: error: servicesDiscovered(int,ServiceRecord[]) in serv_SearchDevice cannot implement servicesDiscovered(int,ServiceRecord[]) in DiscoveryListener
void servicesDiscovered(int _int, ServiceRecord[] records);  
  attempting to assign weaker access privileges; was public
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\src\BTMidlet.java:13: error: serviceSearchCompleted(int,int) in serv_SearchDevice cannot implement serviceSearchCompleted(int,int) in DiscoveryListener
void serviceSearchCompleted(int _int, int _int1);  
  attempting to assign weaker access privileges; was public
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\src\BTMidlet.java:14: error: inquiryCompleted(int) in serv_SearchDevice cannot implement inquiryCompleted(int) in DiscoveryListener
void inquiryCompleted(int _int);
  attempting to assign weaker access privileges; was public
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\src\BTMidlet.java:10: error: deviceDiscovered(RemoteDevice,DeviceClass) in serv_SearchDevice cannot implement deviceDiscovered(RemoteDevice,DeviceClass) in DiscoveryListener
void deviceDiscovered(RemoteDevice remoteDevice,  DeviceClass deviceClass);  
  attempting to assign weaker access privileges; was public
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\src\BTMidlet.java:11: error: missing method body, or declare abstract
void startServiceSearch(RemoteDevice device);  
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\src\BTMidlet.java:15: error: missing method body, or declare abstract
        public serv_SearchDevice();
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\src\BTMidlet.java:17: error: cannot find symbol
            midlet = midl;
  symbol:   variable midlet
  location: class serv_SearchDevice
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\src\BTMidlet.java:19: error: cannot find symbol
            localDevice = LocalDevice.getLocalDevice();   
  symbol:   variable localDevice
  location: class serv_SearchDevice
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\src\BTMidlet.java:20: error: cannot find symbol
            discoveryAgent = localDevice.getDiscoveryAgent();   
  symbol:   variable discoveryAgent
  location: class serv_SearchDevice
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\src\BTMidlet.java:20: error: cannot find symbol
            discoveryAgent = localDevice.getDiscoveryAgent();   
  symbol:   variable localDevice
  location: class serv_SearchDevice
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\src\BTMidlet.java:21: error: cannot find symbol
            discoveryAgent.startInquiry(DiscoveryAgent.GIAC, this);   
  symbol:   variable discoveryAgent
  location: class serv_SearchDevice
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\src\BTMidlet.java:27: error: cannot find symbol
            remoteDevices.addElement(remoteDevice);
  symbol:   variable remoteDevices
  location: class serv_SearchDevice
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\src\BTMidlet.java:37: error: cannot find symbol
              for (int i = 0; i < remoteDevices.size(); i++) {
  symbol:   variable remoteDevices
  location: class serv_SearchDevice
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\src\BTMidlet.java:39: error: cannot find symbol
                midlet.ListDev.addElement(((RemoteDevice) remoteDevices.//   
  symbol:   variable remoteDevices
  location: class serv_SearchDevice
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\src\BTMidlet.java:39: error: package midlet does not exist
                midlet.ListDev.addElement(((RemoteDevice) remoteDevices.//   
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\src\BTMidlet.java:43: error: cannot find symbol
            System.out.println("Device: " + remoteDevices);  //Это не нужно, ведь отображать найденные устр-ва пока не надо 
  symbol:   variable remoteDevices
  location: class serv_SearchDevice
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\src\BTMidlet.java:45: error: cannot find symbol
        midlet.ShowList();
  symbol:   variable midlet
  location: class serv_SearchDevice
23 errors
C:\Users\saa\Documents\NetBeansProjects\BTmidlet\nbproject\build-impl.xml:338: Compile failed; see the compiler error output for details.
ПОСТРОЕНИЕ ЗАВЕРШЕНО СО СБОЕМ (общее время: 2 секунд)
PM MAIL   Вверх
oxigen
Дата 19.7.2012, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 12.4.2010

Репутация: 4
Всего: 4



Знаете, есть смысл начать с того, чтоб взять любой учебник по Java и написать Hello world.
После этого многие вопросы сами отпадут.

А по самому коду:
1. В мобильном приложении должен быть класс, наследник javax.microedition.midlet.MIDlet Это точка входа в программу.
2. Имя класса должно совпадать с именем файла
3. В Java не нужно отдельно декларировать метод и отдельно писать реализацию. Все вместе должно быть.
4. Java строго типизированый язык - все переменные нужно объявлять.
5. Вы обращаетесь к классу BTmidlet, но его нет.
PM MAIL   Вверх
AlexeySNG
Дата 19.7.2012, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 17.7.2012

Репутация: нет
Всего: нет



Пытаюсь понять структуру самой программы вот на чём учусь (нашёл в сети)
Код

import java.io.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import javax.bluetooth.*;
import java.util.*;

/**
* @author test
*/
public class Blue extends MIDlet implements CommandListener,DiscoveryListener {
      private List activeDevices;
      private List activeServices;
      private Command select,exit;
      private Display display;
      private LocalDevice local=null;
      private DiscoveryAgent agent = null;
      private Vector devicesFound = null;
      private ServiceRecord[] servicesFound = null;
      private String connectionURL = null;

      public void startApp() {
            display = Display.getDisplay(this);
            activeDevices = new List("Active Devices", List.IMPLICIT);
            activeServices = new List("Active Services", List.IMPLICIT);
            select = new Command("Select", Command.OK, 0);
            exit = new Command("Exit", Command.EXIT, 0);
            activeDevices.addCommand(exit);
            activeServices.addCommand(exit);
            activeDevices.setCommandListener(this);
            activeServices.setCommandListener(this);
            try {
                  local = LocalDevice.getLocalDevice();
            } catch (Exception e) {
            }
            doDeviceDiscovery();
            display.setCurrent(activeDevices);
      }

      public void pauseApp() {
      }

      public void destroyApp(boolean unconditional) {
            notifyDestroyed();
      }

      public void commandAction(Command cmd, Displayable disp) {
            if (cmd == select && disp == activeDevices) {
                  int device = activeDevices.getSelectedIndex();
                  doServiceSearch((RemoteDevice) devicesFound.elementAt(device));
                  display.setCurrent(activeServices);
                  //doServiceSearch( (RemoteDevice)devicesFound.firstElement());
            }
            if (cmd == select && disp == activeServices) {
                  int service = activeServices.getSelectedIndex();
                  connectionURL = servicesFound[service].getConnectionURL(0, false);
                  try {
                        StreamConnection sc = (StreamConnection) Connector.open(connectionURL);
                        OutputStream outStream = Connector.openOutputStream(connectionURL);
                        PrintStream pWriter = new PrintStream(outStream);
                        pWriter.print("Response String from SPP Server\r\n");
                        pWriter.flush();
                        pWriter.close();
                  } catch (Exception e) {
                        Alert alert = new Alert("");
                        alert.setString(e.toString());
                        display.setCurrent(alert);
                  }
            }
            if (cmd == exit) {
                  destroyApp(false);
            }
      }
      public void inquiryCompleted(int param) {
            switch (param) {
                  case DiscoveryListener.INQUIRY_COMPLETED:
                        /* Inquiry completed normally, add appropriate code
                         * here
                         */
                        if (devicesFound.size() > 0) {
                              activeDevices.addCommand(select);
                              activeDevices.setSelectCommand(select);
                        } else {
                              try {
                                    activeDevices.append("No Devices Found", null);
                                    startServer();
                              } catch (Exception e) {
                              }
                        }
                        break;

                  case DiscoveryListener.INQUIRY_ERROR:
                        // Error during inquiry, add appropriate code here.
                        break;

                  case DiscoveryListener.INQUIRY_TERMINATED:
                        /* Inquiry terminated by agent.cancelInquiry()
                        * Add appropriate code here.
                        */
                        break;
            }
      }

      public void serviceSearchCompleted(int transID, int respCode) {
            switch (respCode) {
                  case DiscoveryListener.SERVICE_SEARCH_COMPLETED:
                        break;
                  case DiscoveryListener.SERVICE_SEARCH_DEVICE_NOT_REACHABLE:
                        break;
                  case DiscoveryListener.SERVICE_SEARCH_ERROR:
                        break;
                  case DiscoveryListener.SERVICE_SEARCH_NO_RECORDS:
                        break;
                  case DiscoveryListener.SERVICE_SEARCH_TERMINATED:
                        break;
            }
      }

      public void servicesDiscovered(int transID, ServiceRecord[] serviceRecord) {
            servicesFound = serviceRecord;
            activeServices.append(servicesFound.toString(), null);
            activeServices.addCommand(select);
            activeServices.setSelectCommand(select);
      }

      public void deviceDiscovered(RemoteDevice remoteDevice, DeviceClass deviceClass) {
            String str = null;
            try {
                  str = remoteDevice.getFriendlyName(true);
            } catch (Exception e) {
            }
            activeDevices.append(str, null);
            devicesFound.addElement(remoteDevice);
      }

      private void doDeviceDiscovery() {
            try {
                  local = LocalDevice.getLocalDevice();
            } catch (BluetoothStateException bse) {
                   // Error handling code here
            }
            agent = local.getDiscoveryAgent();
            devicesFound = new Vector();
            try {
                  if (!agent.startInquiry(DiscoveryAgent.GIAC, this)) {
                        // Inquiry not started, error handling code here
                  }
            } catch (BluetoothStateException bse) {
                  // Error handling code here
            }
      }

      private void doServiceSearch(RemoteDevice device) {
            int[] attributes = {0x100, 0x101, 0x102};
            UUID[] uuids = new UUID[1];
            uuids[0] = new UUID("1101", false);
            try {
                  agent.searchServices(attributes, uuids, device, this);
            } catch (BluetoothStateException e) {
                  Alert alert1 = new Alert("Error");
                  alert1.setString(e.toString());
                  display.setCurrent(alert1);
            }
      }

      public void startServer() throws IOException {
            UUID uuid = new UUID("1101", false);
            //Create the service url
            String connectionString = "btspp://localhost:" + uuid + ";name=xyz";
            //open server url
            StreamConnectionNotifier streamConnNotifier = (StreamConnectionNotifier) Connector.open(connectionString);
            //Wait for client connection
            System.out.println("\nServer Started. Waiting for clients to connect...");
            StreamConnection connection = streamConnNotifier.acceptAndOpen();
            RemoteDevice dev = RemoteDevice.getRemoteDevice(connection);
            System.out.println("Remote device address: " + dev.getBluetoothAddress());
            System.out.println("Remote device name: " + dev.getFriendlyName(true));

            //read string from spp client
            try {
                  DataInputStream in = (DataInputStream) connection.openDataInputStream();
                  /*BufferedReader bReader=new BufferedReader(new InputStreamReader(inStream)); 
                  String lineRead=bReader.readLine(); 
                  System.out.println(lineRead);*/
                  /*//send response to spp client 
                  OutputStream outStream=connection.openOutputStream(); 
                  PrintWriter pWriter=new PrintWriter(new OutputStreamWriter(outStream)); 
                  pWriter.write("Response String from SPP Server\r\n"); 
                  pWriter.flush(); 
                  pWriter.close();*/
                  streamConnNotifier.close();
            }catch (IOException ex) {   
            }
      }
}

Код работает без ошибок, но:
1) Мне не нужен вывод на экран
2) Не нужен поиск сервисов в найденных устройствах
3) Из найденных устройств провести проверку найденных имён и перейти на подпрограмму обработки (К примеру - Если в найденных именах присутствует имена Dev1, Dev2 перейти на подпрограмму1 если нет - продолжить поиск) 
Вопрос данная программа ищет только доступные для поиска устройства, или все? Можно ли как-то разделить поиск доступных и скрытых?
Структура программы начинает потихоньку доходить до понимания ;) Классы,подклассы, расширения класса...

Добавлено через 3 минуты и 39 секунд
Не всё правда понятно, как например переменные объявляются в этом исходнике и где. Как вытащить данные из переменной с найденными БТ устройствами. Книги читаю - вот такую "В. Пирумян - Платформа программирования J2ME для портативных устройств" и вот такую "Горнаков.С. Программирование Мобильных Телефонов НаJ ava2MicroEdition"
PM MAIL   Вверх
oxigen
Дата 19.7.2012, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 12.4.2010

Репутация: 4
Всего: 4



Примерно так.
Код

import javax.bluetooth.*;
import javax.microedition.midlet.*;
import java.io.*;
import java.util.Vector;

public class SocketTest extends MIDlet  implements DiscoveryListener {
        
        private Vector remoteDevices = new Vector();

        public void startApp() {
            serv_SearchDevice();
        }

        public void serv_SearchDevice() {
            LocalDevice localDevice;
            try {
                localDevice = LocalDevice.getLocalDevice();
                DiscoveryAgent discoveryAgent = localDevice.getDiscoveryAgent();   
                discoveryAgent.startInquiry(DiscoveryAgent.GIAC, this);
            } catch (BluetoothStateException e) {
            }
        }


        public void deviceDiscovered(RemoteDevice remoteDevice, DeviceClass deviceClass) {
            remoteDevices.addElement(remoteDevice);
        }

        public void inquiryCompleted(int arg) {
            for (int i = 0; i < remoteDevices.size(); i++) {
                try {   
                    String name = (((RemoteDevice) remoteDevices.elementAt(i)).getFriendlyName(false));
                    if(name.startsWith("Dev1")) {
                       ///Тут делаете что надо с Dev1
                    } else  if(name.startsWith("Dev2")) {
                        ///Тут делаете что надо с Dev2
                     } 
                } catch (IOException ex) {
                }
            }
            
        }

        public void pauseApp() {
        }
        
        public void destroyApp(boolean unconditional) {
            notifyDestroyed();
        }

        public void serviceSearchCompleted(int arg0, int arg1) {
        }

        public void servicesDiscovered(int arg0, ServiceRecord[] arg1) {
        }
}


Переменные объявляются вот тут переменные - поля класса. Видимые во всем классе
Код
 private List activeDevices;
      private List activeServices;
      private Command select,exit;
      private Display display;

Или вот тут - локальная. Видимая только внутри метода
Код
 
Alert alert = new Alert("");


Скрытые для поиска потому и скрытые, что их нельзя найти.

Это сообщение отредактировал(а) oxigen - 19.7.2012, 10:32
PM MAIL   Вверх
AlexeySNG
Дата 19.7.2012, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 17.7.2012

Репутация: нет
Всего: нет



Спасибо за ответ - с Вашей помощью понимать начинаю. Есть вопрос к Вам - Можно ли на J2ME написать программу что бы она динамически проверяла найденные по именам устройства, а не дожидалась завершения поиска, то есть запускаем поиск по блютуз и динамически (не останавливая поиск) проверяем найденные имена. Такое вообще возможно? Что то вроде радара...
PM MAIL   Вверх
oxigen
Дата 19.7.2012, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 12.4.2010

Репутация: 4
Всего: 4



Да. Смотрите:
Метод
Код

public void deviceDiscovered(RemoteDevice remoteDevice, DeviceClass deviceClass) {}

Вызывается каждый раз, когда найдено очередное устройство. Делайте тут с найденым устройством что хотите.
Сейчас оно просто сохраняется в векторе.

Метод
Код

 public void inquiryCompleted(int arg) {}

вызывается, когда поиск закончен. Можете сразу же тут стартовать поиск заново. serv_SearchDevice() - запускает поиск.

Интересно, за сколько времени подобное батарейку полностью скушает.
PM MAIL   Вверх
AlexeySNG
Дата 19.7.2012, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 17.7.2012

Репутация: нет
Всего: нет



Ну батарейка это как говорится дело наживное  smile  - получается можно поступить следующим образом

Код

public void deviceDiscovered(RemoteDevice remoteDevice, DeviceClass deviceClass) {
   remoteDevices.addElement(remoteDevice);
    for (int i = 0; i < remoteDevices.size(); i++) {
                try {   
                    String name = (((RemoteDevice) remoteDevices.elementAt(i)).getFriendlyName(false));
                    if(name.startsWith("Dev1")) {
                       
                    } else  if(name.startsWith("Dev2")) {
                       
                     }
   
}

Правда int где объявить?  smile  
PM MAIL   Вверх
oxigen
Дата 19.7.2012, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 12.4.2010

Репутация: 4
Всего: 4



Нет. Что-то Вы тут намудрили.
Вы нашли одно устройство. С этим одним устройством и работаете.
Код

public void deviceDiscovered(RemoteDevice remoteDevice, DeviceClass deviceClass) {
   String name = remoteDevice.getFriendlyName(false);
   if(name.startsWith("Dev1")) {
                     
   } else  if(name.startsWith("Dev2")) {
                       
  }
   
}


Правда int где объявить?    Это Вы о чем? int это тип.






Это сообщение отредактировал(а) oxigen - 19.7.2012, 13:35
PM MAIL   Вверх
AlexeySNG
Дата 19.7.2012, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 17.7.2012

Репутация: нет
Всего: нет



Изменяюсь за ерунду с int - только учусь. Получается если устройства с нужными именами не найдены то эта процедура повторится пока не найдутся или этот кусок надо постоянно вызывать? 
Код

public void deviceDiscovered(RemoteDevice remoteDevice, DeviceClass deviceClass) {
   String name = remoteDevice.getFriendlyName(false);
   if(name.startsWith("Dev1")) {
                     
   } else  if(name.startsWith("Dev2")) {
                       
  }
   
}

Спасибо. 
З.Ы. Я в асме для микроконтроллеров пишу, ява это для меня новое...

Добавлено через 3 минуты и 48 секунд
Кстати а имена устройств где нибудь (в какой нибудь переменной/переменных) можно перечислить нужные, а потом оттуда брать и сравнивать?
PM MAIL   Вверх
oxigen
Дата 19.7.2012, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 12.4.2010

Репутация: 4
Всего: 4



Получается если устройства с нужными именами не найдены то эта процедура повторится пока не найдутся или этот кусок надо постоянно вызывать? 
Смотри, как оно работает.

Вызываешь  discoveryAgent.startInquiry(DiscoveryAgent.GIAC, this);
Дальше оно само там что-то как-то ищет. Как и каким образом, нам не видно. 
Но как только найдет одно устройство - сработает твой метод 
public void deviceDiscovered(RemoteDevice remoteDevice, DeviceClass deviceClass) {}
И в параметрах придет информация о найденом устройстве. И так раз за разом, пока не найдет все.

Как только все нашлось (или поиск прервался по другим причинам) - вызовется  
public void inquiryCompleted(int arg) {}


То есть сам ты вызываешь только discoveryAgent.startInquiry(DiscoveryAgent.GIAC, this), когда хочешь начать поиск.
Остальное происходит "само по себе".


Кстати а имена устройств где нибудь (в какой нибудь переменной/переменных) можно перечислить нужные, а потом оттуда брать и сравнивать?
Массив, вектор...
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.1196 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.