Android中实现蓝牙录放音
环境: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中实现蓝牙录放音相关推荐
- android音视频工程师,音视频学习 (十三) Android 中通过 FFmpeg 命令对音视频编辑处理(已开源)...
## 音视频学习 (十三) Android 中通过 FFmpeg 命令对音视频编辑处理(已开源) ## 视音频编辑器 ## 前言 有时候我们想对音视频进行加工处理,比如视频编辑.添加字幕.裁剪等功能处 ...
- Android中的蓝牙技术
随着智能化生活的发展,手机成为人们生活的必需品,而蓝牙技术也随之应运而生.蓝牙技术作为现代移动设备与设备之间传输数据的一种主流方式,已经广泛应用于手表.耳机.车载系统等多种设备.在Android设备中 ...
- android中基于蓝牙开发的demo
今儿闲着无聊,重新浏览android中sdk重的sample中的demo,觉的BluetoothChat写的不错,就把它搬到这里,以方便查看和学习. 主显示界面activity: /** Copyri ...
- android视频剪辑处理第三方,Android 中通过 FFmpeg 命令对音视频编辑处理
以下文章来源于DevYk ,作者DevYK 音视频编辑器 前言 有时候我们想对音视频进行加工处理,比如视频编辑.添加字幕.裁剪等功能处理,虽然 Github 上开源了一些比较不错的项目,但是如果我们想 ...
- Android 中通过 FFmpeg 命令对音视频编辑处理(已开源)
视音频编辑器 前言 有时候我们想对音视频进行加工处理,比如视频编辑.添加字幕.裁剪等功能处理,虽然 Github 上开源了一些比较不错的项目,但是如果我们想在此项目上进行二次开发,比如我想拿到该项目的 ...
- S3C2440 IIS操作 uda134x录放音
IIS(Inter-IC Sound)由飞利浦公司开发.是一种经常使用的音频设备接口,主要用于CD.MD.MP3等设备. s3c2440一共同拥有5个引脚用于IIS:IISDO.IISDI.IISSC ...
- Android中的蓝牙通信
一.蓝牙简介 现有的蓝牙主要分为两类: 经典蓝牙:3.0版本以下的蓝牙,都称为"经典蓝牙",功耗高.传输数据量大.传输距离只有10米. 低功耗蓝牙:4.0及以上版本的蓝牙就是低功耗 ...
- android中的蓝牙通信协议,android 蓝牙SPP协议通信
准备 1.蓝牙串行端口基于SPP协议(Serial Port Profile),能在蓝牙设备之间创建串口进行数据传输 2.SPP的UUID:00001101-0000-1000-8000-00805F ...
- android+蓝牙传输文件,在Android中使用蓝牙的消息和文件传输
我正在开发一个应用程序,首先我们必须搜索和连接可用的配对蓝牙设备.我做到了连接.但之后我放了一个屏幕要求在文本和文件传输之间进行选择.当我选择文本时,将打开另一个屏幕,其中有edittext和按钮.无 ...
最新文章
- 技术雷达峰会2020:从技术趋势看行业挑战
- Vue-router进阶:导航守卫
- android 获取本机号码需要root吗?
- java 文件上传 servlet_java文件上传-原始的Servlet方式
- 映世便携音箱我对你一见钟情啦~
- halcon 旋转_Halcon视觉软件应该如何系统学习?
- linux进程理解,进程资源 - 进程基础 - [ 理解Linux进程 ] - 手册网
- 软件测试技术的方向,软件测试技术课堂教学计划(.NET方向
- java生成背景透明的png图片_关于Java生成背景透明的png图片
- SV学习(9)——随机函数、数组约束、随机控制
- 使命愿景价值观_为什么在制作产品时应该专注于愿景,价值,风险和先例
- 写出HTML的基本结构 做简要说明,北京市顺义区2017年--2018年届高三二模语文试题(卷)与答案解析.doc...
- realtek没有禁用前面板_为何我realtek HD没有禁用前面板检测选项?
- 如何提高自己的编码水平
- chrome + IDM + 油猴插件 实现百度网盘大文件的高速下载
- python爬取智联招聘职位信息(单进程)
- mysql多表联合查询练习题
- 虚幻引擎基础入门(C++) — 【代码命名规则篇 02】
- 林瞥网,一个关注站长导航工具网站
- 智能中控屏:产品介绍+未来发展趋势详解