Android学习笔记——蓝牙入门

来源:互联网 发布:网络电视怎么重新搜台 编辑:程序博客网 时间:2024/06/04 20:57

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)
输入pin
5.更多蓝牙选项
更多蓝牙选项
6.查看Mac地址
查看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。