A2dp profile是android支持的一种蓝牙情景模式,一般用于蓝牙立体声耳机,即蓝牙音频的输出

在android的app层中,A2dp的使用并不是很开放,api只提供了非常少的操作接口,连基本的连接都只能用反射来调用底层的方法。a2dp的使用是通过BluetoothA2dp这个代理类来控制A2dp服务的,这里简单举例使用的方法:

private BluetoothAdapter mBluetooth = BluetoothAdapter.getDefaultAdapter();
mBluetooth.getProfileProxy(this, new profileListener(), BluetoothProfile.A2DP);public class profileListener implements ServiceListener {@Overridepublic void onServiceConnected(int profile, BluetoothProfile proxy) {// TODO Auto-generated method stubLog.i(TAG, "onServiceConnected()");mBluetoothProfile = proxy;mHandler.sendEmptyMessage(MESSAGE_A2DP_PROXY_CHANGED);}@Overridepublic void onServiceDisconnected(int profile) {// TODO Auto-generated method stubLog.i(TAG, "onServiceDisconnected()");}
}

该profile的连接和断开的方法在Android源码中有定义,因此可以通过反射来获取到接口:

public void a2dpConnect(BluetoothDevice device){BluetoothA2dp a2dp = (BluetoothA2dp) mBluetoothProfile;a2dp.isA2dpPlaying(device);Class<? extends BluetoothA2dp> clazz = a2dp.getClass();Method m2;try {Log.i(TAG,"use reflect to connect a2dp");m2 = clazz.getMethod("connect",BluetoothDevice.class);m2.invoke(a2dp, device);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();Log.e(TAG,"error:" + e.toString());}
}

另外需要注意的是,由于使用了反射的方法,并非适用于所有版本的android系统,4.2.2以上的连接的成功率还是较高的;同时,在获取连接的状态上,也并非所有的系统都能或得到正确的状态,有些系统或硬件平台不支持该profile的操作,所以在实际使用时,要因地制宜,因机而异。

转载于:https://www.cnblogs.com/Free-Thinker/p/4565250.html

Android蓝牙A2dp profile的使用相关推荐

  1. Android蓝牙A2DP连接实现

    代码地址如下: http://www.demodashi.com/demo/14624.html 开发环境: 开发工具:Androidstudio 适配机型:honor8(Android6.0), 坚 ...

  2. Android 蓝牙A2dp 协议流程(一)

    同学,别退出呀,我可是全网最牛逼的 Android 蓝牙分析博主,我写了上百篇蓝牙文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦. a2dp(A ...

  3. Android 蓝牙 A2dp 编码SBC、AAC、Aptx、LDAC、LHDC aduio音频概述(1)

    同学,别退出呀,我可是全网最牛逼的 Android 蓝牙分析博主,我写了上百篇蓝牙文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦. androi ...

  4. Android 蓝牙 A2dp 听歌卡音?audio数据到a2dp通道流程解析----A2dp流控原理(Acl Flow Control),一文搞懂蓝牙卡音问题处理

    同学,别退出呀,我可是全网最牛逼的 Android 蓝牙分析博主,我写了上百篇蓝牙文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦. 本文章将卡音 ...

  5. Android 蓝牙 A2DP基础概念、A2DP音频流的建立及传输流程、A2DP播放暂停音乐命令交互过程分析 - 史上最全分析

    同学,别退出呀,我可是全网最牛逼的 Android 蓝牙分析博主,我写了上百篇蓝牙文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦. Androi ...

  6. Android 蓝牙 A2dp 编码SBC、AAC、Aptx、LDAC、LHDC aduio音频概述(2)

    android-蓝牙A2dp-avrcp-hfp-opp-配对流程-ble-rfcomm源码流程-点击下载 Android 蓝牙A2dp-Avrcp初始化-连接-播放源码分析文档大全-点击下载 同学, ...

  7. Android 蓝牙 A2dp音频数据通过L2cap 发往Controller -- 代码详解

    一.概念 ACL 链路在 Bluetooth 中非常重要,一些重要的应用如 A2DP, 基于 RFCOMM 的应用,BNEP等都要建立, ACL 链路,发送/接收ACL 包.今天一起来分析 ACL 包 ...

  8. Android 蓝牙 HFP 和 A2DP

    Android 蓝牙 HFP 和 A2DP HFP(Hands Free Profile)和 A2DP (Advanced Audio Distribution Profile) 是经典蓝牙常用的两个 ...

  9. Android 蓝牙开发(十)A2DP源码分析

    转载请注明出处:http://blog.csdn.net/vnanyesheshou/article/details/71811288 本文已授权微信公众号 fanfan程序媛 独家发布 扫一扫文章底 ...

最新文章

  1. 【Groovy】json 字符串反序列化 ( 使用 JsonSlurper 进行 json 字符串反序列化 | 根据 map 集合构造相关类 )
  2. 【设计模式】享元模式 简介 ( 定义 | 对象池 | 内部状态 | 外部状态 | 适用场景 | 相关角色 )
  3. arrays中copyof_在内存只有10M的空间中申请一块5M的数组空间,会导致OOM吗?
  4. struts -Tiles介绍
  5. Codeforces Round #618 (Div. 2)-B. Assigning to Classes
  6. Linux命令-关机,重启
  7. div 高度等与html,html – 仅限CSS – 基于兄弟的div的高度
  8. open-falcon之query
  9. 500份IT数字化转型资料,限量领!堪称最全,领不到会发慌
  10. 《Python编程实战:运用设计模式、并发和程序库创建高质量程序》—— 导读
  11. 一个软件测试员的工作与学习(二)
  12. 软工实践Alpha冲刺(6/10)
  13. 6.字符串截取数据求平均分
  14. 【计算机视觉】BOF图像检索
  15. SpringMVC05:AJAX的使用
  16. angular实现瀑布流
  17. python关键字定义_python 关键字与含义
  18. 效率源希捷自校准配套专修软件 v1.0 绿色
  19. C# 报错microsoft.office.interop.excel,version=15错误
  20. AI智能阅读助力全栈开发-逐浪CMS语音辅助2.0发布

热门文章

  1. 今天入手了二手X61
  2. 我看周马,以及3Q大战背后的社会问题
  3. SM4国密标准 GB/T 32907-2016
  4. 网页版简书界面优化小建议
  5. 使用Geolocation校正GDAL不支持的数据
  6. 十大震撼谷歌地图卫星照
  7. mysql——解压版安装详解
  8. SQL那些事儿(六)--数据库三大范式
  9. HTML5开发手机项目总结
  10. 快速创建精彩的Flash游戏 (二) Flash3D引擎简介