我使用此代码
luugiathuy.com/2011/02/android-java-bluetooth/
服务器端是PC
客户端是设备,应用程序基于蓝牙聊天示例
设备(galaxy tab 7.0)可以与PC建立连接。 然而,PC服务器(用java和bluecove编写)什么也没做,因为没有连接。
尝试查找连接设备的循环是
while(true) {
try {
System.out.println("waiting for connection...");
connection = notifier.acceptAndOpen();
Thread processThread = new Thread(new ProcessConnectionThread(connection));
processThread.start();
} catch (Exception e) {
e.printStackTrace();
return;
}
Output on PC:
uuid: 0000110100001000800000805f9b34fb
waiting for connection...
编辑:源代码下载https://github.com/luugiathuy/Remote-Bluetooth-Android
答案 0 :(得分:1)
我在linux上尝试的时候遇到了同样的问题。但是原因(仍然不确定)当你运行蓝牙android应用程序而没有使用bluecove打开Java服务器时,它将尝试连接已安装的蓝牙软件。您可能会看到要求授予移动设备访问权限的蓝牙图标。
要解决这个问题,我只是更改了服务器和应用程序中的uuid(比如从1103到1101,反之亦然),然后首先启动服务器,然后启动android应用程序。 Java服务器部分开始监听。
我认为可能是uuid的原因是当它没有找到bluecove堆栈服务服务器时,它连接到同一个uuid上的设备服务器。所以在更改uuid并确保服务器正在运行之后启动android应用程序应该解决问题。
如果您已连接到蓝牙系统应用程序而不是Java蓝莓服务器,
1) First change the uuid both server and android application.
2) Second make sure your server is running and listening on same uuid.
3) Launch the android application which try to communicate on same rfcomm connection uuid.
我从中获取的服务器部件代码:http://www.jsr82.com/jsr-82-sample-spp-server-and-client/ 图书馆:http://code.google.com/p/bluecove/downloads/list
答案 1 :(得分:0)
是的,它也发生在我身上,我建议你在shell上表示等待连接。
hcitool cc 58:C3:8B:D7:FA:F4
此处58:C3:8B:D7:FA:F4
是我设备的蓝牙地址,应由设备的蓝牙地址替换。
要获取设备的蓝牙地址,只需在具有可发现模式的设备中启动蓝牙并执行hcitool scan
命令,它将显示所有活动设备及其名称和蓝牙地址。
您可以通过Java代码运行上述hcitool cc 58:C3:8B:D7:FA:F4
命令,如下所示,
try
{
Process p=Runtime.getRuntime().exec("hcitool cc 58:C3:8B:D7:FA:F4");
}
catch ( Exception e )
{
}
答案 2 :(得分:0)
程序的输出显示它侦听UUID 0x1101。真的吗?您引用的示例显示它正在侦听不同的UUID。其服务类ID为0x04c6093b,设置如下:
34 UUID uuid = new UUID(80087355); // "04c6093b-0000-1000-8000-00805f9b34fb"
35 String url = "btspp://localhost:" + uuid.toString() + ";name=RemoteBluetooth";
36 notifier = (StreamConnectionNotifier)Connector.open(url);
两者需要在客户端和服务器上匹配。