Android上的蓝牙连接必须选择哪个UUID



目前我正在开发一个新的Android应用程序。每次我想通过服务器套接字/套接字系统连接两个(配对)设备时,我都无法创建一个工作套接字。它总是返回:

java.io.IOException: read failed, socket might closed or timeout, read ret: -1

所以我的问题是:我使用无效的UUID吗?如果不是这样的话。你有什么其他的建议吗?

public Accept(BluetoothAdapter bt, BluetoothDevice device, Context context) {
            try {
                BluetoothAdapter.getDefaultAdapter().cancelDiscovery();
                BluetoothServerSocket tmp = null;
                try {
                    UUID uuid = UUID.fromString("00001101-0000-1000-8000-00294F9B3423");
    //Here is the point when it doesn't work...
                    tmp = bt.listenUsingRfcommWithServiceRecord(context.getResources().getString(R.string.bt_string_for_profile_image), uuid);
                } catch (Exception e) {
                }
                mmServerSocket = tmp;
                bt_device = device;
            } catch (Exception e) {
            }
        }

提前感谢您的帮助

我想你这里缺少accept语句。听完之后,你的下一个语句应该是temp .accept()。这将解决你的问题。所以,你的代码应该是这样的:

    try { 
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00294F9B3423"); 
Bluetoothsocket clientSocket;
//Here is the point when it doesn't work... 
tmp = bt.listenUsingRfcommWithServiceRecord(context.getResources().getString(R.string.bt_string_for_profile_image), uuid); 
clientSocket = tmp.accept();
}

另外,这里要注意的一件事是,accept函数调用是阻塞代码。

相关内容

  • 没有找到相关文章

最新更新