2011-04-04 82 views
0

在j2me中使用藍牙API,我想發送消息到另一個手機。我已經能夠發現相應設備上的設備和服務。但是,當我嘗試從服務器向客戶端發送消息時,我也能夠連接到服務。該消息是寫但客戶端似乎並沒有收到它..如何向藍牙設備發送消息?

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)); 
       Survey.setTitle(dev.getFriendlyName(true)); 
       //read string from spp client 
       try { 
         DataInputStream in = connection.openDataInputStream(); 
         OutputStream writer=connection.openDataOutputStream(); 


         String str=""; 
         TextField textfield; 
         for (int i=0;i<questions.size();i++){ 
          textfield = (TextField) questions.elementAt(i); 
          str += formatSurvey(textfield,i)+"&"; 

         } 
        writer.write(str.getBytes(), 0, str.getBytes().length); 
        writer.flush(); 
        System.out.println("Written to client "+str); 

        System.out.println("Reading "+in.readUTF()); 
        try { 
         displaySurveyresults(str); 
        } 
        catch(Exception e){ 
         System.out.println(e.getMessage()); 
        } 
         streamConnNotifier.close(); 
       } 
       catch(Exception e){ 
        System.err.println(e.getMessage()); 
       } 
      } 



    public void servicesDiscovered(int transID, ServiceRecord[] servRecord) { 
      switchDisplayable(null , getList1()); 
      list1.append(servRecord.toString(), null); 
      System.out.println("Service discovered..."+servRecord.toString()); 
      for (int i=0;i<servRecord.length;i++){ 
       try { 
        System.out.println("Test1"); 
        //StreamConnection con = (StreamConnection) Connector.open(servRecord[i].getConnectionURL(0 , false)); 
        String connURL = servRecord[0].getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false); 
        // Open connection 
        StreamConnection con = (StreamConnection) Connector.open(connURL); 

        System.out.println("Test2"); 
        DataInputStream in = con.openDataInputStream(); 
        System.out.println("Test3"+in.readUTF()); 
        //con.openDataOutputStream().write(142); 
        System.out.println("Test4 "+in.available()); 
        byte[] bte=new byte[in.available()]; 
        System.out.println("Test5 "+bte.length); 
        in.read(bte); 
        System.out.println("Test6"); 
        for (int l=0;l<bte.length;l++){ 
         System.out.println(bte[i]); 
         System.out.println("Test7"); 
         stringItem.setText(stringItem.getText()+1 + bte[i]); 
        } 
        OutputStream outStream=con.openOutputStream(); 
        OutputStreamWriter writer = new OutputStreamWriter(outStream); 
        writer.write("Vimal"); 
       } catch (IOException ex) { 
        ex.printStackTrace(); 
       } 

      } 
} 

我錯了某處因爲這些是來自網絡的代碼?

回答

1

嘗試用new UUID(0x1101);代替new UUID("1101", false);

+0

我越來越沒有記錄..任何其他解決方案? – 2011-04-09 06:28:45