今天为大家分享一下Android开发中蓝牙通信方面的一些知识,从蓝牙基本操作开始
1.蓝牙基本操作
随着可穿戴设备的流行,现在研究蓝牙开发已经成为必不可少的一门技术了。这里小编总结一些Android蓝牙开发方面的知识,希望对大家学习和进行Android蓝牙开发有所帮助。
1>添加蓝牙权限
使用Android的系统功能需要先声明权限,所以进行蓝牙开发,首先要在AndroidManifest.xml文件中添加操作蓝牙的权限。
2>获取蓝牙适配器
BluetoothAdapter
BluetoothAdapter类是操作蓝牙,进行蓝牙开发时主要用到的类,使用时需导包。
import android.bluetooth.BluetoothAdapter;
源码具体位置frameworks/base/core/Java/android/bluetooth/BluetoothAdapter.java
BluetoothAdapter代表本地设备的蓝牙适配器。该BluetoothAdapter可以执行基本的蓝牙任务,例如启动设备发现,查询配对的设备列表,使用已知的MAC地址实例化一个BluetoothDevice类,并创建一个BluetoothServerSocket监听来自其他设备的连接请求。
获取蓝牙适配器:BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
3>与蓝牙有关的一些操作
开启蓝牙
获取本地蓝牙信息
搜索设备
mBluetoothAdapter.startDiscovery();
停止搜索
mBluetoothAdapter.cancelDiscovery();
监听扫描
搜索蓝牙设备是一个异步的过程,需要通过注册广播接收者监听扫描到设备。
通过广播接收者查看扫描到的蓝牙设备,每扫描到一个设备,系统都会发送此广播(BluetoothDevice.ACTION_FOUNDE)。其中参数intent可以获取蓝牙设备BluetoothDevice。
设置蓝牙可见性
有时候扫描不到某设备,这是因为该设备对外不可见或者距离远,需要设备该蓝牙可见,这样该才能被搜索到。
可见时间默认值为120s,多可设置300。
2.服务端
android 蓝牙之间可以通过SDP协议建立连接进行通信,通信方式类似于平常使用socket。
首先创建BluetoothServerSocket ,BluetoothAdapter中提供了两种创建BluetoothServerSocket 方式,如下图所示为创建安全的RFCOMM Bluetooth socket,该连接是安全的需要进行配对。而通过listenUsingInsecureRfcommWithServiceRecord创建的RFCOMM Bluetooth socket是不安全的,连接时不需要进行配对。
其中的uuid需要服务器端和客户端进行统一。
mServerSocket通过accept()等待客户端的连接(阻塞),直到连接成功或失败。
3.客户端
客户端主要用来创建RFCOMM socket,并连接服务端。先扫描周围的蓝牙设备,如果扫描到指定设备则进行连接。
连接过程主要在ConnectThread线程中进行,先创建socket,方式有两种,下图是安全的。另一种不安全连接对应的函数是createInsecureRfcommSocketToServiceRecord。
接着客户端socket主动连接服务端。连接过程中会自动进行配对,需要双方同意才可以连接成功。
4.数据传输
客户端与服务端连接成功后都会创建一个ConnectedThread线程。该线程主要用来接收和发送数据。客户端和服务端处理方式一样。该线程通过socket获得输入输出流。
private InputStream mmInStream = socket.getInputStream();
private OutputStream mmOutStream =socket.getOutputStream();
发送数据
接收数据
线程循环进行接收数据。
热点新闻