欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android学习笔记——蓝牙入门

程序员文章站 2022-05-17 08:08:04
...

Android学习笔记之蓝牙入门

蓝牙概述

蓝牙是一种支持设备间短距离通信的无线电技术。
支持移动电话、笔记本电脑、无线耳机、智能小车等设备之间进行信息的交换。

Android支持的蓝牙协议栈:

协议栈名称 特点
Bluz Linux提供给Android的蓝牙栈,开源、灵活、高效,目前最常用的
BlueDroid Android特有的,结构清晰,方便移植
BLE 低功耗

协议栈(Protocol Stack)是指网络中各层协议的总和,其形象的反映了一个网络文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议。面对众多不同的计算机和网络生产厂家,以及用户要求的便宜、灵活、方便的联网需求,必须建立一个公认的计算机网络连网标准和网络体系结构,以实现任意计算机系统和任意网络系统的互联。

链路管理(LMP)进行蓝牙配对、连接的过程。


BluetoothAdapter类

下面列举几个BluetoothAdapter类常用的成员方法:

方法 说明
BluetoothAdapter getDefaultAdapter () 初始化BluetoothAdapter类对象,不用构造函数
BluetoothDevice getRemoteDevice (String address) 获取已知Mac地址的设备,address为Mac地址
String getAddress() 获取设备Mac地址
String getName() 获取设备名称
boolean enable() 连接蓝牙设备
boolean disable() 断开蓝牙设备

权限

使用蓝牙需要在AndroidManifest.xml里添加两条权限:

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>

蓝牙模块的Mac地址获取

使用蓝牙模块与硬件通信时,用Android对指定蓝牙设备进行通信,可以使用getRemoteDevice的方法根据硬件设备的Mac地址绑定硬件设备,比如:

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
BluetoothDevicebl uetoothDevice = bluetoothAdapter.getRemoteDevice("98:D3:31:90:88:83");    //注意:有英文的一定要大写

而要用此法,首先要已知蓝牙模块的Mac地址。步骤如下:
1.先通过串口将蓝牙模块与电脑连接
2.打开显示蓝牙(我的是win10系统)
Android学习笔记——蓝牙入门
3.添加蓝牙或其他设备
Android学习笔记——蓝牙入门
4.输入PIN连接(蓝牙模块一般默认的是1234或0000)
Android学习笔记——蓝牙入门
5.更多蓝牙选项
Android学习笔记——蓝牙入门
6.查看Mac地址
Android学习笔记——蓝牙入门
图中最终获得的值

Bluetooth#Bluetooth80:a5:89:3d:75:9a-98:d3:31:90:88:83

其中 98:d3:31:90:88:83即为此蓝牙模块的Mac地址(注意:在Android中使用时,Mac地址里有英文的一定要大写,即98:D3:31:90:88:83)


蓝牙数据传输

通过蓝牙传输数据与Socket类似。在网络中使用Socket和ServerSocket控制客户端和服务端的数据读写。而蓝牙通讯则由客户端BluetoothSocket和服务端BluetoothServerSocket来完成。这两个类都在android.bluetooth包中。

蓝牙客户端和服务端均需要一个全局唯一标识符UUID(Universally Unique Identifier),格式如下:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
(所以UUID实际上是一个8-4-4-4-12格式的字符串)

UUID相当于Socket的端口,蓝牙Mac地址相当于Socketde的IP。