前面两篇文章中我们提到了有关Android平台蓝牙的配对、发现、启用等操作,本文开始通过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对象,相关的方法在我们 Android蓝牙API之BluetoothAdapter类 的两篇文章中有讲到,这里不再赘述,相关的示例代码如下:
private class ConnectThread extends Thread {
private final BluetoothSocket cwjSocket;
private final BluetoothDevice cwjDevice;
public ConnectThread(BluetoothDevice device) {
BluetoothSocket tmp= null;
cwjDevice= device;
try {
tmp= device.createRfcommSocketToServiceRecord(CWJ_UUID);//客户端创建
} catch (IOException e) { }
cwjSocket= tmp;
}
public void run() {
myAdapter.cancelDiscovery(); //取消发现远程设备,这样会降低系统性能
try {
cwjSocket.connect();
} catch (IOException connectException) {
try {
cwjSocket.close();
} catch (IOException closeException) { }
return;
}
manageConnectedSocket(cwjSocket); //管理一个已经连接的RFCOMM通道在单独的线程。
}
public void cancel() {
try {
cwjSocket.close();
} catch (IOException e) { }
}
}
经过上面的介绍我们可以看到在Android平台上使用蓝牙通讯相对比较方便和简单,有关数据的具体通讯我们将在下次Android蓝牙API之BluetoothSocket类(2)讲到manageConnectedSocket的具体实现。
分享到:
相关推荐
总结来说,Android蓝牙API提供了一套全面的工具,使开发者能够构建各种类型的蓝牙应用,包括但不限于文件传输、健康监测设备的控制、游戏同步等。理解并熟练运用这些API,开发者可以充分利用蓝牙技术,实现设备间的...
**Android蓝牙API详解** 在Android平台上,蓝牙技术是设备间通信的重要途径,广泛应用于数据传输、设备配对、物联网(IoT)等场景。Android提供了丰富的蓝牙API,使得开发者能够轻松实现蓝牙功能,包括经典蓝牙...
深入研究源代码可以帮助我们理解Android蓝牙通信的底层工作原理,包括如何在操作系统层面建立和维护蓝牙连接,以及如何优化数据传输性能。这对于开发高效且可靠的蓝牙应用至关重要。同时,源代码可能包含了一些错误...
Android提供了一个名为BluetoothAdapter的类,它是Android蓝牙功能的主要入口点。通过这个类,我们可以检查蓝牙是否开启,扫描附近的蓝牙设备,并建立连接。当我们要监听蓝牙设备的状态变化时,就需要用到广播通信。...
Android 蓝牙 API 中的主要类有: * BluetoothAdapter 类:代表了一个本地的蓝牙适配器。 * BluetoothDevice 类:代表了一个远端的蓝牙设备。 * BluetoothSocket 类:代表了一个蓝牙套接字的接口。 * ...
首先,理解Android蓝牙API是基础。Android提供了BluetoothAdapter类,它是系统蓝牙服务的主要接口,用于查找、配对和管理蓝牙设备。开发者需要通过BluetoothAdapter.getDefaultAdapter()获取系统的默认蓝牙适配器,...
2. **Android蓝牙API**: - Android提供了`BluetoothAdapter`类来管理蓝牙适配器,用于检测蓝牙是否开启、查找设备等。 - `BluetoothDevice`类代表一个蓝牙设备,用于获取设备信息、建立连接等操作。 - `...
1. **Android Bluetooth API**: Android提供了`BluetoothAdapter`类来管理蓝牙适配器,`BluetoothDevice`类代表蓝牙设备,`BluetoothSocket`类则用于创建连接和传输数据。这些类是构建蓝牙应用的基础。 2. **蓝牙...
首先,我们需要理解蓝牙技术的基本概念,然后我们将详细讨论Android蓝牙开发客户端的实现步骤。 蓝牙是一种短距离无线通信技术,允许电子设备之间进行数据交换。在Android中,蓝牙功能主要通过`BluetoothAdapter`、...
Android蓝牙API主要由`BluetoothAdapter`、`BluetoothDevice`、`BluetoothSocket`和`BluetoothServerSocket`等类组成。`BluetoothAdapter`是系统蓝牙功能的主要入口,可以用来发现设备、配对和管理蓝牙连接。`...
在"android蓝牙间传输demo"中,"MyApplication1"很可能包含了实现这些功能的源代码。通过查看和分析这些代码,开发者可以学习到如何在实际项目中应用蓝牙通信。此外,需要注意的是,由于蓝牙的安全性和稳定性问题,...
首先,我们要了解Android中的蓝牙API。Android提供了`BluetoothAdapter`,`BluetoothDevice`,`BluetoothServerSocket`和`BluetoothSocket`等类来处理蓝牙连接。`BluetoothAdapter`是系统的蓝牙适配器,可以用来开启...
本项目"Android蓝牙,配对,搜索,连接,通信,断开的Demo"是一个使用Kotlin编写的Android应用示例,它涵盖了蓝牙功能的基本操作,包括设备的搜索、配对、取消配对、连接、数据传输以及断开连接等核心环节。...
1. **Android蓝牙API**: Android提供了BluetoothAdapter类来管理设备的蓝牙功能,包括开启/关闭蓝牙、查找附近的蓝牙设备、建立连接等。BluetoothGatt类则用于与蓝牙低功耗(BLE)设备交互,但这里提到的是蓝牙2.0...
理解蓝牙通信的基本概念、Android蓝牙API的使用,以及串口参数设置的重要性,对于有效利用这款工具至关重要。在实际操作中,结合这些知识点,开发者可以更好地理解和解决蓝牙通信中遇到的各种问题。
1. **Android 蓝牙API**:Android提供了丰富的Bluetooth API,包括`BluetoothAdapter`、`BluetoothDevice`、`BluetoothSocket`和`BluetoothServerSocket`等类,用于设备搜索、连接、数据传输和管理。开发者需要先...
在Android平台上,蓝牙技术是一种广泛使用的短距离无线通信方式,用于设备间的文件传输、数据共享以及设备控制等。...同时,不断关注Android蓝牙API的更新,以便利用新特性提高应用的性能和用户体验。
而`API.docx`应该详细介绍了所使用的Android蓝牙API,包括BluetoothAdapter、BluetoothDevice、BluetoothServerSocket、BluetoothSocket等类的使用方法和注意事项。 至于`Bluetooth`文件,可能是包含实际蓝牙通信...
在Eclipse环境中开发Android蓝牙应用,你需要导入Android SDK对应的蓝牙库,并遵循Android的生命周期管理,确保在适当的时候启动和停止蓝牙操作,避免资源泄漏和性能问题。 在"MyBluetooth"这个项目中,我们可以...
1. **蓝牙API**:Android提供了`BluetoothAdapter`、`BluetoothDevice`、`BluetoothServerSocket`和`BluetoothSocket`等类来处理蓝牙连接和通信。这些类位于`android.bluetooth`包中,是进行蓝牙操作的基础。 2. **...