Android学习笔记——蓝牙入门
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系统)
3.添加蓝牙或其他设备
4.输入PIN连接(蓝牙模块一般默认的是1234或0000)
5.更多蓝牙选项
6.查看Mac地址
图中最终获得的值
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。
下一篇: 1-ARP协议