0

我使用此代码 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

4

3 回答 3

1

我在linux中尝试时遇到了同样的问题。但是原因(仍然不确定)当您运行蓝牙android应用程序而不使用bluecove打开Java服务器时,它会尝试连接已经安装的蓝牙软件。您可能会看到蓝牙图标,要求授予对移动设备的访问权限。

为了解决这个问题,我只是更改了服务器和应用程序中的 uuid(比如从 1103 到 1101,反之亦然),然后先启动服务器,然后再启动 android 应用程序。Java 服务器部分开始监听。

我认为的原因可能是 uuid 没有找到 bluecove stack 服务服务器,它连接到侦听相同 uuid 的设备服务器。因此,在更改 uuid 并确保在启动 android 应用程序之前服务器正在运行之后,应该可以解决问题。

如果您连接到蓝牙系统应用程序而不是 Java bluecove 服务器,

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

于 2014-07-23T12:01:53.857 回答
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); 

两者需要在客户端和服务器上匹配。

于 2012-09-06T09:40:47.073 回答
0

是的,这也发生在我身上,我建议你在 shell 显示waiting for connection时触发以下命令。

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 )
{

}
于 2012-08-31T03:59:39.667 回答