Android蓝牙配对和连接

Android蓝牙配对和连接,android,multithreading,bluetooth,Android,Multithreading,Bluetooth,嗨,我必须开发一个应用程序,所以我有一个设备(服务器)和3个客户端。 我做了所有的验证,打开蓝牙,找到设备,一切都很好。但当我要连接设备时,我不知道会发生什么 我正在使用下一个代码,当我单击一个设备时,我想连接它。我的应用程序只在主设备中 @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated meth

嗨,我必须开发一个应用程序,所以我有一个设备(服务器)和3个客户端。 我做了所有的验证,打开蓝牙,找到设备,一切都很好。但当我要连接设备时,我不知道会发生什么

我正在使用下一个代码,当我单击一个设备时,我想连接它。我的应用程序只在主设备中

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    // TODO Auto-generated method stub
    try {
        if(btADapter.isDiscovering()){
            btADapter.cancelDiscovery();
        }
        if(listAdapter.getItem(position).contains("Paired")){
            BluetoothDevice selectedDevice = devices.get(position);
            ConnectThread connect = new ConnectThread(selectedDevice);
            connect.start();
        }
        else{
            BluetoothDevice selectedDevice = devices.get(position);
            ConnectThread connect = new ConnectThread(selectedDevice);
            connect.start();
            //pairDevice(devices.get(position));
            //Toast.makeText(getApplicationContext(), "device is not paired", Toast.LENGTH_LONG).show();
        }

    } catch (Exception e) {
        System.out.println(e);
    }
}
当我执行mmSocket.connect()时;应用程序崩溃并返回:java.io.IOException:服务发现失败,我不知道该怎么办

求你了,我需要帮助。 谢谢

编辑

在寻找更多答案之后,我在这个问题()中找到了Sandeep Maram的答案,并且完美地连接起来。 代码如下:

BluetoothSocket socket = device.createInsecureRfcommSocketToServiceRecord(MY_UUID);
Method m = device.getClass().getMethod("createInsecureRfcommSocket", new Class[] {int.class});
socket = (BluetoothSocket) m.invoke(device, 1);
bluetoothAdapter.cancelDiscovery();
socket.connect();

当您尝试连接时,它将向您尝试连接的设备发送一个特定的整数代码,它必须接受传入的连接,并允许您(主设备)共享其中的文件,一旦您的设备配对,它将不再要求您再次配对,当您选择之前配对的特定设备时,它将启动连接,您可以随时随地共享数据,我建议您在执行多线程时使用Synchornise,以便一次只能有一个线程能够读取和写入数据,没有死锁或饥饿发生在您的设备最好

当你打电话时

btADapter.cancelDiscovery();
停止发现可能需要一点时间。您可以尝试在

btADapter.cancelDiscovery();


如果有帮助,请告诉我。

是的,这是第二部分。问题是我不能只连接一个设备。你能举个例子说明你所说的一切吗?这是让您开始的最好的项目,它使用的是bluecove.jar库。
btADapter.cancelDiscovery();
mmSocket.connect();