Blackberry 黑莓蓝牙开发帮助

Blackberry 黑莓蓝牙开发帮助,blackberry,bluetooth,Blackberry,Bluetooth,我的蓝牙应用程序已经被卡住好几天了。 它的作用是使用串行端口协议从蓝牙设备接收数据。。。 当手机和设备需要发送信息时,应用程序在后台运行,打开蓝牙并尝试发送数据帧 问题是使用此应用程序可以连接多个设备。我也没有把手机作为服务器,这样它就可以接收连续的数据。 这意味着我可以使用acceptEndOpen()创建Connector.open(“btspp:localhost:…”),但是这个函数只启动一次,我不能无休止地重新启动 解决方案是启动AcceptOnDopen() 蓝牙通话结束后。。。重

我的蓝牙应用程序已经被卡住好几天了。 它的作用是使用串行端口协议从蓝牙设备接收数据。。。 当手机和设备需要发送信息时,应用程序在后台运行,打开蓝牙并尝试发送数据帧

问题是使用此应用程序可以连接多个设备。我也没有把手机作为服务器,这样它就可以接收连续的数据。 这意味着我可以使用acceptEndOpen()创建Connector.open(“btspp:localhost:…”),但是这个函数只启动一次,我不能无休止地重新启动


解决方案是启动AcceptOnDopen() 蓝牙通话结束后。。。重新启动函数,但我不能(我只是重新创建使端口打开的对象)


我尝试使用但未成功: -PushRegistry(“btspp”不兼容) -Connector.open(),带有客户端的mac地址(但这不是自阻塞)

如果有人能帮我解决这个问题。因为我已经在黑莓论坛上彻底搜索过了

谢谢你,法布里斯


PS:如果你需要源代码,我可以给你。。。但是我不确定这是否能帮助你回答我。

我刚刚把
acceptAndOpen()
:


现在一切正常。

确保在从acceptAndOpen获得连接后,将该连接传递到新线程。这允许当前的“服务器”线程返回并接受另一个连接(假设它处于循环中)。

很抱歉我的回答太晚了

我创建了一个类:BluetoothReceiver,它是在后台启动的()。 我的源代码中有一部分用于尝试帮助您:

public void start() {
    try {
    _connector = (StreamConnectionNotifier) Connector.open("btspp://localhost:" + MY_UUID, Connector.READ);
    Runnable r = new Runnable() {
        public void run() {
            while(true) {
                try {
                    StreamConnection connection = _connector.acceptAndOpen();
                    onConnectionOpen(connection);
                }
                catch (IOException e) {
                    // Connection failed
                    break;
                }
            }
        }
    };
    Thread t = new Thread(r);
    t.start();
}
catch (IOException e) {
    // e.getMessage()
}

private void onConnectionOpen(StreamConnection connection) {
    RemoteDevice device = null;
    try {
        device = RemoteDevice.getRemoteDevice(connection);
    } catch (IOException e) {
        // e.getMessage()
    }
    if(device != null) {
        // Make your own process: read, write, pair, ...
    }
}
你好,法布里斯

public void start() {
    try {
    _connector = (StreamConnectionNotifier) Connector.open("btspp://localhost:" + MY_UUID, Connector.READ);
    Runnable r = new Runnable() {
        public void run() {
            while(true) {
                try {
                    StreamConnection connection = _connector.acceptAndOpen();
                    onConnectionOpen(connection);
                }
                catch (IOException e) {
                    // Connection failed
                    break;
                }
            }
        }
    };
    Thread t = new Thread(r);
    t.start();
}
catch (IOException e) {
    // e.getMessage()
}

private void onConnectionOpen(StreamConnection connection) {
    RemoteDevice device = null;
    try {
        device = RemoteDevice.getRemoteDevice(connection);
    } catch (IOException e) {
        // e.getMessage()
    }
    if(device != null) {
        // Make your own process: read, write, pair, ...
    }
}