首先在此引用一下百度百科里关于蓝牙的定义:
蓝牙技术是一种无线数据和语音通信开放的全球规范,它是基于低成本的近距离无线连接,为固定和移动设备建立通信环境的一种特殊的近距离无线技术连接。
《来自百度百科》
使用android原生开放的api来开发蓝牙应用,简单的可以总结为以下三步:
- 打开蓝牙开关,让设备处于扫描模式,扫描附近可用的其它蓝牙设备。
- 与找到的某一蓝牙建立连接关系。
- 通过socket套接字与流操作交换数据,或者使用设备已支持的蓝牙协议来获取数据。
以上三个步骤就是常见的android蓝牙开发过程,在android车载方向开发中,车机一般作为蓝牙连接中的从端设备,手机作为对应的主端设备,两者之间按照一致对应的蓝牙协议来交互,以下是android车载方向常见的蓝牙协议:
- Hfp (Hands-Free profile):免提通话协议,常用于和手机之间的蓝牙通话,通过该协议可以控制主机拨打电话
- A2dp (Advanced Audio Distribution Profile):高质量音频传输协议,用于蓝牙音乐,基于该协议可以获取主机传输过来的音频流数据
- Avrcp (Audio/Video Remote Control Profile):音频/视频远程控制协议,基于该协议可以让从端控制主端的媒体上下曲,播放暂停等功能
- MAP (Message Access Profile):信息访问协议,基于该协议可以获取主机上的信息,电子邮件,类似读取手机短信
- Pbap (Phone Book Access Profile):电话本访问协议,基于该协议可以获取主机上的通讯录跟通话记录
从端开发过程
在日常开发过程中,车机端一般作为从端来开发蓝牙应用,而手机端则作为蓝牙主端,android原生已经封装支持了常见的主从协议功能交互接口以便开发者调用。以下以Pbap协议为例,介绍车机端蓝牙应用的常用类以及使用过程,其它协议过程类似:
- 定义蓝牙功能权限
开发设计蓝牙相关功能的,需要在AndroidManifest.xml
清单文件中定义好权限:
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permissio