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

首先是广播接收器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;

@Override

public 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() {

@Override

public void onStateOff() {

//do something

}

@Override

public void onStateOn() {

//do something

}

@Override

public void onStateTurningOn() {

//do something

}

@Override

public 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() {

@Override

public void onConnect(BluetoothDevice device) {

}

@Override

public void onDisConnect(BluetoothDevice device) {

}

});

}

public void unregisterBlueToothConnectReceiver(Activity activity) {

activity.unregisterReceiver(blueToothConnectReceiver);

}

}

在Activity中注册与取消

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

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

AndroidManifest.xml中添加权限

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

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

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

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

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

  2. Android短信的发送和广播接收者实现短信的监听

    Android短信的发送和广播接收者实现短信的监听  要注意Android清单中权限的设置以及广播的注册监听实现 以下就是 Android清单的XML AndroidManifest.xml < ...

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

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

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

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

  5. android 监听手机电量变化

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

  6. Android 监听网络连接状态,判断网络连接方式,9.0网络连接,获取已连接WiFi名称SSID和MAC

    获取已连接的WiFi名称 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> ...

  7. Android监听手机网络变化

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

  8. Android 监听系统语言变化

    ** 监听系统语言变化 ** 监听系统语言变化 首先先创建一个MyApplication继承Application public class MyApplication extends Applica ...

  9. android全局监听onkeydown,Android中的几个onTouch()事件、onKeyDown监听返回键无效

    Android中的几个onTouch()事件.onKeyDown监听返回键无效 一:Android中的几个onTouch()事件 继承SimpleOnGestureListener,HahaGestu ...

最新文章

  1. 阿里老员工论坛炫耀:每年税前260万,还有三千万期权在握
  2. Java开发者必备的六款工具
  3. Python paho-mqtt 模块使用(转)
  4. Java通过FFMPEG获取视频时长
  5. 谷歌修复另一枚已遭利用的 Chrome 释放后使用0day,细节未公开
  6. php粉层,thinkphp 模型分层
  7. C语言优先级顺序表口诀
  8. FTP和FXP的区别
  9. win10右键反应慢解决方法介绍【解决方法】
  10. 娱乐小游戏助力神器威信小程序源码下载多种游戏选择玩法多种
  11. h5物体拖动_研究了50+个爆款H5,原来他们刷屏的套路如此简单
  12. 【TigerGraph】图在复杂制造业中的应用
  13. JAVA之easyUI
  14. CTF学习笔记——Easy Calc
  15. windows 网络正常 浏览器却打不开网页解决办法
  16. bmp图像文件格式说明
  17. android友盟埋点,React Native 的友盟统计--打点/埋点
  18. 如何在JSP中使用alert打印变量
  19. 精灵王国Elfin Kingdom链游分析
  20. fastjson 转下划线_fastjson 变量驼峰形式与下划线互转

热门文章

  1. 科研tips——透过参考文献看科研素养
  2. Ubuntu配置多版本Python运行环境
  3. matlab里设置colorbar类型,matlab colorbar 样式问题
  4. 小程序腾讯地图绘制大头针,以及还原位置
  5. Linux开源存储网络详解
  6. linux 脚本scp用法,Linux scp命令用法及实例分享
  7. “睡你妹闹钟”——你还真是让人又爱又恨啊
  8. [FireDAC][Phys][SQLite]-326. Cannot perform the action, because the previous action is in progress.
  9. 制作纯英文字幕的视频
  10. php key数组转字符串,学习猿地-php怎么将数组转化成字符串