Android连接蓝牙打开SCO,实现蓝牙耳机输入
在很多应用中,都存在使用蓝牙进行录音。
首先我们写一个BroadcastReceiver,进行监听蓝牙状态改变。
public class BluetoothStatusRec extends BroadcastReceiver{private String TAG = "BluetoothStatusRec";public static AudioManager mAudioManager ;private TurnOffBtn mTurnOffBtn;public static boolean mIsScoEnable = false;public BluetoothStatusRec(TurnOffBtn ins){mTurnOffBtn = ins;}@Overridepublic void onReceive(Context context, Intent intent) {mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);if(intent.getAction() == BluetoothDevice.ACTION_ACL_CONNECTED){Log.d(TAG,"连接成功");mTurnOffBtn.turnOn(); mTurnOffBtn.changeBtn();context.registerReceiver(new BroadcastReceiver() { //动态注册一个接受SCO状态改变的BroadcastReceiver@Overridepublic void onReceive(Context context, Intent intent) {int state = intent.getIntExtra(AudioManager.EXTRA_SCO_AUDIO_STATE, -1);Log.d(TAG, "Audio SCO state: " + state);if (AudioManager.SCO_AUDIO_STATE_CONNECTED == state) { //SCO打开后(由手机输入变为蓝牙耳机输入),进行录音mAudioManager.setBluetoothScoOn(true);context.unregisterReceiver(this); //记得接收后解除注册//startRecord(); //进行录音,此时声源来自蓝牙耳机mTurnOffBtn.changeBtn();mTurnOffBtn.turnOn();Log.d("ww","连接sco成功");}else{try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}mAudioManager.startBluetoothSco();mTurnOffBtn.turnOff();mTurnOffBtn.changeBtnOn();}}}, new IntentFilter(AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED));mAudioManager.startBluetoothSco();}if(intent.getAction() == BluetoothDevice.ACTION_ACL_DISCONNECTED){mTurnOffBtn.turnOff();mTurnOffBtn.changeBtnOn();}}public interface TurnOffBtn{void turnOff();void turnOn();void changeBtn();//连接蓝牙后禁用上面的start,stop按钮void changeBtnOn();//连接蓝牙后启用上面的start,stop按钮}}
然后在清单文件中声明这个BroadcastReceiver,
<receiver android:name="com.tanyaping.audio.blueRec.BluetoothStatusRec"><intent-filter><action android:name="BluetoothDevice.ACTION_ACL_CONNECTED" /><action android:name="BluetoothDevice.ACTION_ACL_DISCONNECTED" /></intent-filter></receiver>
这个蓝牙的广播(BluetoothStatusRec)也需要动态注册,
然后在清单文件中声明所需权限:
<uses-permission android:name="android.permission.BLUETOOTH"/><uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/><uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED"/><uses-permissionandroid:name="android.permission.MODIFY_AUDIO_SETTINGS" /><!-- 录音权限 --><uses-permission android:name="android.permission.RECORD_AUDIO" />
如果没有声明相应权限,耳机录音会失败。
Android连接蓝牙打开SCO,实现蓝牙耳机输入相关推荐
- android 蓝牙地址连接打印机,android 连接蓝牙打印机 BluetoothAdapter
android 连接蓝牙打印机 BluetoothAdapter 源码下载地址:https://github.com/yylxy/BluetoothText.git public class Prin ...
- android 连接蓝牙电子秤_电子秤蓝牙双模通讯Android低功耗蓝牙(蓝牙4.0)BLE开发(上)...
电子秤蓝牙双模通讯Android低功耗蓝牙(蓝牙4.0)BLE开发(上) 前段时间,公司项目用到了手机APP和蓝牙设备的通讯开发,这里也正好对低功耗蓝牙(蓝牙4.0及以后标准)的开发,做一个总结. 蓝 ...
- Android连接蓝牙打印机
前言 在之前写过一篇Android操作蓝牙打印机(上),当时也是因为自己在工作中确实走了许多弯路,所以当时计划着用两篇文章详细阐述蓝牙打印的整个流程,也是对工作的一种总结,其次也可以给蓝牙打印方面感觉 ...
- android连接蓝牙音响
public class BluetoothConnect {private DeviceReceiver devicecReceiver;List<BluetoothDevice> de ...
- Android连接蓝牙打印机实现PDF文档的打印
目前网上教程与Demo介绍的都是蓝牙连接热敏打印机(pos机大小的打印机),如果想通过蓝牙连接日常所见到的打印机,进行打印,这些教程或Demo是做不到的. 目前Android的蓝牙并不支持BPP(Ba ...
- android 连接蓝牙音响,Android 扫描附近的蓝牙设备并连接蓝牙音响的示例
Android 扫描附近的蓝牙设备并连接蓝牙音响的示例 发布时间:2020-09-10 04:30:39 来源:脚本之家 阅读:111 作者:叶应是叶 写了一个可以扫描附近蓝牙设备的小Demo,可以查 ...
- android 连接蓝牙电子秤_Android实现蓝牙电子秤连接
mDeviceList; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate ...
- android 连接蓝牙电子秤_Android实现串口通讯—连接有线电子秤
前言 在之前的有讲过Andrpid中USB通讯的文章,大家感兴趣的话,可以参看以下文章: Android实现USB连接 今天就来讲讲Android利用串口实现有线电子秤的连接. 今天涉及以下内容: 电 ...
- mui android连接蓝牙打印机打印
android设备连蓝牙打印机打印,代码如下: mui.plusReady(function(){ main = plus.android.runtimeMainActivi ...
最新文章
- scala------------:: , +:, :+, :::, +++的区别
- Linux rpm 命令参数
- OverLoad与override的区别
- reactjs虚拟DOM与真实DOM
- 为什么银行大额存单没有4年期?想存4年期怎么办?
- Host SMBus controller not enabled的解决方法
- python中函数的可变参数解析
- Pro Android学习笔记(三三):Menu(4):Alternative菜单
- 轨道坐标系_天文坐标系分类
- 解析全球热点安全事件背后的玄机
- matlab hopty,运行Matlab时出现错误?Attempted to access rxd(500); index out of bou
- .NET连接SQL Server
- trycatch抛出异常_满屏的trycatch,这代码写得真丑!
- 【USACO 4.3.2】质数方阵
- 模糊规则优化matlab,遗传算法优化模糊pid控制规则
- 概率论与数理统计 积分表(高等数学附录)
- win7备份工具_调解 win7系统一键还原精灵使用的具体方法 -win7系统使用教程
- 背包问题大全(动态规划)
- SFUD | 一款串行 Flash 通用驱动库
- 当居住产业挺进深水区,数字化能衍生出什么机会?
热门文章
- UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 2: illegal mu
- docker安装包安装
- [附源码]java毕业设计新能源汽车租赁管理系统
- 【CXY】JAVA基础 之 Collections
- 小米计算机无法清除,小米蓝牙怎么删除不常用设备
- 继续谈下脑残的NODE_MODULE_VERSION,全世界冷眼看着electron
- 一种具有17路可调PWM直流电机的串口遥控机器人
- Pygame开发Flappy Bird小游戏(下)
- 01、uniapp连接MUMU模拟器
- docker 的安装以及简单centos镜像制作、启动