在service服务中自动搜索蓝牙,自动连接蓝牙一直连接不上报java.io.IOException: [JS

Android 码拜 4年前 (2016-09-25) 544次浏览
我们这边是这样写的
private static final UUID MY_UUID = UUID
.fromString(“00001101-0000-1000-8000-00805F9B34FB”);
/**
* 用于尝试连接其他设备的线程
*
* @author bao
*
*/
private class ConnectThread extends Thread {
private  BluetoothSocket myBtSocket;
private final BluetoothDevice mmDevice;
private InputStream mInputStream;
private OutputStream mOutputStream;
public ConnectThread(BluetoothDevice device) {
mmDevice = device;
}
public void run() {
setName(“ConnectThread“);
btAdapter.cancelDiscovery();// 取消搜索设备
Log.d(TAG, “name=”+mmDevice.getName());
try {
myBtSocket = mmDevice.createInsecureRfcommSocketToServiceRecord(MY_UUID);
mInputStream = myBtSocket.getInputStream();
mOutputStream = myBtSocket.getOutputStream();
} catch (Exception e1) {
e1.printStackTrace();
}
if(mInputStream!=null){
Log.d(TAG, “mInputStream is not null”);
try {
mInputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
mInputStream =  null;
}
if(mOutputStream!=null){
Log.d(TAG, “mOutputStream is not null”);
try {
mOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
mOutputStream=null;
}
if(myBtSocket!=null){
try {
myBtSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
myBtSocket = null;
}
try {// 连接到BluetoothSocket
myBtSocket = mmDevice.createInsecureRfcommSocketToServiceRecord(MY_UUID);
myBtSocket.connect();// 尝试连接
Log.e(TAG, “connect success”);
setState(STATE_CONNECTED);
btHandler.obtainMessage(Constant.CONNECT_TO_DEVICE, null)
.sendToTarget();
} catch (IOException e) {
setState(STATE_LISTEN);// 连接断开后设置状态为正在监听
Log.getStackTraceString(e);
e.printStackTrace();
Log.e(TAG, “connect failed”+e.toString());
btHandler.sendEmptyMessageDelayed(Constant.CONNECT_FAILED, 1000);
try {// 关闭socket
myBtSocket.close();
} catch (IOException e2) {
e.printStackTrace();
}
ConnectDeviceUtil.this.start();// 假如连接不成功,重新开启service
return;
}
synchronized (ConnectDeviceUtil.this) {// 将ConnectThread线程置空
myConnectThread = null;
}
connected(myBtSocket, mmDevice);// 开启管理连接后数据交流的线程
}
public void cancel() {
try {
myBtSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
解决方案

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明在service服务中自动搜索蓝牙,自动连接蓝牙一直连接不上报java.io.IOException: [JS
喜欢 (0)
[1034331897@qq.com]
分享 (0)