目前我正在开发一个新的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函数调用是阻塞代码。