接上一篇文章:Android网络通信(5):WiFi。

第八部分 蓝牙
蓝牙是一种短距离的无线连接技术标准的代称,蓝牙的实质内容就是建立通用无线电空中接口及其控制软件的公开标准。
蓝牙采用分散式网络结构以及快调频和短包技术,支持点对点以及多对点通信,工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段,其数据速率为1Mbps,采用时分双工传输方案。
蓝牙协议分4层:即核心协议层、电缆替代协议层、电话控制协议层、采纳其他的协议层。
Android 2.0 即API Level等级为5或以上版本才包含蓝牙功能。
蓝牙的类和接口位于android.bluetooth包中,有如下功能:
BluetoothAdapter 蓝牙适配器(代表本地蓝牙适配器)
BluetoothClass 蓝牙类(主要包括服务和设备)
BluetoothClass.Device 蓝牙设备类
BluetoothClass.Device.Major 蓝牙设备管理
BluetoothClass.Service 有关蓝牙服务的类
BluetoothDevice 蓝牙设备(主要指远程蓝牙设备)
BluetoothServerSocket 监听蓝牙连接的类
BluetoothSocket 蓝牙连接类
要使用蓝牙API必须要在AndroidManifest.xml中声明权限代码如下:

<uses-sdk android:minSdkVersion="5" />//API等级为5
<uses-permission android:name="android.permission.BLUETOOTH" />//蓝牙权限
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />//蓝牙管理、操作
<uses-permission android:name="android.permission.READ_CONTACTS"/>//读取联系人


要使用蓝牙必须先取得蓝牙适配器 代码如下:

BluetoothAdapter _bluetooth = BluetoothAdapter.getDefaultAdapter();//通过getDefaultAdapter()方法获取本地蓝牙适配器,要获取远程的用BluetoothDevice类。


如何打开、关闭本地蓝牙和如何才能使别的设备能够搜索到自己的设备?如下:
首先定义两个常量,分别代表请求打开和请求能够被搜索代码如下:

private static final int REQUEST_ENABLE;//请求打开蓝牙
private static final int REQUEST_DISCOVERABLE;//请求能够被搜索


1、请求开启蓝牙

Intent enabler = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);//请求系统允许用户打开蓝牙
startActivityForResult(enabler, REQUEST_ENABLE);


2、请求能够被搜索

Intent enabler = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);//请求系统允许蓝牙设备被搜索
startActivityForResult(enabler, REQUEST_DISCOVERABLE);
BluetoothAdapter类中其他动作常量
ACTION_DISCOVERY_FINISHED 已经完成搜索
ACTION_DISCOVERY_STARTED 已经开始搜索蓝牙设备
ACTION_LOCAL_NAME_CHANGED 更改蓝牙名字
ACTION_REQUEST_DISCOVERABLE 请求能够被搜索
ACTION_REQUEST_ENABLE 请求开启蓝牙
ACTION_SCAN_MODE_CHANGED 描述模式已改变
ACTION_STATE_CHANGED 状态已改变


3、打开蓝牙

_bluetooth.enable();//使用BluetoothAdapter类中的enable方法


4、关闭蓝牙

_bluetooth.disable();//使用BluetoothAdapter类中的diable方法
BluetoothAdapter中的常用方法
cancelDiscovery 取消当前设备搜索过程
checkBlutoothAddress 检测蓝牙地址是否正确。如"00:43:A8:23:10:F0"字母必须是大写
disable 关闭蓝牙适配器
enable 打开蓝牙适配器
getAddress 取得本地蓝牙的硬件适配器地址
getDefaultAdapter 得到默认的蓝牙适配器
getName 得到蓝牙的名字
getRemoteDevice 取得指定蓝牙硬件地址的BluetoothDevice对象
getScanMode 得到扫描模式
getState 得到状态
isDiscovering 是否允许被搜索
isEnabled 是否打开
setName 设置名字


startDiscovery 开始搜索
5、搜索蓝牙设备
搜索远程蓝牙设备需要使用BluetoothDevice类。
首先使用BluetoothAdapter类的getRemoteDevice方法来得到一个指定地址的BluetoothDevice
BluetoothDevice类实际是一个蓝牙硬件地址薄,该类对象是不可改变的。其操作都是远程蓝牙硬件地址使用BluetoothAdapter来创建一个BluetoothDevice对象。

代码下载链接:http://www.apkbus.com/android-116915-1-1.html