android 蓝牙相关广播,Android通过广播接收器BroadcastReceiver监听蓝牙连接变化
上一篇介绍了通过广播对蓝牙的打开关闭等变化的监听,这一篇将对蓝牙连接状态的变化进行封装。
首先是广播接收器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监听蓝牙连接变化相关推荐
- Android通过广播接收器BroadcastReceiver监听蓝牙连接变化
上一篇介绍了通过广播对蓝牙的打开关闭等变化的监听,这一篇将对蓝牙连接状态的变化进行封装. 首先是广播接收器BlueToothConnectReceiver 类 import android.bluet ...
- Android短信的发送和广播接收者实现短信的监听
Android短信的发送和广播接收者实现短信的监听 要注意Android清单中权限的设置以及广播的注册监听实现 以下就是 Android清单的XML AndroidManifest.xml < ...
- Android Studio 基础 之 获取蓝牙Bluetooth 的状态,设置的蓝牙Bluetooth 的开关状态,并监听蓝牙Bluetooth 的状态变化方法整理
Android Studio 基础 之 获取蓝牙Bluetooth 的状态,设置的蓝牙Bluetooth 的开关状态,并监听蓝牙Bluetooth 的状态变化方法整理 目录 Android Studi ...
- android 获取wifi的加密类型,Android WIFI开发:获取wifi列表,连接指定wifi,获取wifi加密方式,监听wifi网络变化等...
下面是 Android 开发中 WiFi 的常用配置,如:获取当前 WiFi ,扫描 WiFi 获取列表,连接指定 WiFi ,监听网络变化等等. 下面是效果图: GitHub 下载地址:https: ...
- android 监听手机电量变化
今天,简单讲讲如何监听手机电量的变化. 监听电量是不能静态注册的. 后来上网搜索,发现有五个不能静态注册的广播,这里记录一下,免得下次再后知后觉的发现并惊讶于自己的笨拙. 不能静态注册的广播: and ...
- Android 监听网络连接状态,判断网络连接方式,9.0网络连接,获取已连接WiFi名称SSID和MAC
获取已连接的WiFi名称 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> ...
- Android监听手机网络变化
Android监听手机网络变化 手机网络状态发生变化会发送广播,利用广播接收者,监听手机网络变化 效果图 注册广播接收者 <?xml version="1.0" encodi ...
- Android 监听系统语言变化
** 监听系统语言变化 ** 监听系统语言变化 首先先创建一个MyApplication继承Application public class MyApplication extends Applica ...
- android全局监听onkeydown,Android中的几个onTouch()事件、onKeyDown监听返回键无效
Android中的几个onTouch()事件.onKeyDown监听返回键无效 一:Android中的几个onTouch()事件 继承SimpleOnGestureListener,HahaGestu ...
最新文章
- 阿里老员工论坛炫耀:每年税前260万,还有三千万期权在握
- Java开发者必备的六款工具
- Python paho-mqtt 模块使用(转)
- Java通过FFMPEG获取视频时长
- 谷歌修复另一枚已遭利用的 Chrome 释放后使用0day,细节未公开
- php粉层,thinkphp 模型分层
- C语言优先级顺序表口诀
- FTP和FXP的区别
- win10右键反应慢解决方法介绍【解决方法】
- 娱乐小游戏助力神器威信小程序源码下载多种游戏选择玩法多种
- h5物体拖动_研究了50+个爆款H5,原来他们刷屏的套路如此简单
- 【TigerGraph】图在复杂制造业中的应用
- JAVA之easyUI
- CTF学习笔记——Easy Calc
- windows 网络正常 浏览器却打不开网页解决办法
- bmp图像文件格式说明
- android友盟埋点,React Native 的友盟统计--打点/埋点
- 如何在JSP中使用alert打印变量
- 精灵王国Elfin Kingdom链游分析
- fastjson 转下划线_fastjson 变量驼峰形式与下划线互转
热门文章
- 科研tips——透过参考文献看科研素养
- Ubuntu配置多版本Python运行环境
- matlab里设置colorbar类型,matlab colorbar 样式问题
- 小程序腾讯地图绘制大头针,以及还原位置
- Linux开源存储网络详解
- linux 脚本scp用法,Linux scp命令用法及实例分享
- “睡你妹闹钟”——你还真是让人又爱又恨啊
- [FireDAC][Phys][SQLite]-326. Cannot perform the action, because the previous action is in progress.
- 制作纯英文字幕的视频
- php key数组转字符串,学习猿地-php怎么将数组转化成字符串