Android建立蓝牙sco连接的方法 5C

监听蓝牙连接上后建立sco打开蓝牙的操作有2种,它们的区别是什么呢?

  1. 收BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED蓝牙连接的广播,如果是connected,调用AudioManager.startBluetoothSco()和AudioManager.setBluetoothScoOn(true)

  2. 收BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED蓝牙连接的广播,如果是connected,调用BluetoothHeadset.connectAudio()

AudioManager.startBluetoothSco()和BluetoothHeadset.connectAudio()之间的区别是什么呢?

0

2个回答

-1
-1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
android 蓝牙sco开发
近段时间在做bluetooth双向通信,坑的不轻,各种问题不断,感觉这坑都填不完的一样。把这段时间的东西写下来,给需要的小伙伴参考下,能少坑是一点 public class Main2Activity extends AppCompatActivity { AudioManager mAm; InavrSR inavrSR; @Override protected voi
蓝牙连接的sco问题
之前开发蓝牙app的时候遇到了一个问题,想让蓝牙麦克风实时地接收语音信号,但是发现蓝牙咪头始终不能传入声音信号,只有手机的麦克风能够传入声音信号,查阅了资料,发现是sco没有设置好。经过多尝试后解决了问题,这里分享给大家。 首先我使用了一个按键来设置打开或者关闭sco,即是用蓝牙麦克风输入还是用手机麦克风输入。 case R.id.button1: i...
蓝牙物理链路类型:SCO和ACL链路与A2DP
     蓝牙链路分两种同步链路(SCO)和异步链路(ACL)。A2DP(Advanced Audio Distribution Profile 高级音频传输模型)是跑在ACL链路上去高品质音频协议。A2DP定义了ACL(Asynchronous Connectionless 异步无连接)信道上传送单声道或立体声等高质量音A2DP 功能频信息的协议和过程     蓝牙物理链路SCO(S...
Android: 如何切换 SCO 链路。
最近在做蓝牙音箱开发,在 A2DP 和 HFP 来回切换的时候,遇到了手机兼容性的问题。最终发现设备收声和手机收声,是因为 soc 切换有问题。原先在网上找了一些资料发现其实还蛮简单的。就两句话,当时没想这么多就直接写了,发现还真能从设备收声,然后就没管了。然后客户反馈很多手机不能从设备收声,尤其是三星、华为最为严重。好吧,查了很多资料,同时跟嵌入式开发对代码。 SOC 都连接上了,还是不行。最终...
Android连接蓝牙打开SCO,实现蓝牙耳机输入
在很多应用中,都存在使用蓝牙进行录音。 首先我们写一个BroadcastReceiver,进行监听蓝牙状态改变。 public class BluetoothStatusRec extends BroadcastReceiver{ private String TAG = "BluetoothStatusRec"; public static AudioManager mAu...
蓝牙SCO与ACL链路
在主单元和从单元之间,可以确定不同的类型的蓝牙物理链路:ACL(AsynchronousConnectionless),和另一种链路是SCO(Synchronous Connection Oriented)。SCO主要用于同步话音传送,ACL主要用于分组数据传送。      SCO连接为对称连接,利用保留时隙传送数据包。它主要用于:主单元和从单元之间实现点到点链接。连接建立后,主设备和从设备可以
建立通话,如何连接蓝牙耳机SCO
1)通话之前,ACL是连接好的。在PoneApp里用了bluetoothhandfree这个类.在onCreate方法中,定义了bluetoothhandfree的对象,并把CM的信息传给了bluetoothhandfree类里。 if (BluetoothAdapter.getDefaultAdapter() != null) {                 // Start Bluet
蓝牙连接的建立过程
物理信道(physical channel)是蓝牙系统的最底层结构,它以一伪随机跳频序列、特定的发送时槽定时、接入码及帧头编码来表征。蓝牙定义了一系列物理信道用于不同的应用,包括用于匹克网内设备通信的匹克网物理信道,用于查找设备的查找扫描物理信道和用于寻呼设备的寻呼扫描物理信道。两台设备必须采用相同的物理信道才能进行通信。主从设备建立连接的过程就是建立相同的匹克网信道的过程,这样主从设备才能以同样
BlueTooth: 蓝牙基础知识进阶——物理链路和逻辑传输
三、物理链路物理链路是用来表示设备之间的物理连接的,它和对应的物理通道是相关联的。Q1:物理链路是否有检测通路状态的机制这个问题很好,无线传输在其便捷性的对面总是存在不可避免的问题。而通路的异常断开就是我们经常遇到的问题,而且可以说这可能是没有任何征兆的断开。物理链路层对这种情况是有处理的方法的,它引入了所谓的supervision timeout机制,在connected的状态下,若是收到一个有
Android中实现蓝牙录放音
环境:Android4.2.2 基层应用:SoundRecorder 输出到蓝牙耳机: AudioManager mAm = ( AudioManager ) getSystemService(Context.AUDIO_SERVICE); mAm.setMode(AudioManager.MODE_IN_CALL); mAm.setBluetoothScoOn(true); mAm.
android 蓝牙ACL通讯详解
本章讲述的是一般的蓝牙通讯而非BLE,BLE通讯的话可以看我的下一篇文章 打个点,后面补上demo和详细实现思路
Android跟蓝牙耳机建立连接有两种方式
 Android 跟蓝牙耳机建立连接有两种方式。 1. Android 主动跟蓝牙耳机连BluetoothSettings 中和蓝牙耳机配对上之后, BluetoothHeadsetService 会收到BONDING_CREATED_ACTION,这个时候BluetoothHeadsetService 会主动去和蓝牙耳机建立RFCOMM 连接。 if (action.equa
安卓中蓝牙免提HFP的一些分析
最近看了一些大牛的博客,无不提到了技术分享的重要性,的确,分享自己的知识不仅仅是与他人讨论并相互提高的过程,更是对自己知识的梳理。希望自己能以此为契机,形成周期性博客分享的习惯。文章标题为HFP的一些分析,HFP(Hand Free Profile)主要定义了安卓中与接打电话相关的一些功能的实现。本文主要介绍这其中对于HFP非常重要的Service Level Connection的建立。首先贴一个
Android 蓝牙开发(七)hfp音频连接
接着上一篇hfp连接继续,查看蓝牙通话时如何进行处理的。hfp连接有两个连接,一个是hfp连接(在设置界面显示的是手机音频),另一个是蓝牙通话时进行的音频连接。这篇说下第二个连接,音频连接处理过程。
Android4.4蓝牙耳机HFP流程分析-3
手机连接蓝牙耳机后,当手机的CALL STATE 发生改变时,会通过PhoneStateChanged和HFP Bluetooth Interface同步CALL STATE,然后发送相应的AT命令给蓝牙耳机。 蓝牙耳机也可以发送AT命令给AG(语音网关)。然后通过JNI回调函数返回给上层,上层通过层层判断之后,会将相关信息传递到RILJ,然后封装好后使用AT指令的方式发送到Modem端执行相应
Android蓝牙音频两个问题
1.qq通话,微信通话,打电话,铃声想起时,为何铃声只在手机端响起?而蓝牙耳机里只有嘟嘟声? (1)来电铃声播放 streamType = 2(AUDIO_STREAM_RING) APM::AudioPolicyManager: startOutput() output 18, stream 2, session 24 (2)Engine::getStrategyForStream()...
蓝牙核心-链路管理相关概念
蓝牙核心系统结构(CORESYSTEM ARCHITECTURE): 黑色的为用户数据通路,灰色的为命令/事件通道。 上图为蓝牙的核心模块,每个核心模块都有相关联的通信协议。 BR/EDR Controller由链路管理,链路控制器和BR/EDR无线模块构成。AMP Controller由AMP PAL,AMP MAC和AMP PHY构成。LE Controller由链路管理,链路控制
Android bluetooth设备状态监听
public class BluetoothHeadsetBroadcastReceiver extends BroadcastReceiver { public BluetoothHeadsetBroadcastReceiver() { } public void onReceive(Context context, Intent intent) {
蓝牙的音频通路
如上图: 音频通路1:Audio->L2CAP->ACL->HCI->Baseband,a2dp音频走这种方式; 音频通路2:Audio->Voice->SCO/eSCO->HCI->Baseband,hfp、hsp蓝牙通话走这种方式; 音频通路3:Audio->Voice->PCM->Baseband,hfp、hsp蓝牙通话走这种方式; 蓝牙通话的方式有音频通路2、音频通路3,这两种方式表
蓝牙之八-HFP
HFP 在调试安卓的HFP client时遇到了如下问题: 其中有一个E提示,因为AT命令的错误,所有创建SLC失败,然后断开RFCOMM链接,表现出来的是已经配对的手机不停的断开重连。 HFP协议 HFP(Hands-free Profile),让蓝牙设备可以控制电话,如接听、挂断、拒接、语音拨号等,拒接、语音拨号要视蓝牙耳机及电话是否支持。 目前HFP的使用场景有
Android关于蓝牙mic和speaker的输入输出
Android关于蓝牙mic和speaker的输入输出 发表回复 0.00 / 5 5 1 / 5 2 / 5 3 / 5 4 / 5 5 / 5 0 votes, 0.00 avg. rating (0% score) 小弟最近在做一个项目就是使用蓝牙mic录音,其他声音输出由蓝牙模块A2DP输出。
Android蓝牙开发浅谈 __ 耳机录音
转自http://blog.chinaunix.net/uid-27875-id-4424430.html 对于一般的软件开发人员来说,蓝牙是很少用到的,尤其是Android的蓝牙开发,国内的例子很少     Android对于蓝牙开发从2.0版本的sdk才开始支持,而且模拟器不支持,测试至少需要两部手机,所以制约了很多技术人员的开发,刚巧这段时间公司有蓝牙开发的需求,我看了很多国内
作为HF端的蓝牙通话无声音问题处理分享
只想记录下这个看似神奇的问题。问题描述:终端厂商反馈蓝牙打电话时高概率无声音,手机显示声音在HF端,但是相同软件,相同硬件,相同手机,到了原厂(即换了一个地点)就测不到了,再回到客户公司,又会高概率出现。从相同软硬件,相同手机,两个地方结果完全不同来看,应该是与环境有关;蓝牙通话时,可能有影响的环境首先想到的就是2.4GHz的信号;但从现象来看,表现是蓝牙完全无声音,且不会断开;若是干扰导致,应该...
Android 通过蓝牙采集音频
通过蓝牙的麦克风进行录音 MainActivity.java package com.example.bluetothrecord; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.In
蓝牙学习笔记之建立蓝牙连接的过程
发送广告数据包的叫广告发起者(advertisers),在广播通道接收广播数据包但没意向连接广播发起设备的叫扫描者( scanners),  需要连接到另一个设备的设备叫做 initiators,它监听可连接的广告数据包。如果advertiser正在使用一个可连接的广告事件, initiator在收到连接数据包的物理通道上发起一个连接请求,如果advertiser接受这个连接请求则这个广告事件结
Android蓝牙开发【七】hfp音频连接
接着上一篇hfp连接继续,查看蓝牙通话时如何进行处理的。hfp连接有两个连接,一个是hfp连接(在设置界面显示的是手机音频),另一个是蓝牙通话时进行的音频连接。这篇说下第二个连接,音频连接处理过程。 该文章是基于Android源码4.3的 1 连接音频 在手机音频正常连接时,接通电话,并选择蓝牙通话。从系统应用Phone开始分析。 代码路径:p
Android 打开蓝牙耳机录音
此demo是用来开启蓝牙耳机的Sco模式,进而行录音,然后保存到手机sd卡中的。
从空中截获BLE数据包看蓝牙5协议流程【第二部分:蓝牙LL层连接】
-------------------------------------------------------------------------------------------------------- 文章版权归为微信公众号 无线技术联盟,转载请注明出处. 作者:XCODER ------------------------------------------------------...
Android蓝牙无线对讲demo(手机连接蓝牙耳机后可通过蓝牙耳机实时对讲,音量可调)
Android蓝牙无线对讲demo(手机连接蓝牙耳机后可通过蓝牙耳机实时对讲,音量可调)。记得手机要先连接蓝牙耳机,才能通过蓝牙耳机对讲。
Android: AudioRecord 通过蓝牙设备录制声音
am = (AudioManager) getSystemService(Context.AUDIO_SERVICE); registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { int state = intent.getIn
Android蓝牙麦克风在接听电话后断开问题
工作中遇到了这个问题。 当接听电话并挂断后,虽然按键依旧可以控制手机,但蓝牙设备失去了麦克风的掌控权,声音全由手机话筒发出。 该设备对接听电话使用蓝牙设备没有需求,因此问题的关键就在于挂断电话后怎么重新夺回麦克风。 鉴于蓝牙研究的比较浅薄,找解决方法找了很久。 最终发现这个权限是由AudioManager中的startBluetoothSco和stopBluetoothSco控制 解决方法
蓝牙之六-A2dp代码调用流程
上图描述的是蓝牙协议栈,通过该图,查看A2dp的代码在协议栈的调用流程。其分层架构如下: 1.蓝牙的系统服务service通过JNI与bluedroid协议栈进行通信。协议栈分为两层,Bluetooth Embedded System(BTE)和Bluetooth Application Layer(BTA)。这两层和framework层应用进行通信。 2.蓝牙服务通过Binder IPC通
Android蓝牙编程 之 同时打开SPP和音频A2DP服务
SPP部分
蓝牙耳机录音
前天想找个蓝牙录音程序,发现居然没有!没办法,就自己动手DIY了。一些关键代码摘出来,希望对大家有用。     本代码基于android 2.2以上。IOS就不要问我了,不越狱的IOS设备,蓝牙除了用蓝牙耳机,再就是IOS设备之间联机游戏,不可理喻! 一、初始化 添加权限:     <uses-permission android:name="android.permission.WR
BLE蓝牙协议 — BLE连接建立过程梳理(二)
连接事件 在一个连接当中,主设备会在每个连接事件里向从设备发送数据包。一个连接事件是指主设备和从设备之间相互发送数据包的过程。连接事件的进行始终位于一个频率,每个数据包会在上个数据包发完之后等待 150μs 再发送。
蓝牙电话 HFP 剖析(三) --- flow解析
一.SLC建立过程 deatil air packet 、 二.主动打电话 此文章的目的:帮助初入蓝牙的人理解HFP 是通过AT command交互 在这里不能一一列出具体的功能flow,如从事蓝牙,遇到HFP问题, 可以私信我
Android 蓝牙发现设备,建立连接,显示谱线
Android 蓝牙发现设备,建立连接,显示谱线 Android 蓝牙发现设备,建立连接,
苹果设备蓝牙接入设计指南
本文介绍了针对硬件通过蓝牙传输来与苹果产品包括Mac,iPhone和iPod touch等交互的设计指南。为了能够与苹果产品兼容,现在和未来的设计当中,蓝牙计入都应该遵循本文中的规范。本文主要分为两个部分:通用需求描述了使用蓝牙接入的硬件设备设计应该遵循的通用蓝牙标准;苹果协议和开发者支持描述了苹果用来扩展标准蓝牙文件从而提升接入能力的协议。 通用需求 遵循蓝牙协议 任何能够与苹
android 蓝牙代码架构及其uart 到rfcomm流程
Android Bluetooth Architecture蓝牙代码架构部分(google 官方蓝牙框架)
缩短蓝牙链路建立时间的快速连接方案
蓝牙技术已经大量在通信产品中得到应用,然而存在的一些技术细节限制了它的发展,其中一项就是建立蓝牙链路的时延过长。本文参考蓝牙SIG组织最新公布的协议,在详细分析建立蓝牙链路的时延的基础上,给出了两种快速建立蓝牙链路的方案,并对它们的性能进行了比较。 蓝牙设备具有多种工作模式,它们可以根据各自所处的状态和下一步的需要选择合适的工作模式。在一个蓝牙网络(Piconet)建立之前,所有的设备都工作在待
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 建立课程表数据库 数据库课程表的建立