环境:Android4.2.2

基层应用:SoundRecorder

蓝牙一般有两种语音相关的模式是A2DP和SCO,前者是高质量音乐播放(俗称:只进不出),后者是语音通话(俗称:有进有出)。要实现语音从蓝牙进,那么它一字得处于SCO模式下,也是通话模式下。另外是一个问题是如果使用MediaPlayer播放音乐,会被重新切回到A2DP模式下,那么就会模式错乱。所以使用AudioPlayer是一个不错的选择。总体的工作有两个调整模式,使用AudioPlayer播放音频。就可以实现同时从蓝牙音频进出了。

输出到蓝牙耳机:
AudioManager mAm = ( AudioManager ) getSystemService(Context.AUDIO_SERVICE);
mAm.setMode(AudioManager.MODE_IN_CALL);
mAm.setBluetoothScoOn(true);
mAm.startBluetoothSco();

从蓝牙耳机输入

再次整理需求:

1.入口:蓝牙连接状态android HEADSET onServiceConnected

状态改变(只更改 配置文件 不会发送状态改变广播) ->

根据蓝牙名字或者MAC地址以及是否支持sco需要处理

->

连接上:开启录放

断开:关闭录放

只监听SCO:

AndroidManifest.xml

android.bluetooth.headset.profile.action.CONNECTION_STATE_CHANGED

BTBroadcastReceiver.java

private int mBluetoothHeadsetState = 0;@Override
public void onReceive(Context context, Intent intent) {mContext = context;Log.e(LOG_TAG, "BT connect changed!");if (intent.getAction().equals(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED)) {mBluetoothHeadsetState = intent.getIntExtra(BluetoothHeadset.EXTRA_STATE,BluetoothHeadset.STATE_DISCONNECTED);Log.d(LOG_TAG, "==> new state: " + mBluetoothHeadsetState);updateBluetoothIndication();  // Also update any visible UI if necessary}
}public void updateBluetoothIndication() {if (mBluetoothHeadsetState == BluetoothProfile.STATE_CONNECTED) {Log.i(LOG_TAG, "BluetoothProfile.STATE_CONNECTED");} else if (mBluetoothHeadsetState == BluetoothProfile.STATE_DISCONNECTING) {Log.i(LOG_TAG, "BluetoothProfile.STATE_DISCONNECTING");} else {Log.i(LOG_TAG, "BluetoothProfile.OTHER");}
}

from packages/apps/Phone/src/com/android/phone/PhoneGlobals.java:1449

总合来说就是:切换蓝牙模式+Android边录边播应用 =BTScoPlayback。

Android中实现蓝牙录放音相关推荐

  1. android音视频工程师,音视频学习 (十三) Android 中通过 FFmpeg 命令对音视频编辑处理(已开源)...

    ## 音视频学习 (十三) Android 中通过 FFmpeg 命令对音视频编辑处理(已开源) ## 视音频编辑器 ## 前言 有时候我们想对音视频进行加工处理,比如视频编辑.添加字幕.裁剪等功能处 ...

  2. Android中的蓝牙技术

    随着智能化生活的发展,手机成为人们生活的必需品,而蓝牙技术也随之应运而生.蓝牙技术作为现代移动设备与设备之间传输数据的一种主流方式,已经广泛应用于手表.耳机.车载系统等多种设备.在Android设备中 ...

  3. android中基于蓝牙开发的demo

    今儿闲着无聊,重新浏览android中sdk重的sample中的demo,觉的BluetoothChat写的不错,就把它搬到这里,以方便查看和学习. 主显示界面activity: /** Copyri ...

  4. android视频剪辑处理第三方,Android 中通过 FFmpeg 命令对音视频编辑处理

    以下文章来源于DevYk ,作者DevYK 音视频编辑器 前言 有时候我们想对音视频进行加工处理,比如视频编辑.添加字幕.裁剪等功能处理,虽然 Github 上开源了一些比较不错的项目,但是如果我们想 ...

  5. Android 中通过 FFmpeg 命令对音视频编辑处理(已开源)

    视音频编辑器 前言 有时候我们想对音视频进行加工处理,比如视频编辑.添加字幕.裁剪等功能处理,虽然 Github 上开源了一些比较不错的项目,但是如果我们想在此项目上进行二次开发,比如我想拿到该项目的 ...

  6. S3C2440 IIS操作 uda134x录放音

    IIS(Inter-IC Sound)由飞利浦公司开发.是一种经常使用的音频设备接口,主要用于CD.MD.MP3等设备. s3c2440一共同拥有5个引脚用于IIS:IISDO.IISDI.IISSC ...

  7. Android中的蓝牙通信

    一.蓝牙简介 现有的蓝牙主要分为两类: 经典蓝牙:3.0版本以下的蓝牙,都称为"经典蓝牙",功耗高.传输数据量大.传输距离只有10米. 低功耗蓝牙:4.0及以上版本的蓝牙就是低功耗 ...

  8. android中的蓝牙通信协议,android 蓝牙SPP协议通信

    准备 1.蓝牙串行端口基于SPP协议(Serial Port Profile),能在蓝牙设备之间创建串口进行数据传输 2.SPP的UUID:00001101-0000-1000-8000-00805F ...

  9. android+蓝牙传输文件,在Android中使用蓝牙的消息和文件传输

    我正在开发一个应用程序,首先我们必须搜索和连接可用的配对蓝牙设备.我做到了连接.但之后我放了一个屏幕要求在文本和文件传输之间进行选择.当我选择文本时,将打开另一个屏幕,其中有edittext和按钮.无 ...

最新文章

  1. 技术雷达峰会2020:从技术趋势看行业挑战
  2. Vue-router进阶:导航守卫
  3. android 获取本机号码需要root吗?
  4. java 文件上传 servlet_java文件上传-原始的Servlet方式
  5. 映世便携音箱我对你一见钟情啦~
  6. halcon 旋转_Halcon视觉软件应该如何系统学习?
  7. linux进程理解,进程资源 - 进程基础 - [ 理解Linux进程 ] - 手册网
  8. 软件测试技术的方向,软件测试技术课堂教学计划(.NET方向
  9. java生成背景透明的png图片_关于Java生成背景透明的png图片
  10. SV学习(9)——随机函数、数组约束、随机控制
  11. 使命愿景价值观_为什么在制作产品时应该专注于愿景,价值,风险和先例
  12. 写出HTML的基本结构 做简要说明,北京市顺义区2017年--2018年届高三二模语文试题(卷)与答案解析.doc...
  13. realtek没有禁用前面板_为何我realtek HD没有禁用前面板检测选项?
  14. 如何提高自己的编码水平
  15. chrome + IDM + 油猴插件 实现百度网盘大文件的高速下载
  16. python爬取智联招聘职位信息(单进程)
  17. mysql多表联合查询练习题
  18. 虚幻引擎基础入门(C++) — 【代码命名规则篇 02】
  19. 林瞥网,一个关注站长导航工具网站
  20. 智能中控屏:产品介绍+未来发展趋势详解

热门文章

  1. chineseocr火车票识别研究
  2. 最简便windows上传文件到ubuntu
  3. 互联网时代计算机科学技术的发展,互联网时代下的计算机科学技术发展趋势
  4. Web 中间件漏洞笔记
  5. 个人任务管理工具(TODO工具)
  6. 舆情系统实战——思路
  7. 梅斯医学介入智慧医疗,开启医学领域的VR教育
  8. 河南分销系统开发|服装行业如何做引流裂变?
  9. 【多径信道】多径信道的simulink仿真
  10. Python 程序设计快速入门简易教程