您的位置:首页 > 产品设计 > UI/UE

Android学习之Bluetooth开发总结<续>

2013-07-18 17:05 483 查看
private class ConnectThread extends Thread {
private  BluetoothSocket mmSocket;
private  BluetoothDevice mmDevice;
ImprovedBluetoothDevice improvedBluetoothDevice;
public ConnectThread(BluetoothDevice device) {
mmDevice = device;
BluetoothSocket tmp = null;

improvedBluetoothDevice = new ImprovedBluetoothDevice(device);
}

public void run() {
Log.i(TAG, "BEGIN mConnectThread");
//setName("ConnectThread");
// Always cancel discovery because it will slow down a connection
//蓝牙连接之前需要取消查找
mAdapter.cancelDiscovery();

//String connectionType = "?";

//蓝牙设备有三十个端口号,是从1到30
for(int port = 1; port < 31; port++) {
Log.d(TAG, "Connecting with port: " + port);

try {
//connectionType = "Secure";
Log.d(TAG, "Attempting createRfcommSocket");

//分别使用1-30这些端口
BluetoothSocket s = improvedBluetoothDevice.createRfcommSocket(port);
s.connect();

mmSocket = s;
} catch (Exception ex) {
Log.e(TAG, ex.toString());
//TODO 异常处理
//赋值为空
mmSocket = null;
try {
//connectionType = "Insecure";
Log.d(TAG, "Attempting createInsecureRfcommSocket");

//如果在连接过程中出现异常,就使用第二种方案来进行连接
BluetoothSocket s = improvedBluetoothDevice.createInsecureRfcommSocket(port);
s.connect();

mmSocket = s;
} catch (Exception ex2) {
Log.e(TAG, ex2.toString());
//异常处理
//如果再次连接还是出异常,就再次赋值为空
mmSocket = null;
}
}

if (mmSocket != null) {
Log.d(TAG, "Connection succeeded with " + connectionType + " connection on port " + port);
break;
}
}

//如果还没有获取到mmSocket ,就使用以下方法
//蓝牙串口连接有两种方式,一种是使用端口号,另一种是使用UUID,如果1-30的端口号都不能连接上,就使用UUID进行连接
if (mmSocket == null) {
try {
mmSocket = improvedBluetoothDevice.createRfcommSocketToServiceRecord(MY_UUID);
mmSocket.connect();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

// Reset the ConnectThread because we're done
//synchronized (BluetoothChatService.this) {
//mConnectThread = null;
//}

// Start the connected thread
//connected(mmSocket, mmDevice);
}

public void cancel() {
try {
if(mmSocket!=null)
{
mmSocket.close();
mmSocket = null;
}
} catch (IOException e) {
Log.e(TAG, "close() of connect socket failed", e);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: