2010-03-14 122 views
2

我正在開發一個帶eclipse/WTK 2.5.2的J2ME程序,並有連接兩個使用藍牙的仿真器的問題。有兩個不同的仿真器上運行一個服務器和一個.client。WTK仿真器藍牙連接

問題是客戶端程序無法發現任何藍牙設備。這裏是服務器和客戶端代碼:在控制檯

public Server() 
{ 
    try 
    { 
     LocalDevice local = LocalDevice.getLocalDevice(); 
     local.setDiscoverable(DiscoveryAgent.GIAC); 

     server = (StreamConnectionNotifier) 
      Connector.open("btspp://localhost:" 
       + UUID_STRING + ";name=" + SERVICE_NAME); 

     Util.Log("EchoServer() Server connector open!"); 
    } 
    catch (Exception e) 
    {} 
} 

調用Connector.open後,我得到以下警告,我相信這是相關的:

警告:未註冊的設備:未指定

和客戶端代碼,搜索裝置:

public SearchForDevices(String uuid, String nm) 
{ 
    UUIDStr = uuid; 
    srchServiceName = nm; 
    try 
    { 
     LocalDevice local = LocalDevice.getLocalDevice(); 
     agent = local.getDiscoveryAgent(); 

     deviceList = new Vector(); 

     agent.startInquiry(DiscoveryAgent.GIAC, this); // non-blocking 
    } 
    catch (Exception e) 
    {} 
} 

系統從不調用deviceDiscovered,但用INQUIRY_COMPLETED參數調用inquiryCompleted(),所以我想客戶端程序運行良好。

藍牙在仿真器設置中啓用..

+0

您正在運行的2模擬器在2臺不同的電腦上,對嗎?你能找到第三個設備嗎(就像同一個房間裏的藍牙手機一樣)? – 2010-03-15 14:38:55

+0

不,我在同一臺計算機上使用它們。 – 2010-03-15 23:03:36

+1

藍牙通常是我不信任環回連接的那種網絡協議。恕我直言,你所嘗試的並不足以滿足現實生活中的用例。 – 2010-03-17 12:55:33

回答

3

我從NetBeans IDE的6.8測試幾乎相同的代碼與WTK 2.5.2_01仿真器和它工作得很好。 (我的意思是發現的設備)

public void startBTServer() { 
    try 
    { 
     LocalDevice local = LocalDevice.getLocalDevice(); 
     local.setDiscoverable(DiscoveryAgent.GIAC); 

     StreamConnectionNotifier server = (StreamConnectionNotifier) 
      Connector.open("btspp://localhost:F0E0D0C0B0A000908070605040302010" 
       + ";name=" + ";test"); 
    } 
    catch (Exception e) 
    {} 
} 

public void startBTClient() { 
    String UUIDStr = "F0E0D0C0B0A000908070605040302010"; 
    try 
    { 
     LocalDevice local = LocalDevice.getLocalDevice(); 
     DiscoveryAgent agent = local.getDiscoveryAgent(); 

     agent.startInquiry(DiscoveryAgent.GIAC, (DiscoveryListener) this); 
    } 
    catch (Exception e) 
    {} 

} 

public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) { 
    System.out.println("device discovered:" + btDevice.toString()); 
} 

此代碼打印出以下日誌:

從服務器:

Running in the identified_third_party security domain 
Device Bluetooth Address: 0000000DECAF 

從客戶端:

Device Bluetooth Address:AF 
device discovered:RemoteDevice[address=0000000DECAF, name=null, encrypted=false, authenticated=false] 
+0

嘿, 可能是它與我的操作系統,我使用win7。你知道如何在wtk模擬器中完成藍牙模擬嗎? – 2010-03-17 21:07:39

+0

它可以使用套接字通信來模擬BT。 – Wonil 2010-03-18 14:59:08