2013-06-02 3 views
8

Я попытался следующий код для обнаружения устройства BluetoothОшибка обнаружения устройств Bluetooth

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 

но получил следующее сообщение об ошибке:

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) 

при кодировании в затмении. Я использую bluecove 2.1.0 и 64-разрядную версию Windows 8.

Может кто-нибудь предложить мне исправить?

+0

какая версия выигрыша 8 вы используете? 32/64 бит? – ridoy

+0

Я использую 64-битную Windows 8, а моя версия Eclipse также была 64-разрядной. – Ranveer

+0

затем используйте эту библиотеку bluecove 64-разрядную версию .. – ridoy

ответ

12

этих две ссылок помог мне

это совместимый 64бит

http://snapshot.bluecove.org/distribution/download/2.1.1-SNAPSHOT/2.1.1-SNAPSHOT.62/

документации

http://www.jsr82.com/jsr-82-initialization-localdevice/

+1

Для той же версии 2.1.1 из bluecove некоторые версии включают в себя собственные библиотеки, а другие - нет. Я получил проект с файлом .jar, загруженным без родных библиотек, поэтому перезагрузка и копирование по новому файлу .jar решили мою проблему. –

2

Существует даже новая версия: http://snapshot.bluecove.org/distribution/download/2.1.1-SNAPSHOT/2.1.1-SNAPSHOT.63/

Кроме того, важно отметить, что это заменяет любой другой кувшин bluecove. Поскольку в сообщении указываются отсутствующие библиотеки, я изначально добавил, и это вызвало конфликт версий.

Смежные вопросы