title: How to connect to bluetoothbee device using j2me?
body: <p>I developed a simple bluetooth connection application in j2me.</p>
  
  <p>I try it on emulator, both server and client can found each other, but when I deploy the application to blackberry mobile phone and connect to a bluetoothbee device it says <code>service search no records</code>. </p>
  
  <p>What could it be possibly wrong? is it j2me can not find a service in bluetoothbee?</p>
  
  <p>The j2me itself succeed to found the bluetoothbee device, but why it can not find the service?</p>
  
  <p>My code is below. What I don't understand is the UUID? how to set UUID for unknown source? since I didn't know the UUID for the bluetoothbee device.</p>
  
  <pre><code>class SearchingDevice extends Canvas implements Runnable,CommandListener,DiscoveryListener{
  
  //......
  
  public SearchingDevice(MenuUtama midlet, Display display){
      this.display = display;
      this.midlet = midlet;
      t = new Thread(this);
      t.start();
  
      timer = new Timer();
      task = new TestTimerTask();
  
      /*--------------------Device List------------------------------*/
          select = new Command("Pilih",Command.OK,0);
          back = new Command("Kembali",Command.BACK,0);
          btDevice = new List("Pilih Device",Choice.IMPLICIT);
          btDevice.addCommand(select);
          btDevice.addCommand(back);
          btDevice.setCommandListener(this);
  
      /*------------------Input Form---------------------------------*/
  
          formInput = new Form("Form Input");
          nama = new TextField("Nama","",50,TextField.ANY);
          umur = new TextField("Umur","",50,TextField.ANY);
          measure = new Command("Ukur",Command.SCREEN,0);
          gender = new ChoiceGroup("Jenis Kelamin",Choice.EXCLUSIVE);
          formInput.addCommand(back);
          formInput.addCommand(measure);
          gender.append("Pria", null);
          gender.append("Wanita", null);
          formInput.append(nama);
          formInput.append(umur);
          formInput.append(gender);
  
          formInput.setCommandListener(this);
       /*---------------------------------------------------------------*/
  
  
          findDevice();
  }
  
  
  /*----------------Gambar screen searching device---------------------------------*/
  protected void paint(Graphics g) {
  
          g.setColor(0,0,0);
          g.fillRect(0, 0, getWidth(), getHeight());
          g.setColor(255,255,255);
          g.drawString("Mencari Device", 20, 20, Graphics.TOP|Graphics.LEFT);
  
      if(this.counter == 1){
          g.setColor(255,115,200);
          g.fillRect(20, 100, 20, 20);
      }
      if(this.counter == 2){
          g.setColor(255,115,200);
          g.fillRect(20, 100, 20, 20);
          g.setColor(100,255,255);
          g.fillRect(60, 80, 20, 40);
      }
      if(this.counter == 3){
          g.setColor(255,115,200);
          g.fillRect(20, 100, 20, 20);
          g.setColor(100,255,255);
          g.fillRect(60, 80, 20, 40);
          g.setColor(255,115,200);
          g.fillRect(100, 60, 20, 60);
      }
      if(this.counter == 4){
          g.setColor(255,115,200);
          g.fillRect(20, 100, 20, 20);
          g.setColor(100,255,255);
          g.fillRect(60, 80, 20, 40);
          g.setColor(255,115,200);
          g.fillRect(100, 60, 20, 60);
          g.setColor(100,255,255);
          g.fillRect(140, 40, 20, 80);
          //display.callSerially(this);
      }
  
  
  }
  /*--------- Running Searching Screen ----------------------------------------------*/
  public void run() {
      while(run){
  
         this.counter++;
         if(counter &gt; 4){
             this.counter = 1;
         }
          try {
              Thread.sleep(1000);
          } catch (InterruptedException ex) {
              System.out.println("interrupt"+ex.getMessage());
          }
           repaint();
      }
  }
  
  /*-----------------------------cari device bluetooth yang -------------------*/
  public void findDevice(){
      try {
          devices = new java.util.Vector();
          local = LocalDevice.getLocalDevice();
          agent = local.getDiscoveryAgent();
          local.setDiscoverable(DiscoveryAgent.GIAC);
          agent.startInquiry(DiscoveryAgent.GIAC, this);
      } catch (BluetoothStateException ex) {
          System.out.println("find device"+ex.getMessage());
      }
  }
  /*-----------------------------jika device ditemukan--------------------------*/
  public void deviceDiscovered(RemoteDevice rd, DeviceClass dc) {
      devices.addElement(rd);
  }
  /*--------------Selesai tes koneksi ke bluetooth server--------------------------*/
  public void inquiryCompleted(int param) {
      switch(param){
          case DiscoveryListener.INQUIRY_COMPLETED: //inquiry completed normally
              if(devices.size()&gt;0){ //at least one device has been found
                  services = new java.util.Vector();
                  this.findServices((RemoteDevice)devices.elementAt(0));
                  this.run = false;
                  do_alert("Inquiry completed",4000);
              }else{
                  do_alert("No device found in range",4000);
              }
              break;
          case DiscoveryListener.INQUIRY_ERROR:
              do_alert("Inquiry error",4000);
              break;
          case DiscoveryListener.INQUIRY_TERMINATED:
              do_alert("Inquiry canceled",4000);
              break;
      }
  }
  /*-------------------------------Cari service bluetooth server----------------------------*/
  public void findServices(RemoteDevice device){
       try {
          // int[] attributes = {0x100,0x101,0x102};
          UUID[] uuids = new UUID[1];
          //alamat server
         uuids[0] = new UUID("F0E0D0C0B0A000908070605040302010",false);
          //uuids[0] = new UUID("8841",true);
          //menyiapkan device lokal
          local = LocalDevice.getLocalDevice();
          agent = local.getDiscoveryAgent();
          //mencari service dari server
  
          agent.searchServices(null, uuids, device, this);
          //server = (StreamConnectionNotifies)Connector.open(url.toString());
  
      } catch (BluetoothStateException ex) {
         // ex.printStackTrace();
          System.out.println("Errorx"+ex.getMessage());
      }
  }
  /*---------------------------Pencarian service selesai------------------------*/
  public void serviceSearchCompleted(int transID, int respCode) {
      switch(respCode){
         case DiscoveryListener.SERVICE_SEARCH_COMPLETED:
             if(currentDevice == devices.size() - 1){
                 if(services.size() &gt; 0){
                     this.run = false;
                     display.setCurrent(btDevice);
                     do_alert("Service found",4000);
                 }else{
                     do_alert("The service was not found",4000);
                 }
             }else{
                 currentDevice++;
                 this.findServices((RemoteDevice)devices.elementAt(currentDevice));
             }
             break;
         case DiscoveryListener.SERVICE_SEARCH_DEVICE_NOT_REACHABLE:
             do_alert("Device not Reachable",4000);
             break;
         case DiscoveryListener.SERVICE_SEARCH_ERROR:
             do_alert("Service search error",4000);
             break;
         case DiscoveryListener.SERVICE_SEARCH_NO_RECORDS:
             do_alert("No records return",4000);
             break;
         case DiscoveryListener.SERVICE_SEARCH_TERMINATED:
             do_alert("Inquiry canceled",4000);
             break;
     }    }
  
  public void servicesDiscovered(int i, ServiceRecord[] srs) {
      for(int x=0; x&lt;srs.length;x++)
           services.addElement(srs[x]);
      try {
              btDevice.append(((RemoteDevice)devices.elementAt(currentDevice)).getFriendlyName(false),null);
      } catch (IOException ex) {
          System.out.println("service discover"+ex.getMessage());
      }
  }
      public void do_alert(String msg, int time_out){
      if(display.getCurrent() instanceof Alert){
          ((Alert)display.getCurrent()).setString(msg);
          ((Alert)display.getCurrent()).setTimeout(time_out);
      }else{
          Alert alert = new Alert("Bluetooth");
          alert.setString(msg);
          alert.setTimeout(time_out);
          display.setCurrent(alert);
      }
      }
  
  private String getData(){
      System.out.println("getData");
      String cmd="";
  
       try {
              ServiceRecord service = (ServiceRecord)services.elementAt(btDevice.getSelectedIndex());
              String url = service.getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false);
              conn = (StreamConnection)Connector.open(url);
              DataInputStream in = conn.openDataInputStream();
              int i=0;
  
              timer.schedule(task, 15000);
              char c1;
                 while(time){
  
                   //while(((c1 = in.readChar())&gt;0) &amp;&amp; (c1 != '\n')){
                  //while(((c1 = in.readChar())&gt;0) ){
                      c1 = in.readChar();
                  cmd = cmd + c1;
                  //System.out.println(c1);
                 // }
                 }
                   System.out.print("cmd"+cmd);
  
  
                  if(time == false){
                  in.close();
                  conn.close();
                  }
  
          } catch (IOException ex) {
              System.err.println("Cant read data"+ex);
          }
       return cmd;
  }
  
  
  
  
  //timer task fungsinya ketika telah mencapai waktu yg dijadwalkan putus koneksi
  private static class TestTimerTask extends TimerTask{
  
      public TestTimerTask() {
      }
      public void run() {
  
          time = false;
      }
  }   
  }
  </code></pre>