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