第十四篇 ANDROID的 BLUETOOTH 实现机制与架构

本文详细介绍了Android从3.0开始的蓝牙API支持,包括Bluetooth profile协议,如Headset、A2DP等。文章重点阐述了Android如何通过BluetoothAdapter作为入口与蓝牙设备交互,以及如何使用BluetoothProfile的代理对象进行服务访问。此外,还提到了BluetoothAdapter的状态管理、蓝牙服务和代理对象的绑定过程,以及BluetoothSocket在数据传输中的作用。
摘要由CSDN通过智能技术生成

        从ANDROID3.0开始,BLUETOOTH  API提供了Bluetooth profile协议的支持。目前ANDROID4.0的蓝牙API提供了五种蓝牙无线接口规范(Bluetooth profile)的支持,用来在设备之间通过蓝牙实现特定功能:包括 Headset和Hands-Freeprofile(实现蓝牙耳机功能),A2dpprofile(第二代蓝牙声音设备协议,用来在蓝牙设备之间实现高质量的声音传输),InputDeviceprofile(实现蓝牙输入设备功能),Bluetooth  Panprofile(实现蓝牙个人局域网功能),Bluetooth Healthprofile(实现蓝牙健康设备规范,用来与支持蓝牙健康设备规范的设备进行蓝牙通讯)。另外还有Bluetooth Pbapprofile(实现蓝牙电话本功能),但接口和其它profile实现不一致。

        ANDROID对 Bluetooth profile API的实现主要采用了中介模式、代理模式及状态模式等。

        应用通过一个统一的类BluetoothAdapter(蓝牙本地适配器类)与这些蓝牙设备协议对应的BLUETOOTH  API进行交互。

       BluetoothAdapter是所有蓝牙对象交互和执行蓝牙操作的入口:包括调用BLUETOOTH profile API,发现其它蓝牙设备、查询配对成功的设备、使用已知的MAC地址实例化蓝牙设备、创建一个BluetoothServerSocket对象来监听其它蓝牙设备以及根据地址实例化蓝牙设备等操作。

       应用为了使用蓝牙功能,JELLY_BEAN_MR1以下的版本使用如下方式获得BluetoothAdapter单例对象。

       

     BluetoothAdapter mAdapter = BluetoothAdapter.getDefaultAdapter();

        JELLY_BEAN_MR2以后的版本,使用如下方式来调用蓝牙API。

      

     BluetoothManager bluetoothManager =
                (BluetoothManager) context.getSystemService(Context.BLUETOOTH_SERVICE);
     BluetoothAdapter mAdpter=bluetoothManager.getAdapter(); 


     几乎所有的蓝牙对象和所有的蓝牙服务都维护一个BluetoothAdapter单例对象,BluetoothAdapter单例对象通过BluetoothAdapter类提供的getDefaultAdapter函数获得。BluetoothAdapter对象可以说是整个系统交互的中介,是中介设计模式的采用。

      而几个蓝牙设备协议的实现借助几个ANDROID服务来实现,并通过代理对象对外提供BLUETOOTH  API。Headset对应的代理对象为BluetoothHeadset,A2dp对应的代理对象为BluetoothA2dp&#x

  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值