首页 > 其他分享 >Android开发 - (适配器)Adapter类中(蓝牙适配器)BluetoothAdapter实现类解析

Android开发 - (适配器)Adapter类中(蓝牙适配器)BluetoothAdapter实现类解析

时间:2024-08-24 16:48:24浏览次数:6  
标签:bluetoothAdapter 适配器 BluetoothAdapter 蓝牙 开启 Adapter 设备

什么是 BluetoothAdapter

BluetoothAdapter 是一个重要的类,用于管理和操作蓝牙功能。它提供了与蓝牙设备进行交互的能力,它代表了本地蓝牙适配器的功能。简单来说,它是你与设备上的蓝牙硬件进行交互的接口。通过 BluetoothAdapter,你可以控制蓝牙的开启和关闭发现附近的蓝牙设备管理已经配对的设备

主要功能

  • 检查蓝牙是否支持BluetoothAdapter 可以用来检查设备是否支持蓝牙

  • 获取 BluetoothAdapter 实例:它提供了一个方法来获取当前设备的蓝牙适配器实例

  • 开启和关闭蓝牙:可以使用 BluetoothAdapter开启或关闭蓝牙

  • 发现设备:它允许查找附近的蓝牙设备

  • 管理配对设备:可以查看已经配对的蓝牙设备列表,并与之进行连接

如何使用 BluetoothAdapter

  • 获取 BluetoothAdapter 实例

    // getDefaultAdapter() 方法返回设备的默认蓝牙适配器。如果设备不支持蓝牙,这个方法会返回 null
    BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    
  • 检查蓝牙是否支持

// 如果 bluetoothAdapter 是 null,说明设备不支持蓝牙功能
if (bluetoothAdapter == null) {
    // 设备不支持蓝牙
    Log.d("Bluetooth", "Bluetooth is not supported on this device.");
}
  • 开启或关闭蓝牙

    // isEnabled() 方法检查蓝牙是否已经开启
    if (!bluetoothAdapter.isEnabled()) {
        // 蓝牙未开启,尝试开启蓝牙
        // ACTION_REQUEST_ENABLE 是一个意图,用于请求用户开启蓝牙
        Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        // startActivityForResult() 会启动系统的蓝牙开启请求对话框
        startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
    } else {
        // 蓝牙已开启
        Log.d("Bluetooth", "Bluetooth is already enabled.");
    }
    
    • 注意用户需要授权应用来开启蓝牙
  • 发现设备

    BluetoothAdapter.LeScanCallback leScanCallback = new BluetoothAdapter.LeScanCallback() {
        @Override
        public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
            // 发现设备时调用
            Log.d("Bluetooth", "Device found: " + device.getName() + ", " + device.getAddress());
        }
    };
    // startLeScan() 方法开始扫描附近的 BLE(蓝牙低功耗)设备
    bluetoothAdapter.startLeScan(leScanCallback); // LeScanCallback 回调会在找到设备时被调用:在回调中,你可以获取到设备的名称和地址
    
    • 注意:从 Android 8.0 开始,startLeScan() 方法已被弃用推荐使用 BluetoothLeScanner 类进行扫描
  • 关闭蓝牙

    if (bluetoothAdapter.isEnabled()) {
        // disable() 方法会关闭蓝牙。如果蓝牙已经开启,这个方法会关闭它
        bluetoothAdapter.disable();
    }
    

权限和用户授权

  • 在使用 BluetoothAdapter 时,你需要在 AndroidManifest.xml 文件中声明蓝牙权限

    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <!-- 或 ACCESS_COARSE_LOCATION -->
    
    • Android 6.0 开始,访问蓝牙设备的位置权限也是必需的,因为蓝牙扫描可能会泄露用户的位置

总结

  • BluetoothAdapterAndroid 中用来管理和操作蓝牙功能的核心类。它提供了访问本地蓝牙硬件开启和关闭蓝牙发现附近设备以及管理配对设备的能力

标签:bluetoothAdapter,适配器,BluetoothAdapter,蓝牙,开启,Adapter,设备
From: https://www.cnblogs.com/ajunjava/p/18377934

相关文章

  • 设计模式 适配器模式
    适配器模式适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式的结构适配器模式通常涉及以下几个角色:目标(Target):定义客户端所期望的接口。适配者(Adaptee):定义一个已经存在......
  • C++ 适配器 stack
    不了解适配器的读者可以先去看一看这一篇博客:C++适配器-CSDN博客栈数据结构介绍我们平时洗碗的时候,叠成一层层的碗最后只能从上面往下面开始拿;平时箱子里面叠的衣服,也是只能从上面慢慢拿。先放进去的东西后拿出来,这种内存特点的数据结构就叫栈。就像一个只有单边口的容器......
  • 设计模式-05_代理模式&适配器模式&装饰者模式
    文章目录1代理模式1.1概述1.2结构1.3静态代理1.4JDK动态代理1.5CGLIB动态代理1.6三种代理的对比1.7优缺点1.8使用场景2适配器模式2.1概述2.2结构2.3类适配器模式2.4对象适配器模式2.5使用场景2.6JDK源码3装饰者模式3.1概述3.2结构3.3实例3.4使用......
  • Realtek 网卡驱动程序是用于操作系统与 Realtek 网络适配器之间的通信软件。这些驱动
    Realtek网卡,特别是用于个人电脑和服务器的网卡,曾经发现过一些安全漏洞。以下是一些常见的Realtek网卡漏洞及其相关信息:CVE-2020-28015:这个漏洞存在于RealtekRTL8188EU驱动程序中,影响了在特定情况下的无线网络连接。攻击者可以利用这个漏洞执行任意代码或引发系统崩溃。......
  • [纯干货]SpringCould + 适配器模式 + nacos动态部署 OSS 对接
    一、前言在一个微服务项目里,我们的OSS云存储服务常常需要配置诸如阿里云、腾讯云、minio等多个云存储厂商的业务代码,而且后续无法确保是否会增添新的云存储厂商。此时,倘若我们要修改具体使用的云存储厂商,就会致使controller层和service层发生变动,这并不符合低耦合的理......
  • INLINE Data Link Adapters for Engine Diagnostics
    INLINEdatalinkadaptersaredesignedtofacilitatecommunicationbetweentheengine'sECM(ElectronicControlModule)anddiagnostictools.Availableinthreemodels,theseadapterscanbesourcedfromyourlocalCumminsdealerordistributor:INLIN......
  • 高性能USB转串口适配器,让USB和串行接口轻松实现双向通信!
    多功能数字接口转发器,让USB和串行接口轻松实现双向通信!高性能USB转串口适配器,助力你的嵌入式程序开发!USB转串口适配器可编程开发板TYPE接口是一种多功能的数字接口物理层协议转发器,可以转换USB接口和串行接口之间的双向通信。它支持多种嵌入式程序开发,并可以自由制定转发透传逻......
  • Android开发 - (适配器)ArrayObjectAdapter类与Presenter实现类关联的作用解析
    ListRowPresenterArrayObjectAdapteradapter=newArrayObjectAdapter(newListRowPresenter());用途:用于展示ListRow中的水平滚动列表项ImageCardViewPresenterArrayObjectAdapteradapter=newArrayObjectAdapter(newImageCardViewPresenter());用途:用于显示带......
  • Android开发 - (适配器)Adapter类中ArrayObjectAdapter实现类详细解析
    简介用于AndroidTV的Leanback库,用于绑定对象数组到UI组件具体作用ArrayObjectAdapter是RecyclerView和Adapter系列中用于处理列表数据的一种适配器类型,主要用于AndroidTV的Leanback库中的BrowseFragment、DetailFragment和PlaybackOverlayFragment等......
  • Android开发 - (适配器)Adapter类中FragmentPagerAdapter实现类详细解析
    简介用于ViewPager,与Fragment一起使用,适合少量静态页面具体作用FragmentPagerAdapter专用于在ViewPager中管理和显示Fragment。它允许你在滑动视图(ViewPager)中实现分页功能,每个页面都是一个Fragment。FragmentPagerAdapter适用于需要管理少量Fragment的场景,因为......