首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android开发笔记(一百六十二)蓝牙设备的连接与配对

蓝牙是一种短距离无线通信技术,它由爱立信公司于1994年创制,原本想替代连接电信设备的数据线,但是后来发现它也能用于移动设备之间的数据传输,所以蓝牙技术在手机上获得了长足发展...enable方法用于启用蓝牙功能,但是该方法并不允许外部发现本设备,所以等于没用。...不过因为搜索动作是个异步的过程,startDiscovery方法并不直接返回搜索发现的设备结果,而是通过广播BluetoothDevice.ACTION_FOUND返回新发现的蓝牙设备。...所以页面代码需要注册一个蓝牙搜索结果的广播接收器,在接收器中解析蓝牙设备信息,再把新设备添加到蓝牙设备列表。...故而前面第三步的广播接收器得增加过滤绑定状态的变更动作,接收器内部也要补充更新蓝牙设备的绑定状态了。

3.3K10

Android蓝牙详析 | 蓝牙的适配、权限、开启、搜索发现等处理

本系列笔记概述 蓝牙传输优势:功耗低,传输距离还可以; 蓝牙聊天室案例 Android中蓝牙设备的使用 蓝牙权限(本文的讲解内容之一) 蓝牙功能开启(本文的讲解内容之一) 搜索蓝牙设备(本文的讲解内容之一...表示设备自身的蓝牙适配器; 通过静态方法BlueAdapter.getDefaultAdapter()获得BlueAdapter; 整个系统只有一个蓝牙适配器,application可使用此BlueAdapter...调用isEnable()以检查当前是否已启用蓝牙; 如果此方法返回false,则表示蓝牙处于停用状态; 要请求启用蓝牙,将通过ACTION_REQUEST_ENABLE向系统设置 发出启用蓝牙的请求...——发现设备 发现设备:startDiscovery() 该进程为异步进程, 该方法会立即返回一个布尔值,指示是否已成功启动发现操作; 发现进程通常包含约12秒钟的查询扫描 广播接收: //...”按钮,显示已配对蓝牙设备的信息: ?

6.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Android 应用开发】Android之Bluetooth编程

    在Android 的广播机制中,动态注册的优先级是要高于静态注册优先级的,你是否在调试时2个都注册了,所以出现你的这种情况;当用来注册动态广播接收器的activity被关闭时,这个动态接收器也就是就失效了...,静态注册的广播接收器只要有你注册的广播出现就能接收到广播。...对象 , BluetoothDevice device = bluetoothAdapter.getRemoteDevice(macAddress); 将蓝牙设备对象传入服务中的connect方法中;...to paired bluetooth devices)   android.permission.BLUETOOTH_ADMIN 允许程序发现和配对蓝牙设备(Allows applications...大多数应用程序必须具有这个权限才能够发现本地蓝牙设备,这个权限保护的其他能力(除了发现本地设备)不应该被使用,除非你的应用程序是在用户请求的时候能够修改蓝牙设置的管理者。

    46330

    Android 蓝牙开发(扫描设备、绑定、解绑)Kotlin版

    //蓝牙广播接收器 private var bluetoothReceiver: BluetoothReceiver?...isEnabled) { //打开 //开始扫描周围的蓝牙设备,如果扫描到蓝牙设备,通过广播接收器发送广播 if (mAdapter...广播接收器   点击扫描蓝牙之后会这行扫描事件,会发送一个广播出去,发送出去了自然要有一个地方来接收,这就是广播接收器,在MainActivity定义一个内部类,通过**inner**关键字 /...避免重复添加和添加null的设备进入列表,而点击item,根据绑定状态而定,绑定过蓝牙的点击就是取消绑定,这里调用了一个方法。...,调用createOrRemoveBond方法,也可以说是配对,当你取消绑定是也会调用这个方法,只是传递的类型不同而已。

    4.9K10

    Android 蓝牙开发(1)

    使用 Bluetooth API Android 应用可以执行下面的操作: 扫描其他蓝牙设备 查询本地蓝牙适配器的配对蓝牙设备 建立 RFCOMM 通道 通过服务发现连接到其他设备 与其他设备进行双向数据传输...管理多个连接 传统蓝牙适用于电池使用强度较大的操作,例如 Android 设备之间的流传输和通信等。...cancleDiscovery() 在进行连接之前应该始终调用这个方法,而且调用的时候无需检测是否正在扫描。...使用 ACTION_VENDOR_SPECIFIC_HEADSET_EVENT intent 创建广播接收器,用来处理耳机供应商特定的 AT 命令。...,也可以直接 .enable 开启蓝牙 通过 调用 startDiscovery 开启发现周边设备(持续 12 秒),这个时候需要注册广播接收器来接受发现的蓝牙设备(及时关闭这个操作) 通过 BluetoothDevice

    2.5K01

    Android 蓝牙开发(扫描设备、绑定、解绑)Kotlin版

    是不是立竿见影,这个效果一行代码解决问题还不用写工具类,完全调用系统的方法,请注意我是Android10.0版本的手机,也是我自己用的手机。...isEnabled) { //打开 //开始扫描周围的蓝牙设备,如果扫描到蓝牙设备,通过广播接收器发送广播 if (mAdapter !...广播接收器   点击扫描蓝牙之后会这行扫描事件,会发送一个广播出去,发送出去了自然要有一个地方来接收,这就是广播接收器,在MainActivity定义一个内部类,通过inner关键字 /**...避免重复添加和添加null的设备进入列表,而点击item,根据绑定状态而定,绑定过蓝牙的点击就是取消绑定,这里调用了一个方法。...,调用createOrRemoveBond方法,也可以说是配对,当你取消绑定是也会调用这个方法,只是传递的类型不同而已。

    4.5K20

    Android 蓝牙开发(扫描设备、绑定、解绑)

    rv;//蓝牙设备展示列表 private BluetoothReceiver bluetoothReceiver;//蓝牙广播接收器 private RxPermissions rxPermissions...,失败则给一个提示,这个地方是一个静态的方法,其实就是弹出一个Toast,但是Android原生的代码太长了,所以这里我写个方法来调用显示,看起来会简洁很多。...,如果扫描到蓝牙设备,通过广播接收器发送广播 bluetoothAdapter.startDiscovery(); } else...,我之前在初始化蓝牙的时候加了四个过滤器,所以这里就可以在接收的时候做处理了,从而实现相应的操作,还有一个就是这个广播接收器是和onCreate方法平级的,所以只要是在MainActivity这个{}里面...然后是createOrRemoveBond 这个方法用于绑定或者解绑设备,里面传入两个参数一个是类型,另一个是设备。

    4.9K20

    咦,Oreo怎么收不到广播了?

    本篇文章主要讲述以下内容,还请拿起小板凳,带好零食,前来观赏: Android广播科普 Android8.0的后台限制 具体广播限制和对应赦免清单 简要介绍适配/解决方法 科普科普广播知识 来来来,先科普下...通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,去调用以下方法。意图明确,指定了要激活的组件是哪个组件,一般是在相同的应用程序内部实现的。...例如:通过静态注册接收开机广播(假设你的设备没做定制,能收到~),并在onReceive方法中启动一个Service,在API 26上,是不允许且会报错的。当然,对于前台服务,这种限制是不存在的。...,以便知晓设备的安全状态发生了变化" /** 日历相关 CalendarContract.ACTION_EVENT_REMINDER */ "保留原因:由日历provider发送,用于向日历应用发布事件提醒...动态通过调用 Context.registerReceiver()注册广播接收器而不是在清单中声明接收器。 使用JobScheduler,这个网上找一下,有很多教程,就不细说了。

    2K40

    android 十八 蓝牙及Wi-Fi

    ,它被广泛应用于各种设备,比如计算机、手机、汽车等,支持设备之间的近距离通信,从而是数据传输更加快捷有效。...本节中我们主要来学习Android开发中如何调用系统中蓝牙以及wifi的功能。 ​...核心技能部分​ 11.1 蓝牙简介 蓝牙(Bluettoth)是目前使用最广泛的一种短距离(10M)无线通信协议之一,广泛应用于各种设备中,比如手机、计算机、耳机、鼠标、键盘等。...(); 接着调用BluetoothAdapter的startDiscovery()方法就可以搜索附近的蓝牙设备了。...系统会在每搜索到一个蓝牙设备时发送一个广播,通过接收这个广播,可以获得搜索到的蓝牙设备信息。当搜索完成时还会发送一个广播,可以在该广播接收器中做一些收尾工作。 ​

    10710

    Android4.42-Settings源码分析之蓝牙模块Bluetooth(上)

    还加入了关于蓝牙的两个权限,BLUETOOTH和BLUETOOTH_ADMIN,前者用于允许与已经配对的蓝牙设备进行连接主要是配对后的权限,后者用于允许发现和配对蓝牙设备,主要是配对前的权限。...进入到BluetoothEnabler.java类中可以发现,在该类的resume方法中对该switch有一个设置 其中handleStateChanged方法就是传入当前蓝牙的状态,并对开关的状态进行设置...4:本机蓝牙设备的相关设置,包括本机蓝牙名称,蓝牙对附近可用设备的可见性,蓝牙对已经配对设备的可见性,当检测到蓝牙开启时会添加一个本机蓝牙信息的Preference,在方法updateContent中完成添加或者移除...这就涉及到了,注册广播监听本地蓝牙状态,为switch注册监听器监听switch的更改,以及对switch状态进行设置的方法。...switch状态,广播接收器中的代码如下 private final BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override

    1.6K20

    赶鸭子上架之安卓开发速成

    android:name="android.permission.BLUETOOTH_ADMIN"/> 我是看极客学院的两个视频学习的,但是视频中的代码不能实现蓝牙串口模块的收发,只能发送不能接收,原因可能是因为同一个设备既做客户端又做服务端...该类中提供了允许用户发现、请求和连接其它支持Wi-Fi Direct设备的API。 用于监听Wi-Fi Direct请求的广播接收器。...WifiP2pManager.WIFL_P2P_PEERS_CHANGED_ACTION:调用WifiP2pManager.requestPeers方法获取成功连接的设备列表。...被Wi-Fi Direct框架检测到的事件通知,例如,终止连接、发现新的Wi-Fi Direct设备等。...这个时候你只需要为你的应用 注册一个用于监视开机的BroadcastReceiver,当接收到开机广播就做写偷偷摸摸的勾当~ ContentProvider:我们想在自己的应用中访问别的应用,或者说一些

    2.1K20

    Android14 适配之——targetSdkVersion 升级到 34 需要注意些什么?

    connectedDevice:与需要蓝牙、NFC、IR、USB 或网络连接的外部设备进行交互。...2.2 动态广播接收器必须指定导出的行为 动态注册的广播接收器必须设置一个标记,用于表明接收器是否被导出到设备上的所有 App。...早在 Android13 就引入了这个功能,可以让应用程序指定一个已注册的广播接收器是否应该被导出,并对设备上的其他应用可见。 只不过在 Android14 上变成了“必须设置”。...而在以前的 Android 版本中,设备上的任何应用都可以向动态注册的广播接收器发送未受保护的广播,除非该接收器有签名许可。...在实践中还发现,如果 A 应用也通过方式1发送自己应用内部的广播,且设置 ContextCompat.RECEIVER_NOT_EXPORTED,那么这个广播是无法收到的,感兴趣的同学可以试试。

    17K30

    Bluetooth4_3运行流程(连接发射器SN00000009)

    LeScanCallback接口BluetoothAdapter.LeScanCallback,单击搜索到的蓝牙设备列表(用户操作)onListItemClick(把搜到的蓝牙设备的地址和名称放入Intent...//已经注册了此广播(onResume中registerReceiver(mGattUpdateReceiver, makeGattUpdateIntentFilter());在的广播接收器中根据状态进行更新界面...Menu对象,供使用 Android2.3或更低的版本会在每次Menu打开的时候调用一次onPrepareOptionsMenu(). ...Android3.0及以上版本默认menu是打开的,所以必须调用invalidateOptionsMenu()方法,然后系统将调用onPrepareOptionsMenu()执行update操作。...--->界面的菜单栏上显示 关闭蓝牙同上面流程 6,手机和发射器蓝牙连接上以后就会发现Services,BluetoothGattCallback的方法onServicesDiscovered就会执行,

    93760

    【Android 应用开发】BluetoothDevice详解

    调用BluetoothAdapter的getBoundedDevices()方法, 可以获取已经配对的蓝牙设备集合; 3....需要权限 android.permission.BLUETOOTH : 允许程序连接到已配对的蓝牙设备, 请求连接/接收连接/传输数据需要改权限, 主要用于对配对后进行操作; android.permission.BLUETOOTH_ADMIN... : 允许程序发现和配对蓝牙设备, 该权限用来管理蓝牙设备, 有了这个权限, 应用才能使用本机的蓝牙设备, 主要用于对配对前的操作; 优先级 : BLUETOOTH权限是BLUETOOTH_ADMIN权限的前提...,发现一个远程设备的时候发出该广播; 这个广播总是包含EXTRA_DEVICE, EXTRA_CLASS附加域, 如果这个蓝牙可用的话, 还会包含EXTRA_NAME, EXTRA_RSSI附加域; 需要...或者 第一次发现远程蓝牙设备的名称的时候发出该广播, 该广播包含附加域 EXTRA_DEVICE , EXTRA_NAME附加域; 需要BLUETOOTH权限; (3)绑定状态常量 已绑定 : intBOND_BONDED

    1.9K30

    Android O 广播限制

    问题 因为项目需要迁移到8.0平台,发现有一个系统应用打不开,从log发现如下描述: BroadcastQueue: Background execution not allowed: receiving...无论设备当前是否已接通电源,这都是一个问题。实际上,这在Android TV设备(始终插上电源)上可能经常会成为问题,因为它们的RAM往往很紧!...为了迁移到 Android 8.0 或更高版本,应用将该接收器从其清单中移除。 应用将清理作业安排在设备处于空闲状态和充电时运行。 例外的隐式广播 很多隐式广播当前已不受此限制所限。...Android O问题的解决方案 检查在应用的清单中定义的BroadcastReceiver。 如果清单里为显式广播声明了接收器,则必须予以替换。...可能的解决方法包括: 通过调用 Context.registerReceiver() 动态创建BroadcastReceiver而不是在清单中声明一个静态的BroadcastReceiver。

    4K31

    Android 12 还没用上,Android 13 已经来了!

    ,用于更好地管理应用在后台时访问身体传感器的行为 IntentFilter 会屏蔽不匹配的 Intent 已适配 当该 Intent 与接收应用中的 匹配时,系统才会传送该 Intent 更安全地动态注册广播接收器...强制 ❗ 应用必须明确指出动态注册的广播接收器是否接收其他应用的广播 3....附近 Wi-Fi 设备权限,用于管理应用与附近 Wi-Fi 感知设备的连接。...此权限组在 Android 12 中引入,还包含与蓝牙相关的权限。请求该权限组的权限,权限授予对话框会提示用户批准访问附近的设备。...2.4 动态注册广播接收器改进 在旧版本中,应用动态注册的 BroadcastReceiver 广播接收器会接收到任何应用发送的广播(除非该接收器使用了应用签名权限保护),这会让动态注册的广播接收器存在安全风险

    1.3K20

    【Android 应用开发】BluetoothAdapter解析

    : 允许程序连接到已配对的蓝牙设备, 请求连接/接收连接/传输数据需要改权限, 主要用于对配对后进行操作; android.permission.BLUETOOTH_ADMIN : 允许程序发现和配对蓝牙设备..., 该权限用来管理蓝牙设备, 有了这个权限, 应用才能使用本机的蓝牙设备, 主要用于对配对前的操作; 优先级 : BLUETOOTH权限是BLUETOOTH_ADMIN权限的前提, 如果没有BLUETOOTH..., 在查找的过程中, 不能连接远程的蓝牙设备, 已经存在的连接也要限制带宽, 如果想要执行除查找外的其它操作, 之前最好调用cancelDiscovery(); 搜索完成广播 : String ACTION_DISCOVERY_FINISHED...; 权限 : BLUETOOTH权限; (3)取消查找 public boolean cancelDiscovery(); 作用 : 取消蓝牙搜索; 在进行connect()方法的时候, 必须调用这个方法...(); // /第二种打开方法 ,调用系统API去打开蓝牙 if (!

    2.2K40

    Android 13 适配指南

    WIFI设备权限 由于 Android 之前可以通过跟踪附近的 Wi-Fi AP 和蓝牙设备来推断设备的位置,所以这次谷歌决定禁止应用程序访问蓝牙或Wi-Fi扫描结果,除非这类应用需要声明 ACCESS_FINE_LOCATION...,通过 Wi-Fi 感知和连接功能发现并连接到设备; 通过 Wi-Fi 直连发现和连接到设备; 发起与已知 SSID(例如汽车或智能家居设备)的连接。...13 允许你指定 App 中的特定广播接收器是否应被导出以及是否对设备上的其他应用可见,此变更是 Android 12 更安全的组件 的延续; 以 Android 13(33) 或更高版本为目标平台的应用...,必须为每个广播接收器指定 RECEIVER_EXPORTED或 RECEIVER_NOT_EXPORTED,否则当 App 尝试注册广播接收器时,系统会抛出 SecurityException //...电池资源利用率 Android 13 中引入了 电池资源利用率 功能,以便为系统提供多种方法来更好地管理设备电池续航时间: 更新了有关系统何时将你的应用放入“受限”应用待机模式存储分区的规则。

    5.2K31

    蓝牙6.0核心规范发布:可实现厘米级精准定位!

    此方法要求接收设备测量接收到的信号强度(称为 RSSI),并了解远程设备在距发射器的某个参考距离(如 1 米)处传输的信号强度。此外,相关物理场表明,接收器的信号强度与其与发射器的距离的平方成反比。...蓝牙 SIG 表示,这将带来“相当长距离的厘米级精度”。蓝牙技术已经用于定位服务,例如 Android 的 Find My Device 网络和 Apple 的 Find My。...这可以在 iPhone、Android 和其他具有 Windows 和 Linux 等其他操作系统的设备上扩展“查找”网络。...当此类型的过滤处于活动状态时,主机将仅从每个唯一设备接收一个广播数据包(受蓝牙核心规范定义,即在此上下文中构成唯一设备)。...这提高了主机的效率,但缺点是,当情况要求观察者设备现在应尝试连接到设备时,主机无法知道设备是否仍在范围内。这可能会导致观察者浪费能源对先前发现的不再在范围内的设备执行高占空比扫描。

    43810

    Android BLE 蓝牙开发,连接蓝牙设备进行通讯

    当蓝牙没有开启时,我们可以直接开启蓝牙。 这个方法的结果,并不是实时返回的。我们如果要知道蓝牙是否开启,需要监听蓝牙状态的广播才行。下面会介绍广播监听。...也就是说这个方法中会触发多次回调, 所以建议,在扫描到我们的蓝牙设备之后,主动调用scanner.stopScan(callback);停止扫描。 PS:这种查找方式,不会触发蓝牙的遍历广播。...我们如果开启广播进行监听设备扫描情况。如果通过startScan方法,广播中不会有回调。 上面是一个通用搜索模式,我们还可以配置自己的过滤条件。...这个方法触发之后是由系统进行蓝牙扫描。就和我们在手机的设置界面中点击蓝牙扫描一样。 上面的这个方法没有回调,因为所有的蓝牙设备的发现都将通过广播事件进行传递。 需要通过我上面的广播监听介绍的内容。...3.8 写数据到蓝牙设备中 我们如果想将内容推送到蓝牙设备中,在发现服务的时候onServicesDiscovered 遍历特性中,确保是用于写消息的特性对象后。

    5.5K20
    领券