Android学习之BlueTooth编程

版权声明:转载记得声明~~~ :) https://blog.csdn.net/ReCclay/article/details/82873967

1、总体概述

Android为蓝牙技术提供了4个工具类,分别是蓝牙适配器BluetoothAdapter、蓝牙设备BluetoothDevice、蓝牙服务端套接字BluetoothServerSocket和蓝牙客户端套接字BluetoothSocket。

1.1、本地蓝牙适配器 BluetoothAdapter

BluetoothAdapter是所有蓝牙交互的入口,只有先使用这个类,
才能够发现其他的蓝牙设备,
才能够查询已配对设备的列表,
才能够使用已知的MAC地址来实例化一个BluetoothDevice对象,
才能够创建一个BluetoothServerSocket对象来监听与其他设备的通信。

方法

getDefaultAdapter:静态方法,获取默认的蓝牙适配器对象;
enable:打开蓝牙功能;
disable:关闭蓝牙功能;
isEnable:判断蓝牙功能是否打开;
startDiscovery:开始搜索周围的蓝牙设备;
cancelDiscovery:取消搜索操作;
isDiscovering:判断当前是否正在搜索设备;
getBondedDevices:获取已绑定的设备列表;
setName:设置本机的蓝牙名称;
getName:获取本机的蓝牙名称;
getAddress:获取本机的蓝牙地址;
getRemoteDevice:根据蓝牙地址获取远程的蓝牙设备;
getState:获取本地蓝牙适配器的状态;
listenUsingRfcommWithServiceRecord:根据名称和UUID创建并返回BluetoothServiceSocket;
listenUsingRfcommOn:根据渠道编号创建并返回BluetoothServiceSocket。

1.2、 蓝牙设备BluetoothDevice

BluetoothDevice用于指代某个蓝牙设备,通常表示对方设备。BluetoothAdapter管理的是本机蓝牙设备。注意区分…

getName:获得该设备的名称;
getAddress:获得该设备的地址;
getBondState:获得该设备的绑定状态;
createBond:创建匹配对象;
createRfcommSocketToServiceRecord:根据UUID创建并返回一个BluetoothSocket。

1.3、 蓝牙服务器套接字BluetoothServiceSocket

BluetoothServiceSocket是服务端的Socket,用来接收客户端的Socket连接请求。

accept:监听外部的蓝牙连接请求;
close:关闭服务端的蓝牙监听。

1.4、 蓝牙客户端套接字BluetoothSocket

BluetoothSocket是客户端的Socket,用于与对方设备进行数据通信。

connect:建立蓝牙的socket连接;
close:关闭蓝牙的socket连接;
getInputStream:获取socket连接的输入流对象;
getOutputStream:获取socket连接的输出流对象;
getRemoteDevice:获取远程设备信息。

1.5、 UUID

UUID相当于一个蓝牙设备和另外一个蓝牙通讯的”秘钥”!不同的蓝牙通讯用不同的秘~而我们与单片机通讯的是 00001101-0000-1000-8000-00805F9B34FB,即蓝牙串口服务。

2、编程要点

包括四个工具类的定义,权限的开启特别是对于Android6.0以上的系统

2.1、 四个工具类的定义

...

//声明变量
BluetoothAdapter mBluetoothAdapter;//创建蓝牙适配器
private List<BluetoothDevice> deviceList = new ArrayList<BluetoothDevice>();//创建BluetoothDevice列标
private BluetoothSocket mmSocket;//创建socket
OutputStream mmOutStream;//输出流 - 发送数据
InputStream mmInputStream;//输入流 - 接收数据

...

2.2、 权限的加入

<!--蓝牙权限必备-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

3、例程下载

移步github

猜你喜欢

转载自blog.csdn.net/ReCclay/article/details/82873967