2013-06-24 2 views
0

Я пишу приложение для связи между моим смартфоном и компьютером с помощью устройства Bluetooth.Bluetooth Server Android - клиент Java Bluecove. UUID?

Я использую Bluecove для управления bluetooth на компьютере и API Android для моего устройства Android.

Однако, когда я отлаживаю, ничего не происходит. Я думаю, что проблема в том, что UUID ошибочен. Я не уверен, как заставить устройства идентифицировать друг друга, чтобы установить соединение.

Я прочитал некоторые другие "вопросы" о тех тегов, но то, что я пытался не исправить мою проблему:

Вот что я написал до сих пор:

  1. Для Тхо андроида (Server) (Это функция, которая сделает подключение)

    общественного недействительный connectSocket() { blueAdapter.cancelDiscovery(); // Отменить открытие, потому что это будет замедлять соединение

    final BluetoothServerSocket serverSocket; 
    BluetoothServerSocket sSocket= null; 
    try{ 
        sSocket = blueAdapter.listenUsingRfcommWithServiceRecord("BluetoothJANE", MY_UUID); 
    }catch(IOException e){} 
    serverSocket = sSocket; 
    
    Thread acceptThread = new Thread(new Runnable() { 
    
        @Override 
        public void run() { 
         BluetoothSocket socket = null; 
         while(true){ 
          try{ 
           socket = serverSocket.accept(); 
          }catch(IOException e){ 
           break; 
          } 
          if(socket != null){ 
           try{ 
            iStream = socket.getInputStream(); 
            oStream = socket.getOutputStream(); 
           } catch(IOException e){} 
          } 
         } 
        } 
    }); 
    acceptThread.start(); 
    

    }

  2. Для Java приложение на ПК (Это конструктор класса (это на независимой нити), который будет управлять Bluetooth соединение)

    общественного ModuleBluetooth() {

    StreamConnectionNotifier notifier = null; 
    StreamConnection connection = null; 
    
    try { 
        blueDevice = LocalDevice.getLocalDevice(); 
        blueDevice.setDiscoverable(DiscoveryAgent.GIAC); 
    
        String url = "btspp://localhost:" + MY_UUID.toString() 
          + ";name=RemoteBluetooth"; 
        notifier = (StreamConnectionNotifier) Connector.open(url); 
    
    } catch (BluetoothStateException e) { 
        System.out 
          .println("ModuleBluetooth: Error getting the bluetooth device"); 
    } catch (IOException e) { 
    } 
    System.out.println("waiting for connection..."); 
    try { 
        connection = notifier.acceptAndOpen(); 
        System.out.println("Conenction created"); 
    } catch (IOException e) { 
        System.out.println("Can not create the connection"); 
    } 
    

    }

Может кто-нибудь, пожалуйста, помогите мне? Любые мысли были бы очень оценены.

Я также попытался использовать некоторые функции для получения UUID (в android), например [fetchUuidsWithSdp] [2] (и связанные функции), но eclipse не распознает эти функции (кажется, t существует в «моем» API).

http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#fetchUuidsWithSdp%28%29

ответ

0

Попробуйте этот пример, http://luugiathuy.com/2011/02/android-java-bluetooth/. У меня также была проблема, связанная с UUID, в этом примере преобразование UUID в 00001101-0000-1000-8000-00805F9B34FB разработано из коробки. См. Эту ссылку: http://www.avetana-gmbh.de/avetana-gmbh/produkte/doc/javax/bluetooth/UUID.html

+0

Спасибо, я также прочитал эти страницы, но я пропустил предложение, в котором сказал, что код (на андроиде) был основан на примере BluetoothChat! Еще раз спасибо! Я так рад – Bardo91

+1

Наконец-то я справляюсь с проблемой. Это было то, что в примере код JAVA действовал как сервер, как это делает андроид. Но мне нужно запрограммировать JAVA-код как клиента. Я использовал этот пример: http://www.miniware.net/mobile/articles/viewarticle.php?id=22 – Bardo91