在很多应用中,都存在使用蓝牙进行录音。

首先我们写一个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,实现蓝牙耳机输入相关推荐

  1. android 蓝牙地址连接打印机,android 连接蓝牙打印机 BluetoothAdapter

    android 连接蓝牙打印机 BluetoothAdapter 源码下载地址:https://github.com/yylxy/BluetoothText.git public class Prin ...

  2. android 连接蓝牙电子秤_电子秤蓝牙双模通讯Android低功耗蓝牙(蓝牙4.0)BLE开发(上)...

    电子秤蓝牙双模通讯Android低功耗蓝牙(蓝牙4.0)BLE开发(上) 前段时间,公司项目用到了手机APP和蓝牙设备的通讯开发,这里也正好对低功耗蓝牙(蓝牙4.0及以后标准)的开发,做一个总结. 蓝 ...

  3. Android连接蓝牙打印机

    前言 在之前写过一篇Android操作蓝牙打印机(上),当时也是因为自己在工作中确实走了许多弯路,所以当时计划着用两篇文章详细阐述蓝牙打印的整个流程,也是对工作的一种总结,其次也可以给蓝牙打印方面感觉 ...

  4. android连接蓝牙音响

    public class BluetoothConnect {private DeviceReceiver devicecReceiver;List<BluetoothDevice> de ...

  5. Android连接蓝牙打印机实现PDF文档的打印

    目前网上教程与Demo介绍的都是蓝牙连接热敏打印机(pos机大小的打印机),如果想通过蓝牙连接日常所见到的打印机,进行打印,这些教程或Demo是做不到的. 目前Android的蓝牙并不支持BPP(Ba ...

  6. android 连接蓝牙音响,Android 扫描附近的蓝牙设备并连接蓝牙音响的示例

    Android 扫描附近的蓝牙设备并连接蓝牙音响的示例 发布时间:2020-09-10 04:30:39 来源:脚本之家 阅读:111 作者:叶应是叶 写了一个可以扫描附近蓝牙设备的小Demo,可以查 ...

  7. android 连接蓝牙电子秤_Android实现蓝牙电子秤连接

    mDeviceList; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate ...

  8. android 连接蓝牙电子秤_Android实现串口通讯—连接有线电子秤

    前言 在之前的有讲过Andrpid中USB通讯的文章,大家感兴趣的话,可以参看以下文章: Android实现USB连接 今天就来讲讲Android利用串口实现有线电子秤的连接. 今天涉及以下内容: 电 ...

  9. mui android连接蓝牙打印机打印

    android设备连蓝牙打印机打印,代码如下:  mui.plusReady(function(){             main = plus.android.runtimeMainActivi ...

最新文章

  1. scala------------:: , +:, :+, :::, +++的区别
  2. Linux rpm 命令参数
  3. OverLoad与override的区别
  4. reactjs虚拟DOM与真实DOM
  5. 为什么银行大额存单没有4年期?想存4年期怎么办?
  6. Host SMBus controller not enabled的解决方法
  7. python中函数的可变参数解析
  8. Pro Android学习笔记(三三):Menu(4):Alternative菜单
  9. 轨道坐标系_天文坐标系分类
  10. 解析全球热点安全事件背后的玄机
  11. matlab hopty,运行Matlab时出现错误?Attempted to access rxd(500); index out of bou
  12. .NET连接SQL Server
  13. trycatch抛出异常_满屏的trycatch,这代码写得真丑!
  14. 【USACO 4.3.2】质数方阵
  15. 模糊规则优化matlab,遗传算法优化模糊pid控制规则
  16. 概率论与数理统计 积分表(高等数学附录)
  17. win7备份工具_调解 win7系统一键还原精灵使用的具体方法 -win7系统使用教程
  18. 背包问题大全(动态规划)
  19. SFUD | 一款串行 Flash 通用驱动库
  20. 当居住产业挺进深水区,数字化能衍生出什么机会?

热门文章

  1. UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 2: illegal mu
  2. docker安装包安装
  3. [附源码]java毕业设计新能源汽车租赁管理系统
  4. 【CXY】JAVA基础 之 Collections
  5. 小米计算机无法清除,小米蓝牙怎么删除不常用设备
  6. 继续谈下脑残的NODE_MODULE_VERSION,全世界冷眼看着electron
  7. 一种具有17路可调PWM直流电机的串口遥控机器人
  8. Pygame开发Flappy Bird小游戏(下)
  9. 01、uniapp连接MUMU模拟器
  10. docker 的安装以及简单centos镜像制作、启动