Android蓝牙A2dp profile的使用
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的使用相关推荐
- Android蓝牙A2DP连接实现
代码地址如下: http://www.demodashi.com/demo/14624.html 开发环境: 开发工具:Androidstudio 适配机型:honor8(Android6.0), 坚 ...
- Android 蓝牙A2dp 协议流程(一)
同学,别退出呀,我可是全网最牛逼的 Android 蓝牙分析博主,我写了上百篇蓝牙文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦. a2dp(A ...
- Android 蓝牙 A2dp 编码SBC、AAC、Aptx、LDAC、LHDC aduio音频概述(1)
同学,别退出呀,我可是全网最牛逼的 Android 蓝牙分析博主,我写了上百篇蓝牙文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦. androi ...
- Android 蓝牙 A2dp 听歌卡音?audio数据到a2dp通道流程解析----A2dp流控原理(Acl Flow Control),一文搞懂蓝牙卡音问题处理
同学,别退出呀,我可是全网最牛逼的 Android 蓝牙分析博主,我写了上百篇蓝牙文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦. 本文章将卡音 ...
- Android 蓝牙 A2DP基础概念、A2DP音频流的建立及传输流程、A2DP播放暂停音乐命令交互过程分析 - 史上最全分析
同学,别退出呀,我可是全网最牛逼的 Android 蓝牙分析博主,我写了上百篇蓝牙文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦. Androi ...
- Android 蓝牙 A2dp 编码SBC、AAC、Aptx、LDAC、LHDC aduio音频概述(2)
android-蓝牙A2dp-avrcp-hfp-opp-配对流程-ble-rfcomm源码流程-点击下载 Android 蓝牙A2dp-Avrcp初始化-连接-播放源码分析文档大全-点击下载 同学, ...
- Android 蓝牙 A2dp音频数据通过L2cap 发往Controller -- 代码详解
一.概念 ACL 链路在 Bluetooth 中非常重要,一些重要的应用如 A2DP, 基于 RFCOMM 的应用,BNEP等都要建立, ACL 链路,发送/接收ACL 包.今天一起来分析 ACL 包 ...
- Android 蓝牙 HFP 和 A2DP
Android 蓝牙 HFP 和 A2DP HFP(Hands Free Profile)和 A2DP (Advanced Audio Distribution Profile) 是经典蓝牙常用的两个 ...
- Android 蓝牙开发(十)A2DP源码分析
转载请注明出处:http://blog.csdn.net/vnanyesheshou/article/details/71811288 本文已授权微信公众号 fanfan程序媛 独家发布 扫一扫文章底 ...
最新文章
- 【Groovy】json 字符串反序列化 ( 使用 JsonSlurper 进行 json 字符串反序列化 | 根据 map 集合构造相关类 )
- 【设计模式】享元模式 简介 ( 定义 | 对象池 | 内部状态 | 外部状态 | 适用场景 | 相关角色 )
- arrays中copyof_在内存只有10M的空间中申请一块5M的数组空间,会导致OOM吗?
- struts -Tiles介绍
- Codeforces Round #618 (Div. 2)-B. Assigning to Classes
- Linux命令-关机,重启
- div 高度等与html,html – 仅限CSS – 基于兄弟的div的高度
- open-falcon之query
- 500份IT数字化转型资料,限量领!堪称最全,领不到会发慌
- 《Python编程实战:运用设计模式、并发和程序库创建高质量程序》—— 导读
- 一个软件测试员的工作与学习(二)
- 软工实践Alpha冲刺(6/10)
- 6.字符串截取数据求平均分
- 【计算机视觉】BOF图像检索
- SpringMVC05:AJAX的使用
- angular实现瀑布流
- python关键字定义_python 关键字与含义
- 效率源希捷自校准配套专修软件 v1.0 绿色
- C# 报错microsoft.office.interop.excel,version=15错误
- AI智能阅读助力全栈开发-逐浪CMS语音辅助2.0发布