我正在开发一款需要为其他设备提供Bluetooth ServerSocket的应用。 我必须使用的设备建立连接,忽略uuid,只查找具有正确服务名称的设备。
我使用以下命令打开BluetoothServerSocket:
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
tmp = mBluetoothAdapter.listenUsingRfcommWithServiceRecord("PWAccesP", uuid);
我的问题是,Android SDP不会发布ServiceName。当我使用sdptool查询可用服务时,我得到以下输出:
...
Service RecHandle: 0x10008
Service Class ID List:
UUID 128: 00001101-0000-1000-8000-00805F9B34FB
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 6
因此服务可用,但未列出服务名称,因此我的设备无法连接。
我正在使用Android 2.1的HTC Wildfire。
我现在的问题是,这是HTC蓝牙堆栈的问题,它是Wildfire的问题还是Android 2.1的问题?
不幸的是我没有其他手机可以查看,所以我要求社区帮助我...这有没有人遇到过这个或者知道如何让服务名出现?
顺便说一下: 我能够验证BluetoothSocketServer使用通过uuid而不是服务名称连接的其他设备进行连接。
谢谢和问候, 迈克尔
答案 0 :(得分:0)
将我的Wildfire设备更新到Android 2.2后,蓝牙服务名称现已正确连接。如果修复来自蓝牙堆栈或Android 2.2我不清楚,但无关紧要,因为它正在工作......
答案 1 :(得分:0)
尝试使用2.2上的Wildfire上的PWAccessP设备(以及sdptool中正确显示的服务名称)进行更多工作。不幸的是,我也无法建立与设备的连接。
我这里有两个不同的PWAccessP设备,两者都没有连接到Wildfire。
此外,我尝试使用我找到的服务器套接字perl脚本将它们连接到我的笔记本电脑。我能够使用第三台设备连接到我的笔记本电脑,但PWAccessP没有。我的BT经理显示了一个简短的活动,但我猜这只是sdp部分,但没有建立配对/连接。
但是,我有一个正在运行的Blackberry应用程序,它成功地与PWAccessP设备合作,因此必须以某种方式实现。 (我有源代码,但它并没有真正帮助Android ...)
如果有人找到解决此问题的方法,请告诉我们。
此致 迈克尔
答案 2 :(得分:0)
我怀疑问题在于Android下面的特定硬件,因为至少有一些Android手机可以使用这些设备(例如Motorola Droid)。
有人试过放弃Android API并只使用Java和JSR-82(蓝牙扩展)来从Android上的这些设备接收数据吗?这可能与Android API不同,并且可能只是起作用......
答案 3 :(得分:0)
来自我方的最终答案(如果其他人仍在努力):
我现在在使用Android 2.3.x的Nexus S上尝试过,我终于能够连接PWAccessP设备了。花了我一些时间配对,手机必须始终可见,但至少我让它工作。
此致 迈克尔