本人用j2se做PC上的蓝牙程序开发,使用bluecove.jar实现,初始化本地设备时可以正常实现,但是在设备搜索时却总是不能找到。
public void inquiryCompleted(int disType) {
JOptionPane.showMessageDialog(null, "inquiryCompleted:"+disType);
synchronized(this){
notify();
}
}
这个方法的 disType总是7,诸们兄弟谁能告诉我问题出在了哪里?
注:两台机器的蓝牙用的都是usb的那种,两台机器之间可以互相搜索到的,但是程序就出现了上面说的错误。

解决方案 »

  1.   

    你的代码能不能贴全一点,那个disType明显应该是个随机值
      

  2.   

    蓝牙是那种十几块钱免驱动的那种,代码如下:public class BtService implements Runnable, DiscoveryListener {

    private DefaultListModel _dlmDevice;
    private DefaultListModel _dlmMessage;
    private JButton _btnDiscovery;

    private Vector<RemoteDevice> _devices = new Vector<RemoteDevice>();
    private Vector<ServiceRecord> _records = new Vector<ServiceRecord>();
    private int[] _transIds;
    private DiscoveryAgent _discoveryAgent;

    public BtService(JButton btnDiscovery, DefaultListModel dlmDevice, DefaultListModel dlmMessage){
    _btnDiscovery = btnDiscovery;
    _dlmDevice = dlmDevice;
    _dlmMessage = dlmMessage;
    }

    private boolean initLocalDevice(){
    boolean isReady = false;
    try{
    LocalDevice localDevice = LocalDevice.getLocalDevice();
    localDevice.setDiscoverable(DiscoveryAgent.GIAC);
    _discoveryAgent = localDevice.getDiscoveryAgent();
    JOptionPane.showMessageDialog(null, localDevice.getBluetoothAddress().toString());
    JOptionPane.showMessageDialog(null, LocalDevice.getProperty("bluetooth.api.version"));
    //ConfigDal.getConfigInfo();
    isReady = true;
    }
    catch (Exception ex){
    JOptionPane.showMessageDialog(null, ex.getMessage());
    }
    return isReady;
    } @Override
    public void deviceDiscovered(RemoteDevice remoteDevice, DeviceClass deviceClass) {
    JOptionPane.showMessageDialog(null, "deviceDiscovered");
    if (_devices.indexOf(remoteDevice) == -1){
    _devices.addElement(remoteDevice);
    }
    } @Override
    public void inquiryCompleted(int disType) {
    //DiscoveryListener.INQUIRY_COMPLETED
    JOptionPane.showMessageDialog(null, "inquiryCompleted:"+disType);
    synchronized(this){
    notify();
    }
    } @Override
    public void serviceSearchCompleted(int transId, int respCode) {
    JOptionPane.showMessageDialog(null, "serviceSearchCompleted");
    for (int i=0;i<_transIds.length;i++){
    if (_transIds[i] == transId){
    _transIds[i] = -1;
    }
    }

    boolean finished = true;
    for (int i=0;i<_transIds.length;i++){
    if (_transIds[i] >= 0){
    finished = false;
    break;
    }
    }

    if (finished){
    synchronized(this){
    notify();
    }
    }
    } @Override
    public void servicesDiscovered(int transId, ServiceRecord[] serviceRecords) {
    JOptionPane.showMessageDialog(null, "servicesDiscovered");
    for (int i=0;i<serviceRecords.length;i++){
    _records.addElement(serviceRecords[i]);
    _dlmDevice.addElement(serviceRecords[i].toString());
    }
    } @Override
    public void run() {

    if (!initLocalDevice()){
    _dlmMessage.addElement("获取本地蓝牙设备失败!");
    return;
    } try{
    _discoveryAgent.startInquiry(DiscoveryAgent.GIAC, this);
    }
    catch (Exception ex){
    JOptionPane.showMessageDialog(null, ex.getMessage());
    return;
    }

    try{
    synchronized(this){
    wait();
    }
    }
    catch (Exception ex){
    JOptionPane.showMessageDialog(null, ex.toString());
    } _btnDiscovery.setEnabled(true);
    }}
      

  3.   

    各位老大,都有哪些原因会引起搜索周围设备错误呢? DiscoveryListener.INQUIRY_ERROR
      

  4.   


    我也在写j2se蓝牙软件,这个bluecove.jar该怎么用啊