最近在做APP的蓝牙相关功能,想记录一下蓝牙的有关知识。俗话说的好呀,“好记忆,不如烂笔头”,关键我好像记性还不太好,哈哈哈~~

蓝牙耳机连接之后,发现音频发声的还是终端,并没有转换到蓝牙耳机发声。网上搜索相关资料,发现是蓝牙耳机需要建立链路来播放音频。

简单介绍下蓝牙耳机的两种链路:A2DP(异步链路)及SCO(同步链路)。A2DP是一种单向的高品质音频数据传输链路,通常用于播放立体声音乐;而SCO则是一种双向的音频数据的传输链路,该链路只支持8K及16K单声道的音频数据,只能用于普通语音的传输。我试过建立SCO连接后播放音乐效果一般。SCO主要用来传输对时间要求很高的数据通信,可以录音也能播放。A2DP只能播放。我做的app是关于语音对讲的,设置SCO就可以了。

设置SCO的相关AudioManager接口

1.AudioManager简介

AudioManager 音频管理器,该类位于Android.Media包下。提供了音量控制与铃声模式相关操作。

//获得AudioManager对象实例

AudioManager am = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);

2.具体接口

当蓝牙耳机连接后,将音频从终端转换到蓝牙耳机。蓝牙耳机断开后,将音频从蓝牙耳机转换到终端。

2.1打开SCO

/*** 进入SCO模式*/
public void enterScoMode(){if(isBTConnected()){ //确保蓝牙连接AudioManager mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);mAudioManager.startBluetoothSco(); //打开SCO;mAudioManager.setBluetoothScoOn(true); //蓝牙录音的关键,启动SCO连接,耳机话筒才起作用;setAudioMode(AudioManager.MODE_IN_COMMUNICATION);//将音频模式设为AudioManager.MODE_IN_COMMUNICATION,SCO才会真正生效。}}

2.2关闭SCO

/*** 关闭SCO*/
public void exitSCOMode(){AudioManager mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);mAudioManager.setBluetoothScoOn(false);mAudioManager.stopBluetoothScoOn();mAudioManager.setAudioMode(AudioManager.MODE_NORMAL );
}

2.3判断通信是否使用蓝牙sco

isBluetoothScoOn()

2.4判断蓝牙耳机是否连接

public void isBTConncected(BluetoothHeadset mBluetoothHeadset){boolean bt = false;if(mBluetoothHeadset != null){List<BluetoothDevice> devices = mBluetoothHeadset.getConnectedDevices();if(devices != null && devices.size() > 0)bt = ture;}else{BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();if(adapter.getProfileConnectionState(BluetoothProfile.HEADSET) == BluetoothProfile.STATE_CONNECTED){bt = true;}}return bt;}

3.蓝牙耳机与耳机、终端之间的音频转换

连接上蓝牙后,将音频从终端或者耳机上转换到蓝牙耳机输出;断开蓝牙后,将音频转换到终端或者耳机上输出。

public void changeAudioOutput(){if(isBTConnected()){enterSCOMode();audioManager.setSpeakerPhoneOn(false);}else{if(audioManager.isWiredHeadsetOn()){audioManager.setSpeakerPhoneOn(false);}else{audioManager.setSpeakerPhoneOn(true);}}}//连接蓝牙时
enterSCOMode();//断开蓝牙连接时;
exitSCOMode();

AudioManager 蓝牙sco连接相关接口相关推荐

  1. 蓝牙协议栈HFP SCO连接流程

    蓝牙协议栈HFP SCO连接流程,基于android11 状态机切换: BTA_AG_SCO_SHUTDOWN_ST,    9之前. BTA_AG_SCO_LISTEN_ST,     9. BTA ...

  2. android 实现蓝牙自动配对连接,Android实践 -- Android蓝牙设置连接

    蓝牙开发相关 使用Android Bluetooth APIs将设备通过蓝牙连接并通信,设置蓝牙,查找蓝牙设备,配对蓝牙设备 连接并传输数据,以下是Android系统提供的蓝牙相关的类和接口 Blue ...

  3. 蓝牙无法连接手机解决大全(转)

    蓝牙无法连接手机 nokia 无法验证手机 pc套件无法验证手机 通过蓝牙用手机控制电脑 解决大全 2010/03/01 11:57 A.M. 蓝牙驱动及管理软件在世界上有五大著名厂商: 1.MAC ...

  4. 转战物联网·基础篇12-了解物联网之物连接相关通信技术(1)

    转战物联网·基础篇12-了解物联网之物连接相关通信技术(1) 一.物连接架构概览 1.通过一张图了解"物连接" 2.网关控制器内部功能 二.硬件设备间组网的物理链路形式 1.有线组 ...

  5. Android蓝牙开发系列文章-蓝牙音箱连接

    经过一段时间的折腾,我的Android Studio终于可以正常工作了,期间遇到的坑记录在了文章<创建Android Studio 3.5第一个工程遇到的坑>. 我们在<Androi ...

  6. 蓝牙(BLE)应用框架接口设计和应用开发——以TI CC2541为例

    本文从功能需求的角度分析一般蓝牙BLE单芯片的应用框架(SDK Framework)的接口设计过程,并以TI CC2541为例说明BLE的应用开发方法. 一.应用框架(Framework) 我们熟知的 ...

  7. android 蓝牙sco stream_voice_call,android TTS输出总是要 A2DP_android_开发99编程知识库

    大多数设备上我都有这样的工作. 下面是在语音呼叫流中使用蓝牙SCO代替A2DP启动TTS的部分.if (mTtsReady) { myHash = new HashMap(); myHash.put( ...

  8. IoT:BLE4.0教程一 蓝牙协议连接过程与广播分析

    IoT:BLE4.0教程一 蓝牙协议连接过程与广播分析 1.蓝牙简介 什么是蓝牙4.0 蓝牙无线技术是使用范围最广泛的全球短距离无线标准之一,蓝牙4.0版本涵盖了三种蓝牙技术,即传统蓝牙.高速蓝牙和低 ...

  9. 联想蓝牙没有连接的地方计算机,联想笔记本连不上蓝牙怎么办 笔记本连接蓝牙耳机没声音解决方法...

    很多笔记本电脑用户使用的大多数都是知名品牌,联想是笔记本电脑中较为有名的,今天小编为大家带来的便是关于联想笔记本连接不了蓝牙的解决方法,相信有很多联想笔记本电脑用户遇到过,下面让我们看看教程了解下吧! ...

最新文章

  1. python 的文件读写方法:read readline readlines wirte   writelines
  2. error_reporting()
  3. 低通滤波器转带通滤波器公式由来_?OPA627AP 高通滤波器
  4. Stream流终结操作方法
  5. 【转】Microsoft Teams快速上手系列-01Teams的前世今生
  6. springboot怎么杀进程_头疼,springboot进程总是自己退出
  7. 论文阅读:Pyramidal Feature Shrinking for Salient Object Detection
  8. LINUX编译automake
  9. 用iMindMap制作健康生活计划思维导图
  10. 2021.10.13 向日葵黑屏驱动卸载方法
  11. python傅立叶光顺_函数型数据分析若干方法及应用
  12. 浅谈木材加工企业的电气火灾隐患及电气火灾监控系统的应用
  13. 龙果学院从无到有构建亿级微服务秒杀系统
  14. torch.nn.Module.parameters(recurse=True)
  15. wifi的html页面,WiFi
  16. Git 笔记 - 程序员都要掌握的 Git
  17. firewalld 指定IP访问某端口
  18. java中的char_java中的char是什么意思?
  19. Excel分组行转列
  20. 微信小程序:使用canvas 生成图片 并分享

热门文章

  1. 技术人攻略访谈四十|刘睿民:数据库战国时代,我不跟你们玩政治!
  2. plantuml样式_PlantUML之活动图
  3. 查看Android应用内存的方法,Android获取App内存使用情况的方法
  4. 桌面文件突然不见了怎么恢复?
  5. 逆商助你回顾2019年迎面2020年
  6. 初识JAVA:猜数字小游戏案例---系统产生一个1-100之间的随机数,猜出这个数是多少?
  7. macf键与功能键切换_功能切换(功能开关或功能标志)与功能分支
  8. android webview无法显示H5中的图片
  9. 图片社交php,图像社交时代
  10. 以YOLOv5为基准实现布匹缺陷检测(Fabric Defect Detection)