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问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
蓝牙连接的sco问题
之前开发蓝牙app的时候遇到了一个问题,想让蓝牙麦克风实时地接收语音信号,但是发现蓝牙咪头始终不能传入声音信号,只有手机的麦克风能够传入声音信号,查阅了资料,发现是sco没有设置好。经过多尝试后解决了问题,这里分享给大家。 首先我使用了一个按键来设置打开或者关闭sco,即是用蓝牙麦克风输入还是用手机麦克风输入。 case R.id.button1: i...
android 蓝牙sco开发
近段时间在做bluetooth双向通信,坑的不轻,各种问题不断,感觉这坑都填不完的一样。把这段时间的东西写下来,给需要的小伙伴参考下,能少坑是一点 public class Main2Activity extends AppCompatActivity { AudioManager mAm; InavrSR inavrSR; @Override protected voi
Android: 如何切换 SCO 链路。
最近在做蓝牙音箱开发,在 A2DP 和 HFP 来回切换的时候,遇到了手机兼容性的问题。最终发现设备收声和手机收声,是因为 soc 切换有问题。原先在网上找了一些资料发现其实还蛮简单的。就两句话,当时没想这么多就直接写了,发现还真能从设备收声,然后就没管了。然后客户反馈很多手机不能从设备收声,尤其是三星、华为最为严重。好吧,查了很多资料,同时跟嵌入式开发对代码。 SOC 都连接上了,还是不行。最终...
Android连接蓝牙打开SCO,实现蓝牙耳机输入
在很多应用中,都存在使用蓝牙进行录音。 首先我们写一个BroadcastReceiver,进行监听蓝牙状态改变。 public class BluetoothStatusRec extends BroadcastReceiver{ private String TAG = "BluetoothStatusRec"; public static AudioManager mAu...
Android4.4蓝牙耳机HFP流程分析-3
手机连接蓝牙耳机后,当手机的CALL STATE 发生改变时,会通过PhoneStateChanged和HFP Bluetooth Interface同步CALL STATE,然后发送相应的AT命令给蓝牙耳机。 蓝牙耳机也可以发送AT命令给AG(语音网关)。然后通过JNI回调函数返回给上层,上层通过层层判断之后,会将相关信息传递到RILJ,然后封装好后使用AT指令的方式发送到Modem端执行相应
Bluetooth技术学习笔记 ——HFP之音频连接处理
参考:HFP_v1.7.1 Synchronous Connection,同步连接 Audio Connection set up,音频连接建立 Audio Connection release,音频连接释放 Codec Connection set up,编解码器建立 1. 音频连接相关AT命令   2. 编解码器连接建立 (3) 3. 音频连接建立 音频连接建立意味着...
Android蓝牙音频两个问题
1.qq通话,微信通话,打电话,铃声想起时,为何铃声只在手机端响起?而蓝牙耳机里只有嘟嘟声? (1)来电铃声播放 streamType = 2(AUDIO_STREAM_RING) APM::AudioPolicyManager: startOutput() output 18, stream 2, session 24 (2)Engine::getStrategyForStream()...
Android 蓝牙连接之 A2dp
      A2DPProfile  定义了高质量音频数据传输的协议和过程,包括立体声和单声道数据的传输。这里的高质量音频指的是单声道(Mono)和立体声(Sterco)  的音频,主要区别于蓝牙  SCO  链路上传输的普通语音。A2DP  的典型应用是将音乐播放器的音频数据发送到耳机或音箱。   由于蓝牙提供的带宽较窄,音频数据可能需要进行有效的压缩才能保证接收端的实时播放。   目前...
Android 打开蓝牙耳机录音
此demo是用来开启蓝牙耳机的Sco模式,进而行录音,然后保存到手机sd卡中的。
android 蓝牙ACL通讯详解
本章讲述的是一般的蓝牙通讯而非BLE,BLE通讯的话可以看我的下一篇文章 打个点,后面补上demo和详细实现思路
Android 实现蓝牙录音
#Android 实现蓝牙录音 本文实现使用AudioRecord 来进行蓝牙录音。 主要是通过打开蓝牙SCO通路实现。 这里不考虑连接蓝牙问题,要确保蓝牙连接成功。 app的界面 实现功能:普通录音、停止、播放和蓝牙录音、停止、播放。 具体的实现过程: 这里封装了打开SCO的工具类。 先是打开SCO通道后进行蓝牙录音。 使用AudioRecord 来进行蓝牙录音。 使用AudioTrack 来...
蓝牙的音频通路
如上图: 音频通路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,这两种方式表
Android bluetooth设备状态监听
public class BluetoothHeadsetBroadcastReceiver extends BroadcastReceiver { public BluetoothHeadsetBroadcastReceiver() { } public void onReceive(Context context, Intent intent) {
Android 蓝牙开发(七)hfp音频连接
接着上一篇hfp连接继续,查看蓝牙通话时如何进行处理的。hfp连接有两个连接,一个是hfp连接(在设置界面显示的是手机音频),另一个是蓝牙通话时进行的音频连接。这篇说下第二个连接,音频连接处理过程。
蓝牙之六-A2dp代码调用流程
上图描述的是蓝牙协议栈,通过该图,查看A2dp的代码在协议栈的调用流程。其分层架构如下: 1.蓝牙的系统服务service通过JNI与bluedroid协议栈进行通信。协议栈分为两层,Bluetooth Embedded System(BTE)和Bluetooth Application Layer(BTA)。这两层和framework层应用进行通信。 2.蓝牙服务通过Binder IPC通
Android使用蓝牙录音和播放
简介实现一个可以边录边播的工具,将蓝牙耳机麦克风录到的声音从耳机中播放出来。最近在做一个语音助手工具软件,具体需求是使用蓝牙耳机唤醒APP并讲话,APP将讲话内容进行语音识别,通过云平台进行理解并返回相应的操作。比如当用户说“播放音乐”的时候,APP将会随机播放一首歌。期间在蓝牙耳机录音和播放中遇到了很多问题,APP录不到声音,声音从手机听筒播放,没有任何声音等等等。因此实现了这个BTRecord...
从空中截获BLE数据包看蓝牙5协议流程【第二部分:蓝牙LL层连接】
-------------------------------------------------------------------------------------------------------- 文章版权归为微信公众号 无线技术联盟,转载请注明出处. 作者:XCODER ------------------------------------------------------...
Android蓝牙麦克风在接听电话后断开问题
工作中遇到了这个问题。 当接听电话并挂断后,虽然按键依旧可以控制手机,但蓝牙设备失去了麦克风的掌控权,声音全由手机话筒发出。 该设备对接听电话使用蓝牙设备没有需求,因此问题的关键就在于挂断电话后怎么重新夺回麦克风。 鉴于蓝牙研究的比较浅薄,找解决方法找了很久。 最终发现这个权限是由AudioManager中的startBluetoothSco和stopBluetoothSco控制 解决方法
蓝牙学习笔记之建立蓝牙连接的过程
发送广告数据包的叫广告发起者(advertisers),在广播通道接收广播数据包但没意向连接广播发起设备的叫扫描者( scanners),  需要连接到另一个设备的设备叫做 initiators,它监听可连接的广告数据包。如果advertiser正在使用一个可连接的广告事件, initiator在收到连接数据包的物理通道上发起一个连接请求,如果advertiser接受这个连接请求则这个广告事件结
Android 蓝牙发现设备,建立连接,显示谱线
Android 蓝牙发现设备,建立连接,显示谱线 Android 蓝牙发现设备,建立连接,
蓝牙 宽带通话 (wide band speech)WBS 剖析(一) -- profile层
一.概述 WBS(wide band speech)通俗来讲就是蓝牙宽带通话,通话数据frequency 16K,采用msbc编解码(chip中实现) 和NBS(narrow band speech)相对,NBS通俗来讲是窄带通话,通话数据frequency 8K,采用CSVD编解码(chip中实现) NBS是默认 二.实现 要实现WBS,总体来说比较复杂 要分两个阶段进行: 1
蓝牙之八-HFP
HFP 在调试安卓的HFP client时遇到了如下问题: 其中有一个E提示,因为AT命令的错误,所有创建SLC失败,然后断开RFCOMM链接,表现出来的是已经配对的手机不停的断开重连。 HFP协议 HFP(Hands-free Profile),让蓝牙设备可以控制电话,如接听、挂断、拒接、语音拨号等,拒接、语音拨号要视蓝牙耳机及电话是否支持。 目前HFP的使用场景有
Android开发蓝牙耳机按键监听(蓝牙监听应用测试)demo-(手机连接蓝牙耳机后可通过蓝牙音量键远程控制手机执行操作)
Android开发蓝牙耳机按键监听(蓝牙监听应用测试)demo-(手机连接蓝牙耳机后可通过蓝牙音量键远程控制手机执行操作)
蓝牙耳机拨打电话和VOIP通话两种方式对于上层来说创建SCO过程的区别
蓝牙耳机拨打电话和VOIP通话两种方式对于上层来说创建SCO的过程是不同的。     蓝牙耳机拨打电话是因为注册了函数handlePreciseCallStateChange(),当有CALL STATE状态发生改变时,就会调用BluetoothHeadset.java的phoneStateChanged()函数,在Headset 状态机里面调用processCallState()函数,通过调用
Bluetooth在android中的实现和开发
Bluetooth在android中的实现和开发
android 蓝牙与打印机建立连接
android 蓝牙与打印机建立连接
蓝牙sco连接源码
blue-usu: (Search, Connect, Playback, Record) with bluetooth devices like headset.<br> Rely on usu driver specialized for usb-bluetooth dongle.<br> Use GPL license.<br><br>=== COMPILE PROGRAM ===<br>make<br>will produce 3 program: ./blue, ./sco2raw, ./raw2sco.<br>All this must be executed from same directory.<br><br>=== USE: AUDIO RECORDING/PLAYBACK ===<br>1) load usu module (see \'usu\' USb ub User space on source forge)<br>2) make; ./blue<br>3) put your device in \'discovery mode\',<br>4) select \'search\' on textual menu,<br>5) select your device to connect with,<br>First time you are requested to enter pin code.<br>6) select \'quit\'<br>7) cat /proc/USBDo/isoc | ./sco2raw | sox -t raw -r 8000 -sw - isoc.wav<br> to record<br>8) sox isoc.wav -t raw -r 8000 -sw - | ./raw2sco > isoc.sco; cat isoc.sco > /proc/USBDo/isoc<br> to playback<br>9) ./blue<br>10) disconnect from your device.<br>Only 1 connection@time is supported.<br><br>=== KNOWN PROBLEMS/COMMON MISTAKES ===<br> - some bt dongle do correctly connection, but when interact with isoc endpoint\'ll give BUFFER OVERFLOW error,<br> - delete file {devices.txt, data.txt, currmac.bin} to clean blue \'memory\'.<br>
Android蓝牙无线对讲demo(手机连接蓝牙耳机后可通过蓝牙耳机实时对讲,音量可调)
Android蓝牙无线对讲demo(手机连接蓝牙耳机后可通过蓝牙耳机实时对讲,音量可调)。记得手机要先连接蓝牙耳机,才能通过蓝牙耳机对讲。
Android 蓝牙基础篇之 —— HFP
HFP 简单介绍 定义:HFP (Hands-free Profile),让蓝牙设备(如蓝牙耳机)可以控制电话,如接听、挂断、拒接、语音拨号等,拒接、语音拨号要看蓝牙设备是否支持。 HFP定义了音频网关(AG)和免提组件(HF)两个角色:  音频网关(AG) –该设备为音频(特别是手机)的输入/输出网关。  免提组件(HF) –该设备作为音频网关的远程音频输入/输出机制,并可提供若干遥控功能。 ...
蓝牙(三)a2dp连接
以下内容都是基于android6.0的基础上讲的,相对于android4.4架构有了很大改动。先借用一下图用一下。 上图描述的是蓝牙协议栈,通过该图,查看A2dp的代码在协议栈的调用流程。其分层架构如下:  1.蓝牙的系统服务service通过JNI与bluedroid协议栈进行通信。协议栈分为两层,Bluetooth Embedded System(BTE)和Bluetooth Applicat...
蓝牙HFP规范1.5
蓝牙免提规范1.5版本。内部提供相关的AT命令,做蓝牙相关的人有可能会用到。
Android Bluetooth蓝牙开发:Bluetooth蓝牙设备之间的连接建立(3)
 Android Bluetooth蓝牙开发:Bluetooth蓝牙设备之间的连接建立(3) Android Bluetooth蓝牙设备的连接编程模型和Java socket网络连接编程模型类型。Android不同设备间的蓝牙连接,首先在编程模型上分为“服务器端(server)”和“客户端(client)”。 一,Android Bluetooth蓝牙设备的“服务器端”。 在蓝牙的服务
android 获取蓝牙信号强度,连接后获取蓝牙RSSI信号强度
基于蓝牙的RSSI可以有很多应用,要获得蓝牙的RSSI无外乎两种方法。 一种就是基于扫瞄的方法,优点是Android本身支持,缺点是scan的时间比较长,并且中间过程不受控制,为了连续的测量,需要不断的scan;第二种就是,基于连接的方法,前提是要建立两个蓝牙设备的连接后,再测量RSSI,优点是后期测量比较方便,间隔时间也较短。 Markdown和扩展Markdown简洁的语法 代码块高亮
蓝牙电话 HFP 剖析(三) --- flow解析
一.SLC建立过程 deatil air packet 、 二.主动打电话 此文章的目的:帮助初入蓝牙的人理解HFP 是通过AT command交互 在这里不能一一列出具体的功能flow,如从事蓝牙,遇到HFP问题, 可以私信我
android关于连接蓝牙socket 通道
有时候 我们需要 自动连接 app 的socket 数据通道   ,,通常情况下,我们都只是 手点 设置》蓝牙 》搜索 》绑定》连接  电话/多媒体 》   ,上面的连接 仅仅是 A2DP 以及HEADSET 的连接    如何 自动连接  socket通道?  楼主有了一个想法 代码如下: // 检查如果蓝牙音频连接。 int result = bluetoothAdapter.get
蓝牙耳机的两种模式
蓝牙耳机的两种模式SCO(Synchronous Connection Oriented) 和A2DP(Advanced Audio Distribution Profile) 1.SCO 采样率:16K or 8K 支持录音(有进有出) 2.A2DP 采样率:16K 32K 44.1k 48K 不支持录音(只进不出) ...
蓝牙A2DP的初始化过程
当我们要使用A2dp这个profile的时候,首先A2DPService的start()函数会被触发: protected boolean start() { mStateMachine = A2dpStateMachine.make(this, this); mAvrcp = Avrcp.make(this); setA2dpServ
Android蓝牙开发(搜索,配对,连接,数据互传)
 最近公司开发需要用到蓝牙,花了大约一天的时间总结整理了一下。主要是为了以后自己方便看。有需要的朋友可以看下。欢迎一起讨论。后面会带上博客。里面是实现了蓝牙搜索,配对,连接,数据互传。
Android 蓝牙开发之搜索、配对、连接、通信大全
安卓平台提供对蓝牙的通讯栈的支持,允许设别和其他的设备进行无线传输数据。应用程序层通过安卓API来调用蓝牙的相关功能,这些API使程序无线连接到蓝牙设备,并拥有P2P或者多端无线连接的特性。
【Android】Audio音频输出通道切换 - 蓝牙、外放
手机音频的输出有外放(Speaker)、听筒(Telephone Receiver)、有线耳机(WiredHeadset)、蓝牙音箱(Bluetooth A2DP)等输出设备。在平时,电话免提、插拔耳机、连接断开蓝牙设备等操作系统都会自动切换Audio音频到相应的输出设备上。比如电话免提就是从听筒切换到外放扬声器,插入耳机就是从外放切换到耳机。场景需求Android系统自动切换的这些策略,并不能全部
相关热词 c# 线程顺序 c#昨天当前时间 c# 多进程 锁 c#mysql图片存取 c# ocx 委托事件 c# 读取类的属性和值 c# out 使用限制 c#获取url的id c#怎么进行分页查询 c# update 集合