服务发现失败
我正在尝试创建一个基本的蓝牙应用程序,用于测试设备。
我从developer.android获得了代码。 这里是链接:http://developer.android.com/guide/topics/connectivity/bluetooth.html#ConnectingDevices
这里是我的线程代码的一部分:
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;
}
无论我尝试过什么mmSocket.connect();
从不工作。 总是抛出一个IOException,并从logcat中获取该日志:
java.io.IOException: Service discovery failed
at android.bluetooth.BluetoothSocket$SdpHelper.doSdp(BluetoothSocket.java:403)
at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:213)
我看过这些文章,并尝试了书面的东西,他们都没有解决我的问题。
Android蓝牙:服务发现失败,连接到桌面/笔记本电脑
在Android上使用蓝牙的服务发现失败例外
Android ICS上的蓝牙连接不可能
Android蓝牙java.io.IOException:连接被拒绝?
顺便说一句我正在研究android ics 4.0.4。
我知道这不是设备问题,因为我在不同的设备上试过这个应用程序。
我不知道,但我仍然不明白UUID的内容,但问题在于UUID。 我使用的是我从内核日志中获得的UUID,它是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();
以下代码片段适用于我。 尝试一下...
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/82013.html