根据我的研究,这很可能是由于UUID错误或我的PC不支持SPP。
我的SG4用作服务器,而PC则用作客户端。当我使用标准串行UUID时,我的Android代码在.connect()
之后永远不会执行。
我以为我已经通过:mmDevice.getUuids()
,然后使用其中一个UUID修复了它。是的,它已经执行了更多的代码。但是,后来我发现它没有设置串行连接,而是一些不同的连接。
代码:
// ParcelUuid[] list = mmDevice.getUuids();
// UUID uuid = UUID.fromString(list[0].toString());
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); //Standard SerialPortService ID
mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);
mmSocket.connect();
mmOutputStream = mmSocket.getOutputStream();
数组list
包含这些UUID:
00001105-0000-1000-8000-00805f9b34fb
00001106-0000-1000-8000-00805f9b34fb
0000111b-0000-1000-8000-00805f9b34fb
00001115-0000-1000-8000-00805f9b34fb
这是否意味着我的PC不支持串行连接或什么?我正在使用Windows 8。
支持串行连接的SPP配置文件与您的操作系统无关,而与PC中安装的蓝牙模块有关。
知道您的系统是Windows 8,我想您的PC是相对新的,因此肯定会带来不支持SPP的新蓝牙模块。
您仍然可以使用外部蓝牙USB加密狗,该蓝牙配置文件如Asus Bluetooth Bt211。
PC和Android设备通常不会宣传SPP服务配置文件,直到先前使用配对的远程设备或使用本地应用程序正确建立了SPP服务配置文件。这是有道理的,因为PC或Android不知道当未知数据流开始无线上时该怎么办。
与SPP设备配对后,通常分配一个虚拟COM端口。有时,在打开COM端口之前,不启用SPP服务。
一个Android设备需要一个应用程序来打开SPP服务,并注册侦听器。