目前我正在开发一个新的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) {
}
}
提前感谢您的帮助。
答案 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();
}
另外,有一点需要注意,接受函数调用是阻塞代码。
希望这有帮助。