最近项目中需要运用到蓝牙,在学习的过程中,发现使用官方的demo可以搜索到设备,但是连接时总会报错(service discovery failed),通过百度找到了一种解决方法,在此记录一下:
将BluetoothChatService.java将
try {
tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
} catch (IOException e) {
Log.e(TAG, "create() failed", e);
}
改为
try {
Method m = device.getClass().getMethod("createRfcommSocket", new Class[]{int.class});
try {
tmp = (BluetoothSocket)m.invoke(device, Integer.valueOf(2));
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (NoSuchMethodException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
这样就可以找到设备并连接了。
注:这个问题出现在4.2.2系统及以下的蓝牙demo中,4.3及以上可在这里下载相关demo:http://download.csdn.net/detail/superyu1992/9554193