Android 判断蓝牙是否开启,监听蓝牙状态,处理客制化需求

news/2024/10/27 2:50:02/

import android.bluetooth.BluetoothAdapter; 

【BluetoothAdapter.java

@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)

public static final String
            ACTION_STATE_CHANGED = "android.bluetooth.adapter.action.STATE_CHANGED";//当前action动作

    /**
     * Used as an int extra field in {@link #ACTION_STATE_CHANGED}
     * intents to request the current power state. Possible values are:
     * {@link #STATE_OFF},
     * {@link #STATE_TURNING_ON},
     * {@link #STATE_ON},
     * {@link #STATE_TURNING_OFF},
     */

//intent.getIntExtra 参数
    public static final String EXTRA_STATE = "android.bluetooth.adapter.extra.STATE";//当前状态

    public static final String EXTRA_PREVIOUS_STATE =
            "android.bluetooth.adapter.extra.PREVIOUS_STATE";//上一个状态

public static final int STATE_OFF = 10;

 public static final int STATE_TURNING_ON = 11;
  
public static final int STATE_ON = 12;
 
public static final int STATE_TURNING_OFF = 13;
 

  BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
                boolean bluetoothEnable = bluetoothAdapter == null ? false : bluetoothAdapter.isEnabled();
                if (bluetoothEnable) {//判断蓝牙是否开启
                    //处理逻辑
                }

 

 监听蓝牙广播:

IntentFilter bt = new IntentFilter();
        bt.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
        mContext.registerReceiver(mReceiver, bt);

    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) {
                int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR);//监听当前蓝牙状态

                switch (state) {
                    case BluetoothAdapter.STATE_OFF:
                         //添加其他处理逻辑,比如亮灭led灯,密码弹窗,控制可用禁用等
                        break;
                    case BluetoothAdapter.STATE_ON:
                        //添加其他处理逻辑
                        break;

                   case BluetoothAdapter.STATE_TURNING_OFF:
                        break;

                     case BluetoothAdapter.STATE_TURNING_ON:
                        break;
                }
            }
        }
    }; 

最好的监听地方是状态栏上:

/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java 的start()方法里面注册广播

其实,对应如此,NFC也可以这样!NfcAdapter


http://www.ppmy.cn/news/1542264.html

相关文章

用nginx实现多ip访问多网址

1.关闭防火墙 2.挂载并安装nginx 3.启动http 4.增加两个虚拟网卡 5.创建目录 6.写入内容到该网站 [rootlocalhost ~]# echo this is 129 > /www/ip/130/index.html [rootlocalhost ~]# echo this is 1139 > /www/ip/139/index.html7.重启服务加载配置 [rootlocalhos…

《Windows PE》7.4 资源表应用

本节我们将通过两个示例程序,演示对PE文件内图标资源的置换与提取。 本节必须掌握的知识点: 更改图标 提取图标资源 7.4.1 更改图标 让我们来做一个实验,替换PE文件中现有的图标。如果手工替换,一定是先找到资源表,…

jenkins 自动化部署Springboot 项目

一、安装docker 1.更新yum命令 yum -y update2.查看机器有残留的docker服务,有就卸载干净 查看docker 服务 rpm -qa |grep docker卸载docker sudo yum remove docker-ce docker-ce-cli containerd.io sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/contai…

用接地气的例子趣谈 WWDC 24 全新的 Swift Testing 入门(一)

概述 从 WWDC 24 开始,苹果推出了全新的测试机制:Swift Testing。利用它我们可以大幅度简化之前“老态龙钟”的 XCTest 编码范式,并且使得单元测试更加灵动自由,更符合 Swift 语言的优雅品味。 在这里我们会和大家一起初涉并领略…

模型 支付矩阵

系列文章 分享 模型,了解更多👉 模型_思维模型目录。策略选择的收益分析工具。 1 支付矩阵的应用 1.1 支付矩阵在市场竞争策略分析中的应用 支付矩阵是一种强大的决策工具,它在多个领域的应用中都发挥着重要作用。以下是一个具体的应用案例…

Flutter控制台提示setState() or markNeedsBuild() called during build错误

前言 当我在initState函数中对Provider进行赋值时,此时会出现setState() or markNeedsBuild() called during build.的错误 解决办法 使用WidgetsBinding.instance.addPostFrameCallback来解决这个问题。 注意:不要使用addPersistentFrameCallback&am…

Mysql在线修改表结构工具gh-ost使用说明及实践

本文内容较多,篇幅较长,若不想了解ghost原理,几种模式的介绍以及具体的验证过程,可直接跳到‘四 gh-ost使用总结’查看简洁版使用说明。 一 gh-ost使用场景 生产环境当有关于一个大表的大操作时(比如select count一个大表)&…

MySQL系列之如何正确的使用窗口函数(基于8.0版本)

前言 各位,博主开始敲黑板了,有没有不了解、或者完全没听说过窗口函数的盆友?文末有个投票,可以参与一下哦~ MySQL数据库从8.0开始支持窗口函数了,它是一种强大的数据分析工具,旨在帮助你快速获得场景数据…