我已经为Android编写了一个应用程序。主要部分是它通过蓝牙进行通信。我有四个设备:
1.三星Galaxy S2
2.三星Galaxy Gio
3. Netsurfer touch(AREALLY低端本地[南非]制作安卓平板电脑)
4. Motorolla ET1
现在我已经编写了我的应用程序 - 我需要测试完整的结构。
我首先写了蓝牙方面(因为那是我最不经验的) - 我唯一可以上班的设备是Netsurfer触控。它使用标准的蓝牙驱动程序,它完美地工作 - 我可以在PC上接收信号并完美地处理它。
我的应用程序的OTHER部分无法在Netsurfer上完成,因为它的规格太低(它实际上没有所需的硬件)。我尝试了Motorlla,整个应用程序按预期工作。
但现在Galaxy手机(Gio和S2)拒绝连接任何电脑。他们会很好,但是当我使用蓝牙代码连接时,我得到一个 IOException:服务发现失败
由于它不是我的代码,我开始查看我的计算机上缺少驱动程序:“蓝牙外围设备” - 错误代码未安装此设备的驱动程序。 (守则28)
我尝试过使用Windows更新,但是失败了,我安装了三星Kies,并且我已经在两台独立的计算机上验证了这个问题 - 两者都运行Windows 7 x64
硬件ID是:
BTHENUM {00001132-0000-1000-8000-00805f9b34fb} _VID&安培; 0001000f_PID&安培; 0000
BTHENUM {00001132-0000-1000-8000-00805f9b34fb} _LOCALMFG&安培; 000F
我不相信代码存在问题,但是使用设备的驱动程序。但是如果你需要代码,我使用的是以下代码: http://code.google.com/p/backport-android-bluetooth/source/browse/trunk/backport-android-bluetooth201/src/backport/android/bluetooth/chat/?r=49
答案 0 :(得分:6)
在我的应用程序中我有蓝牙,工作股票galaxy S(1和2),Nexus One,HTC Desire,华硕平板电脑和其他一些设备。 我的应用程序来自android 2.1,我在我的代码中有这个反射(使用SDK,它因为未知的原因而失败,因为“服务发现失败”错误消息)修复了错误:
BluetoothSocket mSocket = null;
mBluetoothAdapter.cancelDiscovery();
Method method;
try {
method = mBluetoothDevice.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
mSocket = (BluetoothSocket) method.invoke(mBluetoothDevice,1);
} catch (NoSuchMethodException e1) {
e1.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
mSocket.connect();
但除此之外,我使用sdk,一切正常。
答案 1 :(得分:2)
问题是,较新的三星设备(和HTC传感设备)没有完整的蓝牙堆栈。
这就是为什么像this one这样的应用程序也无法在这些设备上运行。唯一的解决方案是闪存完整的蓝牙堆栈,例如通过闪烁Cyanogenmod Rom。