3
目前我正在开发一款新的Android应用程序。我需要该应用程序的蓝牙。每次我想通过serversocket/socket系统连接两个(配对)设备时,我无法创建一个工作套接字。它总是返回:在Android上需要选择哪个UUID进行蓝牙连接
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) {
}
}
感谢您的帮助提前。
首先:感谢您的回复。但我很遗憾地说,这并没有解决我的问题。我可能没有给你足够的代码。我的代码看起来像你可以在这里看到的那样:[link](https://developer.android.com/guide/topics/connectivity/bluetooth.html#ConnectingAsAServer)所以我把它当作一个线程来处理。我在该Thread的run()方法中调用accept() - Methode。 – Swittmann
但是,只要我称之为方法bt.listenUsingRfcommWithServiceRecord(context.getResources()。getString(R.string.bt_string_for_profile_image),uuid); throws serversocket的通道是-1,所以我认为这个方法肯定是个问题? – Swittmann
Ohhh ..对不起,我不知道你的完整代码...现在,你可以在这里做的第一件事是检查listen函数返回的错误代码/异常。这将有助于我们理解错误的原因。在我阅读您提供的链接时,listen可以在这些情况下仅在出现错误时抛出异常,例如蓝牙不可用,或者权限不足或使用频道不正确。“ – aksonlyaks