Android 蓝牙连接之 A2dp

2024-01-23 19:18
文章标签 android 连接 蓝牙 a2dp

本文主要是介绍Android 蓝牙连接之 A2dp,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      A2DPProfile  定义了高质量音频数据传输的协议和过程,包括立体声和单声道数据的传输。这里的高质量音频指的是单声道(Mono)和立体声(Sterco)  的音频,主要区别于蓝牙  SCO  链路上传输的普通语音。A2DP  的典型应用是将音乐播放器的音频数据发送到耳机或音箱。


  由于蓝牙提供的带宽较窄,音频数据可能需要进行有效的压缩才能保证接收端的实时播放。


  目前  A2DP 只定义了点对点的音频传输,没有定义广播式的音频传输,可能是由于速率的原因。
  A2DP 建立在 AVDTP 传输协议的基础之上,AVDTP 规定了链接是如何建立的,连接建立好之后,音频数据经过压缩之后,便可以收发了。

       直接上代码的吧,有很详细的注释,各位看官应该看起来问题不大:

 

public class BluetoothChatA2dpService {private BluetoothA2dp mA2dp;private String TAG = "BluetoothChatA2dpService";private BluetoothDevice mConnectDevice;private BluetoothAdapter mBtAdapter;private static Context mContext;private static BluetoothChatA2dpService bluetoothA2dpChatService;private int callBackState = 0;public interface OnConnectionListener {void onConnectionStateChanged(BluetoothDevice bluetoothDevice, int state);}public interface OnBluetoothA2dpReadyListener {void onBluetoothA2dpReady();}private OnBluetoothA2dpReadyListener onBluetoothA2dpReadyListener;public void setOnBluetoothA2dpReadyListener(OnBluetoothA2dpReadyListener listener) {onBluetoothA2dpReadyListener = listener;}private OnConnectionListener onConnectionListener;public void setOnConnectionListener(OnConnectionListener listener) {onConnectionListener = listener;}private BluetoothChatA2dpService() {initReceiver();initBluetooth();}public int getBluetoothDeviceA2dpStatus(BluetoothDevice bluetoothDevice) {if (mA2dp == null) {return -2;}return mA2dp.getConnectionState(bluetoothDevice);}private void initBluetooth() {mBtAdapter = BluetoothAdapter.getDefaultAdapter();if (!mBtAdapter.isEnabled()) {return;}

这篇关于Android 蓝牙连接之 A2dp的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/637260

相关文章

Mysql 中的多表连接和连接类型详解

《Mysql中的多表连接和连接类型详解》这篇文章详细介绍了MySQL中的多表连接及其各种类型,包括内连接、左连接、右连接、全外连接、自连接和交叉连接,通过这些连接方式,可以将分散在不同表中的相关数据... 目录什么是多表连接?1. 内连接(INNER JOIN)2. 左连接(LEFT JOIN 或 LEFT

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Spring Boot实现多数据源连接和切换的解决方案

《SpringBoot实现多数据源连接和切换的解决方案》文章介绍了在SpringBoot中实现多数据源连接和切换的几种方案,并详细描述了一个使用AbstractRoutingDataSource的实... 目录前言一、多数据源配置与切换方案二、实现步骤总结前言在 Spring Boot 中实现多数据源连接

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

Java 连接Sql sever 2008

Java 连接Sql sever 2008 /Sql sever 2008 R2 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class TestJDBC

android-opencv-jni

//------------------start opencv--------------------@Override public void onResume(){ super.onResume(); //通过OpenCV引擎服务加载并初始化OpenCV类库,所谓OpenCV引擎服务即是 //OpenCV_2.4.3.2_Manager_2.4_*.apk程序包,存