2013-06-02 8 views
8

habe ich versucht, den folgenden Code für ein Bluetooth-Gerät entdeckenFehler bei Bluetooth Device Discovery

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
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; 
import javax.bluetooth.UUID; 

/** 
* 
* Class that discovers all bluetooth devices in the neighbourhood, 
* 
* Connects to the chosen device and checks for the presence of OBEX push service in it. 
* and displays their name and bluetooth address. 
* 
* 
*/ 
public class BluetoothServiceDiscovery implements DiscoveryListener{ 

    //object used for waiting 
    private static Object lock=new Object(); 

    //vector containing the devices discovered 
    private static Vector vecDevices=new Vector(); 

    private static String connectionURL=null; 


    /** 
    * Entry point. 
    */ 
    public static void main(String[] args) throws IOException { 

     BluetoothServiceDiscovery bluetoothServiceDiscovery=new BluetoothServiceDiscovery(); 

     //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, bluetoothServiceDiscovery); 

     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)+")"); 
      } 
     } 

     System.out.print("Choose the device to search for Obex Push service : "); 
     BufferedReader bReader=new BufferedReader(new InputStreamReader(System.in)); 

     String chosenIndex=bReader.readLine(); 
     int index=Integer.parseInt(chosenIndex.trim()); 

     //check for obex service 
     RemoteDevice remoteDevice=(RemoteDevice)vecDevices.elementAt(index-1); 
     UUID[] uuidSet = new UUID[1]; 
     uuidSet[0]=new UUID("1105",true); 

     System.out.println("\nSearching for service..."); 
     agent.searchServices(null,uuidSet,remoteDevice,bluetoothServiceDiscovery); 

     try { 
      synchronized(lock){ 
       lock.wait(); 
      } 
     } 
     catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 

     if(connectionURL==null){ 
      System.out.println("Device does not support Object Push."); 
     } 
     else{ 
      System.out.println("Device supports Object Push."); 
     } 
    } 


    /** 
    * Called when a bluetooth device is discovered. 
    * Used for device search. 
    */ 
    public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) { 
     //add the device to the vector 
     if(!vecDevices.contains(btDevice)){ 
      vecDevices.addElement(btDevice); 
     } 
    } 


    /** 
    * Called when a bluetooth service is discovered. 
    * Used for service search. 
    */ 
    public void servicesDiscovered(int transID, ServiceRecord[] servRecord) { 
     if(servRecord!=null && servRecord.length>0){ 
      connectionURL=servRecord[0].getConnectionURL(0,false); 
     } 
     synchronized(lock){ 
      lock.notify(); 
     } 
    } 


    /** 
    * Called when the service search is over. 
    */ 
    public void serviceSearchCompleted(int transID, int respCode) { 
     synchronized(lock){ 
      lock.notify(); 
     } 
    } 


    /** 
    * Called when the device search is over. 
    */ 
    public void inquiryCompleted(int discType) { 
     synchronized(lock){ 
      lock.notify(); 
     } 

    }//end method 


}//end class 

bekam aber den folgenden Fehler:

Native Library intelbth_x64 not available 
Native Library bluecove_x64 not available 
Exception in thread "main" javax.bluetooth.BluetoothStateException: BlueCove libraries not available 
    at com.intel.bluetooth.BlueCoveImpl.createDetectorOnWindows(BlueCoveImpl.java:896) 
    at com.intel.bluetooth.BlueCoveImpl.detectStack(BlueCoveImpl.java:439) 
    at com.intel.bluetooth.BlueCoveImpl.access$500(BlueCoveImpl.java:65) 
    at com.intel.bluetooth.BlueCoveImpl$1.run(BlueCoveImpl.java:1020) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.intel.bluetooth.BlueCoveImpl.detectStackPrivileged(BlueCoveImpl.java:1018) 
    at com.intel.bluetooth.BlueCoveImpl.getBluetoothStack(BlueCoveImpl.java:1011) 
    at javax.bluetooth.LocalDevice.getLocalDeviceInstance(LocalDevice.java:75) 
    at javax.bluetooth.LocalDevice.getLocalDevice(LocalDevice.java:95) 
    at BluetoothServiceDiscovery.main(BluetoothServiceDiscovery.java:42) 

während in Eclipse-Codierung. Ich verwende bluecove 2.1.0 und eine 64-Bit-Version von Windows 8.

Kann mir bitte jemand eine Lösung vorschlagen?

+0

Welche Version von Win 8 verwenden Sie? 32/64 Bit? – ridoy

+0

Ich verwende 64-Bit-Windows 8 und meine Eclipse-Version war auch 64-Bit. – Ranveer

+0

dann verwenden Sie diese BlueCove-Bibliothek 64-Bit-Version .. – ridoy

Antwort

12
+1

Für die gleiche Version 2.1.1 von BlueCove enthalten einige Versionen native Bibliotheken, andere nicht. Ich hatte ein Projekt mit einer .jar-Datei erhalten, die ohne native Bibliotheken ausgeliefert wurde. Das erneute Laden und Kopieren über die neue .jar-Datei löste mein Problem. –