Android 蓝牙状态的监听

这篇具有很好参考价值的文章主要介绍了Android 蓝牙状态的监听。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、需求背景

客户在使用我公司的Flutter插件时,要求有一个蓝牙与设备重连的功能,我用公司提供的Android SDK只能实现超出和进入蓝牙范围进行重连,但是无法在蓝牙打开进行重连,这不得不让我使用Android手写一个广播监听。

二、实现步骤

1. 添加权限

2. 创建一个类继承 BroadcastReceiver

3. 动态注册和注销广播

4. 监听蓝牙状态

三、代码分享

1. 添加权限

在 AndroidManifest.xml 中添加蓝牙权限

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

2. 创建一个类继承 BroadcastReceiver

public class BLEStateReceiver extends BroadcastReceiver {

    private static final String BLE_STATE_OFF = "android.bluetooth.BluetoothAdapter.STATE_OFF";
    private static final String BLE_STATE_ON = "android.bluetooth.BluetoothAdapter.STATE_ON";
    private static BLEStateReceiver receiver = new BLEStateReceiver();

    /**
     * 注册
     *
     * @param context
     */
    public static void register(Context context) {
        IntentFilter filter = new IntentFilter();
        filter.setPriority(Integer.MAX_VALUE);
        // 监视蓝牙关闭和打开的状态
        filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
        filter.addAction(BLE_STATE_OFF);
        filter.addAction(BLE_STATE_ON);
        context.registerReceiver(receiver, filter);
    }

    /**
     * 注销
     *
     * @param context
     */
    public static void unregister(Context context) {
        context.unregisterReceiver(receiver);
    }

    @Override
    public void onReceive(final Context context, Intent intent) {
        // 检测蓝牙状态的逻辑
    }

}

3. 动态注册和注销广播

我这里是在 ActivityAware 的生命周期中注册的,你可以根据实际情况进行注册,只要在应用运行时注册就行。

public class MoyoungBlePlugin implements ActivityAware {
    
    private Activity activity;

    @Override
    public void onAttachedToActivity(@NonNull ActivityPluginBinding binding) {
        activity = binding.getActivity();

        // 注册广播
        BLEStateReceiver.register(activity);
    }

    @Override
    public void onDetachedFromActivityForConfigChanges() {
    }

    @Override
    public void onReattachedToActivityForConfigChanges(@NonNull ActivityPluginBinding binding) {
    }

    @Override
    public void onDetachedFromActivity() {
        // 注销广播
        BLEStateReceiver.unregister(activity);
        activity = null;
    }

}

4. 监听蓝牙状态

我这里只监听了蓝牙的两种状态,如果想要监听多种状态可以查看参考。

public class BLEStateReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(final Context context, Intent intent) {
        checkBLEState(context, intent);
    }

    /**
     * 检测蓝牙状态
     *
     * @param context
     * @param intent
     */
    private synchronized void checkBLEState(Context context, Intent intent) {
        int BLEState = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0);
        switch (BLEState) {
            case BluetoothAdapter.STATE_ON:
                // 蓝牙已经打开
                break;
            case BluetoothAdapter.STATE_TURNING_OFF:
                // 蓝牙正在关闭
                break;
        }
    }

}

四、参考文案

Android开发——蓝牙状态的监听 - 简书

Android监听蓝牙与设备连接状态、关闭和打开状态_android 蓝牙连接状态监听_MasonYyp的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-686237.html

到了这里,关于Android 蓝牙状态的监听的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 蓝牙App设计2:使用Android Studio制作一个蓝牙软件(包含:代码实现等)

    前言:蓝牙聊天App设计全部有三篇文章(一、UI界面设计,二、蓝牙搜索配对连接实现,三、蓝牙连接聊天),这篇文章是:二、蓝牙搜索配对连接实现。 课程1:Android Studio小白安装教程,以及第一个Android项目案例“Hello World”的调试运行 课程2:蓝牙聊天App设计1:Android S

    2024年02月11日
    浏览(49)
  • Android studio(一)按钮监听的三种方式

    第一种方法:public class Activity2 extends AppCompatActivity implements View.OnClickListener 设置监听后,用id进行分别寻址 第二种方法:将implements写在监听类上 第三种方法:由于新版似乎不允许button根据id用switch语句,所以可以改用textview 在对应的布局文件里也需要为textview添加一个属性

    2024年02月02日
    浏览(40)
  • 蓝牙聊天App设计1:Android Studio制作蓝牙聊天通讯软件(UI界面设计)

    前言:蓝牙聊天App设计全部有三篇文章(一、UI界面设计,二、蓝牙搜索配对连接实现,三、蓝牙连接聊天),这篇文章是一、UI界面设计 课程1:Android Studio小白安装教程,以及第一个Android项目案例“Hello World”的调试运行 课程2:蓝牙聊天App设计1:Android Studio制作蓝牙聊天通

    2024年02月02日
    浏览(50)
  • Android studio Flutter环境配置

    流程如下 1.前往下载网站下载所需的sdk flutter sdk下载地址 2.配置环境变量步骤 2.1:可以在用户变量中添加变量(有些时候我没有配置这两条变量也没问题) 2.2在用户环境变量的Path中添加flutter bin路径 3.cmd打开命令窗,运行flutter doctor 可查看flutter sdk 信息,可以看到配置到环境

    2024年02月17日
    浏览(44)
  • Android Studio Flutter 开发配置

    近来比较闲,就研究下Flutter 开发,在此记录下studio 配置过程,时间是2023.7.19 1.首先下载 Flutter SDKhttps://storage.flutter-io.cn/flutter_infra_release/releases/stable/windows/flutter_windows_3.10.6-stable.zip 2.将压缩包解压,然后把其中的  flutter  目录整个放在你想放置 Flutter SDK 的路径中(例如 

    2024年02月16日
    浏览(41)
  • 【Flutter】使用Android Studio 创建第一个flutter应用。

    首先下载好 flutter sdk和 Android Studio。 FlutterSDK下载 Android Studio官网 我的是 windows。 查看flutter安装环境。 如果没有,自己在环境变量的path添加下flutter安装路径。 在将 Path 变量更新后,打开一个新的控制台窗口,然后执行下面的命令。如果它提示有任何的平台相关依赖,那么

    2024年02月10日
    浏览(61)
  • Android studio进入手机调试状态

    首先usb插入电脑 手机打开开发者模式 进入 点击 就会在你的页面显示了

    2024年02月06日
    浏览(45)
  • Flutter 开发者工具 Android Studio 开发Flutter应用

    Flutter 开发者工具 在 Android Studio 开发Flutter应用 🔥 Android Studio 版本更新 🔥 Android Studio Check for Update Connection failed ​ 解决方案 ​    ​  🔥 编辑代码,和查看问题 🔥  Dart 插件 可以做到如下几点 :  语法高亮显示。 基于多种类型分析的代码补全。 定位到类型的声明(

    2024年02月15日
    浏览(111)
  • Android Studio(Flutter)常用快捷键

    快捷键 说明 Ctrl + Alt + M 抽取方法 Ctrl + Alt + W 抽取组件 Alt + Enter 包裹组件 Shift + F6 重命名 Ctrl + Alt + L 代码格式化 Ctrl + Alt + O 删除无用import Ctrl + X 删除光标所在行 Ctrl + D 复制一行代码 Ctrl + C 复制 Ctrl + V 粘贴 Ctrl + Z 撤销 Ctrl + / 注释一行代码 Ctrl + Shift + / 注释一段代码 Ctrl

    2024年02月02日
    浏览(46)
  • android studio使用Flutter Inspector调试布局

    1、点击anroid studio右侧的Flutter Inspector按钮 2、点击展开布局右上角的‘Select Widget  Mode’,即可实现点击相关节点,真机上可以看到相关的方框 如下图  

    2024年02月13日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包