必须在Android上选择哪个UUID用于蓝牙连接

时间:2016-10-22 13:06:39

标签: java android sockets bluetooth rfcomm

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

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

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我认为你在这里缺少接受声明。 听完后你的下一个语句应该是tmp.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();
}

另外,有一点需要注意,接受函数调用是阻塞代码。

希望这有帮助。