android 如何判断已配对的蓝牙是否打开了互联网访问开关

news2024/9/24 17:11:40

最近遇到一个需求,要判断已配对的蓝牙是否打开了互联网访问的开关。 经查看源码,得出以下方法。

1. 首先要判断蓝牙是否打开
2. 已打开的蓝牙是否已配对
3. 验证是否真正打开

在这里插入图片描述

	/**
     * 是否打开蓝牙互联网访问
     */
    @SuppressLint("MissingPermission")
    fun isOpenBleNet(context: Context, bleMac:String): Boolean {
        val bluetoothManager: BluetoothManager? = context.getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager?
        val mBtAdapter = bluetoothManager?.adapter ?: return false
        
        val isOpen= isBleBoundByMac(mBtAdapter,bleMac)
        return if (isOpen) {
            //互联网开关是否打开
            val panState = mBtAdapter.getProfileConnectionState(5)
            Log.d("TAG", "-----设备已配对,互联网访问状态: ${panState}")
            panState == BluetoothProfile.STATE_CONNECTED
        } else {
            false
        }
    }




    /**
     *  判断是否已连接配对的蓝牙
     *
     * @param context
     * @param strCurBtMac
     * @return
     */
    @SuppressLint("MissingPermission")
    fun isBleBoundByMac(mBtAdapter: BluetoothAdapter, strCurBtMac: String?):Boolean {
        if(!mBtAdapter.isEnabled) return false
        val set: Set<BluetoothDevice> = mBtAdapter.bondedDevices
        var device: BluetoothDevice? = null
        for (dev in set) {
            if (dev.address.equals(strCurBtMac, true)) {
                device = dev
                break
            }
        }
        if (device == null) {
            return false
        }
        //得到BluetoothDevice的Class对象
        val bluetoothDeviceClass: Class<BluetoothDevice> = BluetoothDevice::class.java
        try { //得到连接状态的方法
            val method: Method = bluetoothDeviceClass.getDeclaredMethod("isConnected")
            //打开权限
            method.isAccessible = true
            return method.invoke(device) as Boolean
        } catch (e: Exception) {
            e.printStackTrace()
        }
        return false
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1131369.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32 定时器介绍

STM32F103系列单片机定时器主要有&#xff1a;系统定时器SysTick&#xff0c;2个高级定时器TIM1和TIM8&#xff0c;4个通用定时器TIM2/3/4/5&#xff0c;2个基本定时器TIM6和TIM7。下面先简单介绍一下&#xff1a; 基本定时器&#xff1a;基本定时器只能计时&#xff0c;不能产…

进一步了解视频美颜SDK:美颜SDK的技术原理

美颜技术在当今的数字世界中变得越来越流行&#xff0c;尤其是在视频直播、社交媒体和视频通话应用中。用户寻求通过美颜效果增强自己的外观&#xff0c;这种需求催生了众多美颜SDK&#xff08;软件开发工具包&#xff09;的出现。这些SDK使开发者能够轻松地将美颜功能集成到他…

PHP 数据库交互优化,根据传参查询

接上文 修改以下内容 将查询的 uid 改为 username&#xff0c;同时在 user 和 message 两张表中查询 $sql "select m.id,u.username,m.title,m.content from user u,message m where u.idm.uid;"根据 message 中的 id 查询&#xff0c;形式为 http://127.0.0.1/m…

k8s-----亲和力Affinity

1、应用场景 pod和节点间的关系&#xff1a; 某些Pod优先选择有ssdtrue标签的节点&#xff0c;如果没有在考虑部署到其它节点;某些Pod需要部署在ssdtrue和typephysical的节点上&#xff0c;但是优先部署在ssdtrue的节点上; pod和pod间的关系&#xff1a; 同一个应用的Pod不…

13 结构性模式-装饰器模式

1 装饰器模式介绍 在软件设计中,装饰器模式是一种用于替代继承的技术,它通过一种无须定义子类的方式给对象动态的增加职责,使用对象之间的关联关系取代类之间的继承关系. 2 装饰器模式原理 //抽象构件类 public abstract class Component{public abstract void operation(); }…

挑战没有免费的午餐定理?南洋理工提出扩散模型增强方法FreeU

论文名称&#xff1a;FreeU: Free Lunch in Diffusion U-Net 文章链接&#xff1a;https://arxiv.org/abs/2309.11497 代码仓库&#xff1a;https://github.com/ChenyangSi/FreeU 项目主页&#xff1a;https://chenyangsi.top/FreeU 机器学习领域中一个著名的基本原理就是“没…

搜维尔科技:伦敦艺术家利用Varjo头显捕捉盲人隐藏的梦想

在伦敦举行的弗里泽艺术博览会上,与专业级虚拟现实/XR硬件和软件领域的全球领先者Varjo合作,展示一个突破性的混合现实艺术装置, 皇家国家盲人学会 (rnib),英国领先的视力丧失慈善机构。 这个名为"公共交通的私人生活"的装置是一个互动的声音和图像雕塑,旨在让有眼光…

配置中心那些事

闲着也是闲着&#xff0c;就看看过往是在没有时间来折腾的东西&#xff0c;这不&#xff0c;最近2天看了看配置中心。 比较有代表性的有老牌的apollo&#xff0c;新贵 nacos&#xff0c;再就是出身也很好的Spring cloud config&#xff0c;网上比较这3者的文章多余牛毛&#x…

一文了解企业云盘和大文件传输哪个更适合企业传输

文件传输是企业工作中必不可少的环节&#xff0c;无论是内部协作还是外部沟通&#xff0c;都需要高效、安全、稳定地传输各种类型和大小的文件。然而&#xff0c;市面上的文件传输工具众多&#xff0c;如何选择合适的工具呢&#xff1f;本文将从两种常见的文件传输工具——企业…

Spark项目实战-卡口流量统计

一、卡口介绍 卡口摄像头正对车道安装&#xff0c;拍摄正面照片。 功能&#xff1a;抓拍正面特征 这种摄像头多安装在国道、省道、高速公路的路段上、或者城区和郊区交接的主要路口&#xff0c;用来抓拍超速、进出城区车辆等行为。它进行的是车辆正面抓拍&#xff0c;可以清晰…

基于springboot+vue实现MOBA类游戏攻略平台项目【项目源码+论文说明】计算机毕业设计

基于springbootvue实现MOBA类游戏攻略平台 摘要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&a…

postgresql14-表空间的管理(五)

基本概念 表空间tablespace在postgresql中&#xff0c;表示数据库对象&#xff08;比如表或索引&#xff09;的存放目录。当表被访问时&#xff0c;系统通过表空间定位到对应数据文件所在的位置。 优势&#xff1a; 1、如果数据库集群所在的初始磁盘分区或磁盘卷的空间不足&a…

改善游戏体验:数据分析与可视化的威力

当今&#xff0c;电子游戏已经超越了娱乐&#xff0c;成为一种文化现象&#xff0c;汇聚了全球数十亿的玩家。游戏制作公司正采用越来越复杂的技术来提高游戏质量&#xff0c;同时游戏数据分析和可视化工具变得不可或缺。 数据的力量&#xff1a;解析游戏体验 游戏制作涉及到大…

【深度学习】生成对抗网络(GANs)详解!

一、概述 生成对抗网络(Generative Adversarial Networks)是一种无监督深度学习模型&#xff0c;用来通过计算机生成数据&#xff0c;由Ian J. Goodfellow等人于2014年提出。模型通过框架中(至少)两个模块&#xff1a;生成模型(Generative Model)和判别模型(Discriminative Mod…

非父子组件通信-发布订阅模式

发布订阅模式其实与vue无关&#xff0c;完全是ES6的代码&#xff0c;但是它可以通过这种模式实现非父子组件的通信 store.js文件 首先创建一个store.js文件&#xff0c;用于提供发布与订阅方法 export default {datalist: [], //存放带一个参数的函数集合//订阅subscribe(fu…

SpringBoot自动配置原理解析 | 京东物流技术团队

1: 什么是SpringBoot自动配置 首先介绍一下什么是SpringBoot&#xff0c;SpringBoost是基于Spring框架开发出来的功能更强大的Java程序开发框架&#xff0c;其最主要的特点是&#xff1a;能使程序开发者快速搭建一套开发环境。SpringBoot能将主流的开发框架&#xff08;例如Sp…

二甲医院his系统源码,医院信息管理系统全套源码 电子病历评级4级

医院his系统源码&#xff0c;医院信息管理系统全套源码 电子病历评级4级 HIS系统完全基于云端部署&#xff0c;采用B/S架构&#xff0c;并通过软件即服务&#xff08;SaaS&#xff09;的形式面向二级医院的可快速交付、便捷运维、云化的医院核心业务平台产品。融合医院HIS和EMR…

CTF取证技术实战,图片、文件、流等相关内容的取证技术

I、背景 取证技术&#xff0c;尤其是计算机数据取证技术&#xff0c;是一种针对信息犯罪和计算机数据的专业取证技术。它旨在帮助学习者理解电子证据及其形成过程&#xff0c;并掌握计算机数据相关的取证技术。 具体来说&#xff0c;计算机取证是对计算机犯罪证据的识别获取、…

RetentionPolicy枚举类

包名package java.lang.annotation 作用 注释保留策略。此枚举类型的常量描述用于保留注释的各种策略。它们被使用与&#xff5b; Retention&#xff5d;元注释类型一起指定注释要保留多长时间。 属性 SOURCE编译器将丢弃注释。CLASS注释将由编译器记录在类文件…