3

我已经为 Android 编写了一个应用程序。主要部分是它通过蓝牙进行通信。我有四台设备:
1. 三星 Galaxy S2
2. 三星 Galaxy Gio
3. Netsurfer touch(一款非常低端的本地 [南非] 生产的安卓平板电脑)
4. 摩托罗拉 ET1

现在我已经编写了我的应用程序 - 我需要测试完整的结构。

我首先编写了蓝牙端(因为那是我经验最少的)——我唯一可以使用的设备是 Netsurfer touch。它使用标准的蓝牙驱动程序,并且运行良好——我可以在 PC 上接收信号并很好地处理它。

我的应用程序的其他部分无法在 Netsurfer 上完成,因为它的规格太低(它实际上没有所需的硬件)。我已经尝试了 Motorlla,整个应用程序按预期工作。

但现在 Galaxy 手机(包括 Gio 和 S2)拒绝与任何计算机连接。他们会很好地配对,但是当我使用蓝牙代码进行连接时,我只会得到一个IOException: Service discovery failed

由于这不是我的代码,我开始查找计算机上缺少驱动程序:“蓝牙外围设备” - 错误代码未安装此设备的驱动程序。(代码 28)

我尝试使用 Windows 更新,但失败了,我安装了 Samsung 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/蓝牙/聊天/?r=49

4

2 回答 2

6

在我的应用程序中,我有蓝牙,正在使用现有的 Galaxy S(1 和 2)、Nexus One、HTC Desire、华硕平板电脑和其他一些设备。我的应用程序来自 android 2.1,我的代码中有这个 reflation(使用 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,一切正常。

于 2012-03-15T14:20:07.100 回答
2

问题是,较新的三星设备(和 HTC 感应设备)没有完整的蓝牙堆栈。

这就是为什么像这样的应用程序也不能在这些设备上运行的原因。唯一的解决方案是刷新完整的蓝牙堆栈,例如通过刷新 Cyanogenmod Rom。

于 2012-03-09T10:02:07.173 回答