2011-04-04 85 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