Service Discovery Failed
I'm trying to create a basic bluetooth application, for testing the device.
I got the code from developer.android. Here is the link : http://developer.android.com/guide/topics/connectivity/bluetooth.html#ConnectingDevices
Here is run part of my thread code:
public void run() {
mBluetoothAdapter.cancelDiscovery();
Log.i(TAG, "Discovery Cancel!");
try {
Log.i(TAG, "Connection Started");
mmSocket.connect();
Log.i(TAG, "Connection Ended");
} catch (IOException e) {
try {
Log.e(TAG, "Connection Failed", e);
mmSocket.close();
} catch (IOException e2) {
Log.e(TAG, "Connection Close Failed", e2);
}
return;
}
Whatever I have tried mmSocket.connect();
never works. Always throws an IOException and I get that log from my logcat:
java.io.IOException: Service discovery failed
at android.bluetooth.BluetoothSocket$SdpHelper.doSdp(BluetoothSocket.java:403)
at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:213)
I've looked at these articles, and tried the written things, none of them has solved my problem.
Android Bluetooth: Service Discovery Failed, connection to Desktop/Laptop
Service discovery failed exception using Bluetooth on Android
Bluetooth connection on Android ICS not possible
Android Bluetooth java.io.IOException: Connection refused?
Btw I'm working on android ics 4.0.4.
I know that is not device problem, cause I've tried this app on different devices.
I don't know and I still don't understand the UUID stuff but the problem was the UUID. I'm using the UUID which I got from the kernel logs and it is 00001105-0000-1000-8000-00805F9B34FB
.
它为我工作
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();
The following code snippet works for me. Try it...
BluetoothDevice mmDevice;
boolean temp = mmDevice.fetchUuidsWithSdp();
UUID uuid = null;
if( temp ){
uuid = mmDevice.getUuids()[0].getUuid();
}
tmp = device.createRfcommSocketToServiceRecord(uuid);
链接地址: http://www.djcxy.com/p/82014.html
上一篇: 基于Android蓝牙聊天示例的应用发现服务发现失败
下一篇: 服务发现失败