Results 1 to 2 of 2
  1. #1
    mark305 is offline Member
    Join Date
    Feb 2009
    Posts
    2
    Rep Power
    0

    Default Java J2SE Bluetooth Application

    Hello,

    I am trying to write a program in J2SE which will use Bluetooth and act as a server to wait for connections, and then send a file to any device that connects.

    I am using ubuntu linux, and I am using the NetBeans IDE.

    I am having a lot of trouble trying to create this program, and after hours of researching the bluetooth API's for linux, and trying all of them (AvetanaBT, jBlueZ, BlueZ, BlueCove) I can not seem to get any basic connectivity with my bluetooth dongle.

    I haven't even got as far as listening for devices or discovering bluetooth devices.

    The example code I am trying to run is this:

    Java Code:
          import java.io.IOException;
    
          import java.util.Vector;
    
    
    
    
          import javax.bluetooth.DeviceClass;
    
          import javax.bluetooth.DiscoveryAgent;
    
          import javax.bluetooth.DiscoveryListener;
    
          import javax.bluetooth.LocalDevice;
    
          import javax.bluetooth.RemoteDevice;
    
          import javax.bluetooth.ServiceRecord;
    
    
    
    
    
          /**
    
          * Class that discovers all bluetooth devices in the neighbourhood
    
          * and displays their name and bluetooth address.
    
          */
    
          public class BluetoothDeviceDiscovery implements DiscoveryListener{
    
    
    
    
    
              //object used for waiting
    
              private static Object lock=new Object();
    
    
    
             //vector containing the devices discovered
    
              private static Vector vecDevices=new Vector();
    
    
    
    
    
              //main method of the application
    
             public static void main(String[] args) throws IOException {
    
    
    
                 //create an instance of this class
    
                  BluetoothDeviceDiscovery bluetoothDeviceDiscovery=new BluetoothDeviceDiscovery();
    
    
    
                  //display local device address and name
    
                  LocalDevice localDevice = LocalDevice.getLocalDevice();
    
                  System.out.println("Address: "+localDevice.getBluetoothAddress());
    
                  System.out.println("Name: "+localDevice.getFriendlyName());
    
    
    
                  //find devices
    
                  DiscoveryAgent agent = localDevice.getDiscoveryAgent();
    
    
    
                  System.out.println("Starting device inquiry...");
    
                  agent.startInquiry(DiscoveryAgent.GIAC, bluetoothDeviceDiscovery);
    
    
    
                  try {
    
                      synchronized(lock){
    
                          lock.wait();
    
                      }
    
                 }
    
                  catch (InterruptedException e) {
    
                      e.printStackTrace();
    
                  }
    
    
    
    
    
                  System.out.println("Device Inquiry Completed. ");
    
    
    
                  //print all devices in vecDevices
    
                  int deviceCount=vecDevices.size();
    
    
                   if(deviceCount <= 0){
    
                      System.out.println("No Devices Found .");
    
                  }
    
                  else{
    
                      //print bluetooth device addresses and names in the format [ No. address (name) ]
    
                      System.out.println("Bluetooth Devices: ");
    
                      for (int i = 0; i <deviceCount; i++) {
    
                          RemoteDevice remoteDevice=(RemoteDevice)vecDevices.elementAt(i);
    
                          System.out.println((i+1)+". "+remoteDevice.getBluetoothAddress()+" ("+remoteDevice.getFriendlyName(true)+")");
    
                      }
    
                  }
    
    
    
    
    
              }//end main
    
    
    
              //methods of DiscoveryListener
    
    
    
             /**
    
               * This call back method will be called for each discovered bluetooth devices.
    
               */
    
              public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) {
    
                 System.out.println("Device discovered: "+btDevice.getBluetoothAddress());
    
                  //add the device to the vector
    
                  if(!vecDevices.contains(btDevice)){
    
                     vecDevices.addElement(btDevice);
    
                  }
    
              }
    
    
    
              //no need to implement this method since services are not being discovered
    
              public void servicesDiscovered(int transID, ServiceRecord[] servRecord) {
    
              }
    
    
    
              //no need to implement this method since services are not being discovered
    
              public void serviceSearchCompleted(int transID, int respCode) {
    
              }
    
    
    
    
    
              /**
    
               * This callback method will be called when the device discovery is
    
               * completed.
    
               */
    
              public void inquiryCompleted(int discType) {
    
                  synchronized(lock){
    
                      lock.notify();
    
                  }
    
    
    
                  switch (discType) {
    
                      case DiscoveryListener.INQUIRY_COMPLETED :
    
                          System.out.println("INQUIRY_COMPLETED");
    
                          break;
    
    
    
                      case DiscoveryListener.INQUIRY_TERMINATED :
    
                          System.out.println("INQUIRY_TERMINATED");
    
                          break;
    
    
    
                      case DiscoveryListener.INQUIRY_ERROR :
    
                          System.out.println("INQUIRY_ERROR");
    
                          break;
    
    
    
                      default :
    
                          System.out.println("Unknown Response Code");
    
                          break;
    
                  }
    
              }//end method
    
          }//end class
    And when I run this program I get the following error:
    Java Code:
    Exception in thread "main" javax.bluetooth.BluetoothStateException: java.lang.NoClassDefFoundError: com/sun/kvem/jsr082/bluetooth/DiscoveryAgentImpl
            at javax.bluetooth.LocalDevice.getLocalDevice(LocalDevice.java:100)
            at BluetoothDeviceDiscovery.main(BluetoothDeviceDiscovery.java:66)
    Java Result: 1
    I would really appreciate if someone could help me out, by pointing me in the right direction or giving me some advice on what API's to use, or some good books which explain how to use Bluetooth API with J2SE.

    Thank you.

  2. #2
    emceenugget is offline Senior Member
    Join Date
    Sep 2008
    Posts
    564
    Rep Power
    6

    Default

    mighty ambitious project you have, and good luck with it. are you very familiar with java? your error looks more like a mistake with file/class/package naming. it's hard to tell, though.

Similar Threads

  1. J2Se and Java
    By sweetnuts in forum Introductions
    Replies: 0
    Last Post: 10-19-2008, 10:14 PM
  2. Why to Use J2SE and Option for using this..
    By mgrprasad90 in forum Java Applets
    Replies: 0
    Last Post: 08-27-2008, 09:27 AM
  3. PC receive data via Bluetooth using JAVA
    By toncoolx in forum New To Java
    Replies: 0
    Last Post: 11-27-2007, 04:50 AM
  4. Sdk & J2se
    By Gajesh Tripathi in forum New To Java
    Replies: 0
    Last Post: 10-18-2007, 07:49 AM
  5. Infra-red, Bluetooth in Java
    By mathias in forum Networking
    Replies: 1
    Last Post: 08-07-2007, 06:48 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •