如标题所述,我的蓝牙套接字只有在调试器中运行时才会建立连接。当我在 上放置断点时connect()
,它会在我跨过大约一秒钟的时间连接时连接。当我尝试在 release 中运行时,它会立即抛出一个 IOexception,指出从套接字读取失败。我在安卓 5.1.1 上运行
尝试连接的代码
BtCommThread(BluetoothDevice btDevice, BluetoothInterface btInterface) throws IOException {//let caller handle Exception with constructor
callbacks = btInterface;
device = btDevice;
socket = device.createRfcommSocketToServiceRecord(BluetoothService.uuid);
socket.connect();//attempt connection
input = new BufferedReader(new InputStreamReader(socket.getInputStream()));//get input
output = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));//get output
}
什么可能导致蓝牙套接字仅在调试器中工作?我已经实现了一个服务,如果它失败了十次,它会重试构建我的 BtCommThread 并连接套接字。我还尝试在连接之前添加一个简单的线程睡眠,认为这可能是一个时间问题。我真的很茫然。
有谁知道什么可能有帮助?
硬件信息
安卓手机:谷歌 Nexus 5
Linux 系统:运行 debian armhf 的 Udoo MCU