Android学习之BlueTooth编程

举报
ReCclay 发表于 2022/02/22 01:28:24 2022/02/22
【摘要】 文章目录 1、总体概述1.1、本地蓝牙适配器 BluetoothAdapter1.2、 蓝牙设备BluetoothDevice1.3、 蓝牙服务器套接字BluetoothServiceSocket...

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;//输入流 - 接收数据

...

  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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"/>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

3、例程下载

移步github

文章来源: recclay.blog.csdn.net,作者:ReCclay,版权归原作者所有,如需转载,请联系作者。

原文链接:recclay.blog.csdn.net/article/details/82873967

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。