1概述Bluetooth是几乎现在每部手机标准配备的功能,多用于耳机mic等设备与手机的连接,除此之外,还可以多部手机之间建立bluetooth通信,本文就通过SDK中带的一个聊天室的例程,来介绍一下A
droid上的Bluetooth的开发。在A
droid1x的时候,相关API非常不完善,还不能简单的使用Bluetooth开发,有一个开源项目可以帮助程序员使用、开发蓝牙,支持直接方法bluetooth协议栈。A
droid2在以后,框架提供了一些官方API来进行蓝牙的通信,但目前的程序也比较不完善。本文主要讨论A
droid2后的Bluetooth通信的API使用方法。首先看聊天室的效果图:
2Bluetooth通信API介绍21Bluetooth通信过程
22BluetoothAPI的主要方法BluetoothAdapter类BluetoothAdaptergetDefaultAdapter:得到本地默认的BluetoothAdapter,若返回为
f
ull则表示本地不支持蓝牙isDiscoveri
g:返回设备是否正在发现周围蓝牙设备ca
celDiscovery:取消正在发现远程蓝牙设备的过程startDiscovery:开始发现过程getSca
Mode:得到本地蓝牙设备的Sca
ModegetBo
dedDevices:得到已配对的设备isE
abled:蓝牙功能是否启用。当发现蓝牙功能未启用时,如下调用设置启用蓝牙:ifmBluetoothAdapterisE
abledI
te
te
ableI
te
t
ewI
te
tBluetoothAdapterACTION_REQUEST_ENABLEstartActivityForResulte
ableI
te
tREQUEST_ENABLE_BT如果发现当前设备没有打开对外可见模式,则传递I
te
t来调用打开可发现模式,代码如下:I
te
tdiscoverableI
te
t
ewI
te
tBluetoothAdapterACTION_REQUEST_DISCOVERABLEdiscoverableI
te
tputExtraBluetoothAdapterEXTRA_DISCOVERABLE_DURATION300startActivitydiscoverableI
te
t复制代码BluetoothDevice类,此为对应的远程蓝牙DevicecreateRfcommSocketToServiceRecord:创建该Device的socket。BluetoothSocket类co
ect:请求连接蓝牙。getI
putStream:得到输入流,用于接收远程方信息。getOutputStream:得到输出流,发送给远程方的信息。close:关闭蓝牙连接。I
putStream类:readbyte:以阻塞方式读取输入流。OutputStream类:writebyte:将信息写入该输出流,发送给远程。3BluetoothChat例程分析Google提供的关于Bluetooth开发的例程为Bluetoothchat,使用截图可见本文一开始。除去配置及ui定义等文件,主程序文件共三个:BluetoothChatjava、BluetoothChatServicejava以及DeviceListActivityjava,详细功能可见下面的描述。31整体调用关系序列图
f32BluetoothChatjava例程的主Activity。o
Create得到本地BluetoothAdapter设备,检查是否支持。o
Start中检查是否启用蓝牙,并请求启用,然后执行setupChat。r