上一篇介绍了通过广播对蓝牙的打开关闭等变化的监听,这一篇将对蓝牙连接状态的变化进行封装。

首先是广播接收器BlueToothConnectReceiver 类

import android.bluetooth.BluetoothDevice;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;public class BlueToothConnectReceiver extends BroadcastReceiver {private OnBleConnectListener onBleConnectListener;@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);switch (action) {case BluetoothDevice.ACTION_ACL_CONNECTED:if (onBleConnectListener != null) {onBleConnectListener.onConnect(device);}Log.d("BlueToothConnect", "BroadcastReceiver蓝牙已连接:" + device.getName());break;case BluetoothDevice.ACTION_ACL_DISCONNECTED://当直接关闭蓝牙时此处不会被触发,只有当蓝牙未关闭并且断开蓝牙时才会触发if (onBleConnectListener != null) {onBleConnectListener.onDisConnect(device);}Log.d("BlueToothConnect", "BroadcastReceiver蓝牙已断开:" + device.getName());break;}}public interface OnBleConnectListener {void onConnect(BluetoothDevice device);void onDisConnect(BluetoothDevice device);}public void setOnBleConnectListener(OnBleConnectListener onBleConnectListener) {this.onBleConnectListener = onBleConnectListener;}
}

接着是封装注册和取消注册的BlueToothUtils类,依旧使用单例模式

import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.IntentFilter;/*** @author wang songbo*/
public class BlueToothUtils {private static BlueToothUtils INSTANCE;private BlueToothStateReceiver blueToothStateReceiver;private BlueToothConnectReceiver blueToothConnectReceiver;public static synchronized BlueToothUtils getInstance() {if (INSTANCE == null) {INSTANCE = new BlueToothUtils();}return INSTANCE;}//注册广播接收器,用于监听蓝牙状态变化public void registerBlueToothStateReceiver(Activity activity) {blueToothStateReceiver = new BlueToothStateReceiver();IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);activity.registerReceiver(blueToothStateReceiver, filter);blueToothStateReceiver.setOnBlueToothStateListener(new BlueToothStateReceiver.OnBlueToothStateListener() {@Overridepublic void onStateOff() {//do something}@Overridepublic void onStateOn() {//do something}@Overridepublic void onStateTurningOn() {//do something}@Overridepublic void onStateTurningOff() {//do something}});}public void unregisterBlueToothStateReceiver(Activity activity) {activity.unregisterReceiver(blueToothStateReceiver);}//注册广播接收器,用于监听蓝牙连接情况的变化public void registerBlueToothConnectReceiver(Activity activity) {blueToothConnectReceiver = new BlueToothConnectReceiver();IntentFilter filter_connect = new IntentFilter(BluetoothDevice.ACTION_ACL_CONNECTED);activity.registerReceiver(blueToothConnectReceiver, filter_connect);IntentFilter filter_disconnect = new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECTED);activity.registerReceiver(blueToothConnectReceiver, filter_disconnect);blueToothConnectReceiver.setOnBleConnectListener(new BlueToothConnectReceiver.OnBleConnectListener() {@Overridepublic void onConnect(BluetoothDevice device) {}@Overridepublic void onDisConnect(BluetoothDevice device) {}});}public void unregisterBlueToothConnectReceiver(Activity activity) {activity.unregisterReceiver(blueToothConnectReceiver);}}

在Activity中注册与取消

BlueToothUtils.getInstance().registerBlueToothConnectReceiver(this);//注册广播
BlueToothUtils.getInstance().unregisterBlueToothConnectReceiver(this);//取消注册广播

AndroidManifest.xml中添加权限

    <uses-permission android:name="android.permission.BLUETOOTH" /><uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

蓝牙打开关闭状态变化传送门:

https://blog.csdn.net/u010161303/article/details/88824846

Android通过广播接收器BroadcastReceiver监听蓝牙连接变化相关推荐

  1. android 蓝牙相关广播,Android通过广播接收器BroadcastReceiver监听蓝牙连接变化

    上一篇介绍了通过广播对蓝牙的打开关闭等变化的监听,这一篇将对蓝牙连接状态的变化进行封装. 首先是广播接收器BlueToothConnectReceiver 类 import android.bluet ...

  2. Android的广播接收器BroadcastReceiver

    一.广播分为标准广播,有序广播,本地广播.Android内置了很多系统广播,我们可以监听这些广播来得到系统信息,如开机完成后的广播,电池电量变化广播等等. 标准广播:系统内广播,任何应用几乎同时收到 ...

  3. android项目监听蓝牙连接,android 蓝牙ACL通讯详解

    本文主要是讲述android中蓝牙ACL链接的详细介绍,这里只讲述ACL,不讨论BLE,SCO,等等其他通讯通道,后面如果我有兴趣研究,我会贴上对应的文章链接 github下载地址 同时也是一个可直接 ...

  4. Android监听手机网络变化

    Android监听手机网络变化 手机网络状态发生变化会发送广播,利用广播接收者,监听手机网络变化 效果图 注册广播接收者 <?xml version="1.0" encodi ...

  5. Android Studio 基础 之 获取蓝牙Bluetooth 的状态,设置的蓝牙Bluetooth 的开关状态,并监听蓝牙Bluetooth 的状态变化方法整理

    Android Studio 基础 之 获取蓝牙Bluetooth 的状态,设置的蓝牙Bluetooth 的开关状态,并监听蓝牙Bluetooth 的状态变化方法整理 目录 Android Studi ...

  6. 虾扯蓝牙(一)获取蓝牙当前状态,监听蓝牙手动开关,代码开关蓝牙

    前言 半年没有更新博客了,首要原因就是我太懒了,其次是换了新工作,新环境,一直都处于适应与学习阶段,因为涉及到的领域以前都是没接触的–有幸外派到海尔做智能家居,第一次到这种大的公司来敲代码,很多东西都 ...

  7. android 获取wifi的加密类型,Android WIFI开发:获取wifi列表,连接指定wifi,获取wifi加密方式,监听wifi网络变化等...

    下面是 Android 开发中 WiFi 的常用配置,如:获取当前 WiFi ,扫描 WiFi 获取列表,连接指定 WiFi ,监听网络变化等等. 下面是效果图: GitHub 下载地址:https: ...

  8. android 监听手机电量变化

    今天,简单讲讲如何监听手机电量的变化. 监听电量是不能静态注册的. 后来上网搜索,发现有五个不能静态注册的广播,这里记录一下,免得下次再后知后觉的发现并惊讶于自己的笨拙. 不能静态注册的广播: and ...

  9. android 网卡监听,Android实时监听网络的变化

    4中情况.1.无网  2.wifi 3.移动信号 4.网线 BroadcastReceiver netReceiver =new BroadcastReceiver(){ @Override publ ...

最新文章

  1. Android系统system文件夹结构的说明 \system下的app、lib、bin、etc、fonts、framework
  2. layui表格弹窗修改_layUI 实现自定义弹窗
  3. suse linux10 关闭防火墙,Suse10 关闭防火墙
  4. Yii2.0 rules常用验证规则
  5. Hadoop生态hive(五)Hive QL数据库
  6. 16进制 转为图片 php_Python 十六进制hex-bytes-str之间的转换和Bcc码的生成
  7. java中跳转页面的干法_java – 有没有一种干法来整合RowMappers的相同代码?
  8. mvc6 mysql_MVC+EF6使用MySQL+CodeFirst的详细配置
  9. c语言实现统计过程控制,SPC统计过程控制的课程
  10. .npy文件打开方式
  11. CS:GO开服架设服务器搭建游戏配置方法教程教学插件配置下载资源配置
  12. “蔚来杯“2022牛客暑期多校训练营1 J Serval and Essay(启发式合并)
  13. 微信定向流量_中国移动终于投诚了!微信惊现10G流量包,只要10元?
  14. 如何增加微信朋友圈分享链接的小图片
  15. Sealed class密封类详解
  16. 嵌入式工控机在舞台灯光控制中的应用
  17. legacy引导gpt分区_安装win10用uefi还是legacy引导模式?(最全分析)
  18. 信号完整性学习笔记-IBIS模型
  19. C/C++获取时间及时间格式转换
  20. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第46讲:PHP程序设计中的session应用实例

热门文章

  1. 组员组长mysql_GitHub - gzh51906/ManKeZhan: 组长:黄林芳 组员:陈炜,王佳伟
  2. 启发式查询树优化实例
  3. 有什么小号音准测试软件,小号演奏家对小号初学者的一些建议 | 悦趣音乐中心...
  4. 电池充电IC市场现状研究分析与发展前景预测报告
  5. java 经纬度 地图_百度地图地址经纬度互转,java代码(v2版本)
  6. 非线性混合效应 NLME模型对抗哮喘药物茶碱动力学研究
  7. kafka中副本数据同步策略 ,acknowledge的发送策略,kafka的数据可靠性保证
  8. jacob.jar 操作word文件 添加水印、图片(附查阅Microsoft Office VBA参考文档方式)
  9. 金蝶K/3产品各版本引入/引出Excel文件时出现意外错误的提示,或未正确安装Excel的提示。微软补丁解决方案!(转)
  10. 【信息检索】Java简易搜索引擎原理及实现(三)B+树索引和轮排索引结构