将其移至答案,以便进行进一步的评论。效果很好!

public class BluetoothReceiver extends BroadcastReceiver {

private AudioManager localAudioManager;

private static final int STATE_DISCONNECTED = 0x00000000;

private static final String EXTRA_STATE = "android.bluetooth.headset.extra.STATE";

private static final String TAG = "BluetoothReceiver";

private static final String ACTION_BT_HEADSET_STATE_CHANGED = "android.bluetooth.headset.action.STATE_CHANGED";

private static final String ACTION_BT_HEADSET_FORCE_ON = "android.bluetooth.headset.action.FORCE_ON";

private static final String ACTION_BT_HEADSET_FORCE_OFF = "android.bluetooth.headset.action.FORCE_OFF";

@Override

public void onReceive(final Context context, final Intent intent) {

Log.i(TAG,"onReceive - BluetoothBroadcast");

localAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);

final String action = intent.getAction();

if (action.equals(ACTION_BT_HEADSET_STATE_CHANGED)) {

final int extraData = intent.getIntExtra(EXTRA_STATE, STATE_DISCONNECTED);

if (extraData == STATE_DISCONNECTED) {

localAudioManager.setBluetoothScoOn(false);

localAudioManager.stopBluetoothSco();

localAudioManager.setMode(AudioManager.MODE_NORMAL);

Log.i(TAG, "Bluetooth Headset Off " + localAudioManager.getMode());

Log.i(TAG, "A2DP: " + localAudioManager.isBluetoothA2dpOn() + ". SCO: " + localAudioManager.isBluetoothScoAvailableOffCall());

} else {

localAudioManager.setMode(0);

localAudioManager.setBluetoothScoOn(true);

localAudioManager.startBluetoothSco();

localAudioManager.setMode(AudioManager.MODE_IN_CALL);

Log.i(TAG, "Bluetooth Headset On " + localAudioManager.getMode());

Log.i(TAG, "A2DP: " + localAudioManager.isBluetoothA2dpOn() + ". SCO: " + localAudioManager.isBluetoothScoAvailableOffCall());

}

}

if (action.equals(ACTION_BT_HEADSET_FORCE_ON)) {

localAudioManager.setMode(0);

localAudioManager.setBluetoothScoOn(true);

localAudioManager.startBluetoothSco();

localAudioManager.setMode(AudioManager.MODE_IN_CALL);

Log.i(TAG, "Bluetooth Headset On " + localAudioManager.getMode());

Log.i(TAG, "A2DP: " + localAudioManager.isBluetoothA2dpOn() + ". SCO: " + localAudioManager.isBluetoothScoAvailableOffCall());

}

if (action.equals(ACTION_BT_HEADSET_FORCE_OFF)) {

localAudioManager.setBluetoothScoOn(false);

localAudioManager.stopBluetoothSco();

localAudioManager.setMode(AudioManager.MODE_NORMAL);

Log.i(TAG, "Bluetooth Headset Off " + localAudioManager.getMode());

Log.i(TAG, "A2DP: " + localAudioManager.isBluetoothA2dpOn() + ". SCO: " + localAudioManager.isBluetoothScoAvailableOffCall());

}

}

}

android 连接蓝牙耳机 的判断代码,如何验证Android上是否连接了蓝牙耳机?相关推荐

  1. arduino(19 ):使用ESP32连接 PS3 蓝牙手柄,需要在windows 上先连接成功,然后在修改mac地址,才可以连接成功,但是目前正在测试中,需要在windows上配对成功。

    目录 前言 1,关于 Arduino 2,使用 Arduino 3,arduino上连接 4,Linux 5,总结 前言 相关arduino 全部分类: https://blog.csdn.net/f ...

  2. C#连接sqlserver windows 和 sqlserver 身份验证的两种连接字符串

    //sql server 身份验证 连接字符串 private string ConnstrSqlServer = "server=服务器名称;uid=登录名称;pwd=登录密码;datab ...

  3. 全志 android 编译,全志A20启动代码流程分析 ——Android

    现在的CPU都固化了内部 ROM,内部 ROM中有一般都有一段程序,一般有如下几个功能: 1,初始化,部分外设,如USB,SDCARD 2,初始化DDR(内存)和NandFlash 3,加载boot( ...

  4. 全志android 编译,全志A20启动代码流程分析 ——Android

    现在的CPU都固化了内部 ROM,内部 ROM中有一般都有一段程序,一般有如下几个功能: 1,初始化,部分外设,如USB,SDCARD 2,初始化DDR(内存)和NandFlash 3,加载boot( ...

  5. Android SoftAp SoftAp打开/关闭代码流程(基于android 7.0)

    在Android手机中,SoftAp也是一个较为常用的功能.对于framework开发者来说,要开发.维护SoftAp,了解framework中热点开关的具体流程是非常有必要的.下面就对这部分内容做一 ...

  6. android添加图片控件代码,如何在android studio中添加图标图像按钮

    我想设计这种类型的应用程序的布局(如图所示).在此布局中,当我们单击圆形图标时,它将移至下一页.我想知道它是如何完成的. 解决方法: 在抽屉文件夹中创建circle_background.xml并将此 ...

  7. mac 连接linux sh,ssh工具 – windows和mac 上ssh连接linux 服务器工具推荐 – The Hu Post...

    Views: 1,051 内容概要: ssh工具 xshell finalshell关于生产力的更多内容, 可以看看我的专栏 一些效率工具可以可以看看我整理的常用工具推荐. ssh工具 在工作中经常回 ...

  8. 计算机网络连接显示678是什么意思,宽带连接错误678,教您宽带连接出现错误提示代码678怎么解决...

    对电脑网络有资深了解的用户就知道,网络的错误代码678是宽带的故障代码之一.其含义是远程计算机无响应.而在网上罗列了一堆的可能性,其中涉及的一些高深的专业知识与判断,很多的用户都表示看得是云里雾里不知 ...

  9. android app 的后台代码,包括后台的Android美食APP项目开源代码

    项目简介 小食光定位为一款集美食,社交,LBS服务于一体的美食推荐APP.为你发现周边美食的同时提供一个吃货分享的平台. APP截图 功能模块 美食推荐 :提供基础的美食信息查询: 商家推荐 : 基于 ...

  10. 远程连接mysql 8.0取消ssl验证

    Ubuntu 或者windows下安装的mysql服务 安装的是mysql8.0的版本,远程连接发现需要做ssl身份验证,本机连接不需要,取消掉其ssl身份验证需要调整配置 在ubuntu 下的 /e ...

最新文章

  1. 【Excel】Excel根据单元格背景色求和
  2. mysql proxies_priv_Mysql5.7.18利用MySQLproxies_priv实现类似用户组管理实例分享
  3. 去掉IntelliJ IDEA 中 mybatis 对应的 xml 文件警告
  4. XML数据岛(XML Data Island)(只适用于ie)
  5. win8 软件字体乱码
  6. win下anaconda装python2.7和3.5以及jupyter共存 (本篇实践通过)
  7. 批处理脚本:判断进程是否存在
  8. maven3实战之设置HTTP代理
  9. 3.Linux/Unix 系统编程手册(上) -- 系统编程概念
  10. 【ArcGIS操作】3 数据制图篇
  11. 腾讯x5内核(TBS)简单集成封装
  12. 陈丹琦新作:关系抽取新SOTA,用pipeline方式挫败joint模型
  13. 医学生建议计算机系学生植发,00后都开始“秃”了?皮肤科专家:不想成为“地中海”,这件事情要记牢...
  14. Attention Mechanisms in Computer Vision: A Survey(四)
  15. CSS 伪类 after 右侧线
  16. Ubuntu暂时无法解析域名“cn.archive.ubuntu.com”
  17. JavaScript课堂笔记
  18. 一张图带你看完图论第一章(包含定义、定理、公式、推导证明和例题)
  19. 信源编码技术-作业1-清浊音分析
  20. 教你亲手制作一个虚拟数字人,超全步骤详解

热门文章

  1. 徕卡 sl android app,相机入魔 徕卡SL DPReview测评结论
  2. 数字孪生城市优秀案例汇编(2021年) 附下载
  3. 面试题七 C/C++ 骑士营救公主 骑士只能向右或者向下移动,遇到陷阱就死了,求骑士营救公主的所有路线-程序员面试题
  4. linux中的ul命令,Linux ngrep 命令用法详解-Linux命令大全(手册)
  5. TOM企邮、腾讯企邮、网易企邮、263企邮,四大企业邮箱实测:谁是最实用的企业邮箱产品?
  6. vue实现农历日期选择器
  7. 向量空间模型算法(Vector Space Model)
  8. 搜索引擎原理第二阶段之预处理
  9. Android程序配置热点IP,Android 10版本获取已连接本机热点的ip
  10. SQL Server Management Studio(SSMS)对象资源管理器的使用以及查询分析器的使用