WEB开发网
开发学院手机开发Android 开发 Android BluetoothSocket 类建立蓝牙通讯套接字 阅读

Android BluetoothSocket 类建立蓝牙通讯套接字

 2010-03-12 15:36:00 来源:WEB开发网   
核心提示:本文开始通过BluetoothSocket类建立有关蓝牙通讯的套接字,从Android 2.0开始支持这一特性,Android BluetoothSocket 类建立蓝牙通讯套接字,蓝牙和LAN一样通过MAC地址来识别远程设备,建立完通讯连接RFCOMM通道后以输入、输出流方式通讯,这里我们以后会讲解高负载情况下性能优

本文开始通过BluetoothSocket类建立有关蓝牙通讯的套接字。从Android 2.0开始支持这一特性,蓝牙和LAN一样通过MAC地址来识别远程设备,建立完通讯连接RFCOMM通道后以输入、输出流方式通讯。 一、连接设备

蓝牙通讯分为server服务器端和client客户端,它们之间使用BluetoothSocket 类的不同方法来获取数据,

1. 作为服务器

如果一个设备需要和两个或多个设备连接时,就需要作为一个server来传输,在android中提供了BluetoothServerSocket类来处理用户发来的信息,服务器端套接字在接受(accepted) 一个客户发来的BluetoothSocket时作出相应的响应。示例代码如下:

private class AcceptThread extends Thread {

private final BluetoothServerSocket cwjServerSocket;

public AcceptThread() {

BluetoothServerSocket tmp = null; //使用一个临时对象代替,因为cwjServerSocket定义为final

try {

tmp = myAdapter.listenUsingRfcommWithServiceRecord(NAME, CWJ_UUID); //服务仅监听

} catch (IOException e) { }

cwjServerSocket = tmp;

}

public void run() {

BluetoothSocket socket = null;

while (true) { //保持连接直到异常发生或套接字返回

try {

socket = cwjServerSocket.accept(); //如果一个连接同意

} catch (IOException e) {

break;

}

if (socket != null) {

manageConnectedSocket(socket); //管理一个已经连接的RFCOMM通道在单独的线程。

cwjServerSocket.close();

break;

}

}

}

public void cancel() { //取消套接字连接,然后线程返回

try {

cwjServerSocket.close();

} catch (IOException e) { }

}

}

在这里android开发网提醒大家需要注意的是服务器一般处理多个任务不嫩阻塞,必须使用异步的方法这里我们开了一个线程,目前Android的虚拟机上层没有提供I/O模型,这里我们以后会讲解高负载情况下性能优化解决方案。

2. 作为客户端

以便初始化一个连接到远程设备,首先必须获取本地的BluetoothDevice对象,相关的方法在我们

1 2  下一页

Tags:Android BluetoothSocket 建立

编辑录入:coldstar [复制链接] [打 印]
赞助商链接