Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Android蓝牙配对弹出框过程分析 Android蓝牙配对弹出框过程分析

Android蓝牙配对弹出框过程分析 Android蓝牙配对弹出框过程分析

作者头像
fanfan
发布于 2018-01-24 10:32:27
发布于 2018-01-24 10:32:27
6K00
代码可运行
举报
文章被收录于专栏:编程思想之路编程思想之路
运行总次数:0
代码可运行

Android蓝牙配对弹出框过程分析

根据远程蓝牙设备(remote devices)的要求,手机端发起与远程蓝牙设备Bluetooth remote Device的配对有两种情况

第一种:配对时需要pin码(pin request event)即有配对请求pairing request :所对应的action为 : BluetoothDevice.ACTION_PAIRING_REQUEST。

 根据远程设备所携带的type信息判断是否可以获取到pairingkey

     type值通过BluetoothDevice.EXTRA_PAIRING_VARIANT获取到

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int type = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT,
                    BluetoothDevice.ERROR);

     pairingkey通过BluetoothDevice.EXTRA_PAIRING_KEY获取到

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 int pairingKey = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_KEY,
                        BluetoothDevice.ERROR);

如果type(int型数值)属于以下3种类型:

  • BluetoothDevice.PAIRING_VARIANT_PASSKEY_CONFIRMATION(数值为2,远程设备为手机/scp860时为该类型),需要用户确认
  • BluetoothDevice.PAIRING_VARIANT_DISPLAY_PASSKEY(数值为4),以前的一种配对方式,用在蓝牙2.1配对过程中,需要在本机(local device)输入显示在远程设备上的秘钥                passkey: enter the passkey displayed on remote device
  • BluetoothDevice.PAIRING_VARIANT_DISPLAY_PIN(数值为5),蓝牙2.0配对过程中,在本机输入显示在远程设备上的pin码:  enter the PIN displayed on remote device

则表示远程设备(remote device)本身携带有配对码pairingkey,可以通过BluetoothDevice.EXTRA_PAIRING_KEY获取到配对码

如果type不属于以上3种类型,则表示远程设备不会携带pairingkey配对码,必须要用户自己手动输入:The user will be prompted to enter a pin or an app will enter a pin for user

第二种:不需要pin码(create bond)没有配对请求(对应的设备有scp960,蓝牙耳机等),此时远程设备不需要鉴权,可以直接使用(just works)

所对应的action为:BluetoothDevice.ACTION_BOND_STATE_CHANGED

监听action的类为BluetoothPairingRequest.java,配对弹窗为BluetoothPairingDialog.java。字段信息存在于BluetoothDevice.java中

总结来说如果不以action为区分的话,配对分为三种情况

  • 直接配对连接不需要鉴权(just works):这种情况相当于手机发起配对时不需要请求远程设备,即不需要远程设备的认可
  • passkey/pin enter需要一方输入型:这种情况配对时会请求远程设备,然后远程设备会提供一个passk/pin码但不会通过代码的形式通知给用户,用户需要去查看远程设备显示的配对码并输入该pairingkey配对码(属于蓝牙2.0和2.1时的处理)
  • passkey/pin confirmmation无需输入密码只需确认型:这种情况配对时也会请求远程设备,远程会提供一个配对码并且通知给用户,此时代码中可以获取到pairingkey配对码,严格来说是用户需要查看远程设备上显示的配对码与当前手机上显示的配对码是否一致,进行比较(compare)确认后配对,所以属于确认型,对应于上述type的第一种类型
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-01-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android6.0蓝牙协议之OPP
因为毕设做了蓝牙通信相关的,所以工作后让我负责蓝牙模块。但是有bug的时候才发现对蓝牙协议的了解少之又少,现在先分析一个文件传输协议 Chapter One,简单介绍 1,OPP:Object push profile 面向对象传输协议,用于传输文件。 2,代码所在目录为\android\packages\apps\Bluetooth\src\com\android\bluetooth\opp。对于手机是否支持OPP,目前我所接触到的有3处 第一,首先系统方案提供商的蓝牙文档是否支持OPP,OPP有cl
fanfan
2018/01/24
2.1K0
Android 蓝牙开发,蓝牙连打印机。
1.添加jar包,在app目录下新建libs文件夹,拷入jar文件并Add As Library
yechaoa
2022/06/10
2.8K0
Android 蓝牙开发,蓝牙连打印机。
BLE安全之SM剖析(2)
  上一章介绍了配对流程的第一阶段,剖析了配对第一阶段的配对请求包和配对响应包的各个字段的含义和使用。接下来就进入了ble配对的阶段二,在该阶段双方会根据阶段一中的配对信息选择合适的配对和认证方式,并且生成会后续链接加密的密钥。
物联网布道师
2023/02/28
1.3K0
BLE安全之SM剖析(2)
Android 9.0 蓝牙配对流程
DeviceListPreferenceFragment是蓝牙扫描到的设备列表,点击其中一个蓝牙设备,调用onPreferenceTreeClick方法开始蓝牙的配对过程。
用户7557625
2020/07/15
2.3K0
Android 蓝牙开发(扫描设备、绑定、解绑)Kotlin版
之前写了一个蓝牙的小Demo,看的人还是有一些的,也有人私信我说,在学Kotlin,能不能出一版Kotlin的博客讲述这个蓝牙开发,这个想法还是不错的,不过就怕写了没有人看,因为在国内Kotlin是受众群体确实比较少,当然了也是有大的方向在往这边推动的,但是小公司依然不会去用Kotlin,如果你看不惯我这个说法也不要告诉我。我只是把这个博客当成是笔记而已,如果能在写作的时候帮助到别人也是乐意的,不能就自勉吧。
晨曦_LLW
2020/11/18
5.1K0
Android蓝牙开发教程(一)——搜索蓝牙设备[通俗易懂]
i.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0); 最后的参数设置为0,可以让蓝牙设备一直处于可发现状态。当我们需要设置具体可被发现的时间时,最多只能设置300秒。 i.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
全栈程序员站长
2022/09/13
6.5K1
Android蓝牙开发教程(一)——搜索蓝牙设备[通俗易懂]
android开发之蓝牙主动配对连接手机
上一篇介绍了手机配对连接的三种方式,这篇以完整的一个代码实例介绍如何搜索周围的蓝牙设备,以及主动配对,连接。
全栈程序员站长
2022/03/11
7740
Android4.42-Settings源码分析之蓝牙模块Bluetooth(上)
接着来介绍一下设置中某个模块的源码,本文依旧是基于Android4.42源码进行分析,分析一下蓝牙模块的实现。建议大致看一下关于Settings的剖析。
fanfan
2022/05/07
1.6K0
Android4.42-Settings源码分析之蓝牙模块Bluetooth(上)
【Android 应用开发】Android之Bluetooth编程
android开发中使用AndroidManiFest.xml静态注册的BroadCastReceiver没有作用是什么原因?
韩曙亮
2023/03/27
4800
Android4.42-Setting源码分析之蓝牙模块Bluetooth(下)
接着上一篇   Android4.42-Settings源码分析之蓝牙模块Bluetooth(上)
fanfan
2022/05/07
9920
android开发之手机与单片机蓝牙模块通信
之前两篇都是在说与手机的连接,连接方法,和主动配对连接,都是手机与手机的操作,做起来还是没问题的,但是最终的目的是与单片机的蓝牙模块的通信。
全栈程序员站长
2022/03/11
8310
Android开发笔记(一百六十二)蓝牙设备的连接与配对
蓝牙是一种短距离无线通信技术,它由爱立信公司于1994年创制,原本想替代连接电信设备的数据线,但是后来发现它也能用于移动设备之间的数据传输,所以蓝牙技术在手机上获得了长足发展。 因为手机内部的通讯芯片一般同时集成了2G/3G/4G、WIFI和蓝牙,所以蓝牙功能已经是智能手机的标配了。若想进行蓝牙方面的开发,需要在App工程的AndroidManifest.xml中补充下面的权限配置:
aqi00
2019/01/18
3.4K0
带你解锁蓝牙skill(三)
蓝牙这块儿算是系统中的一个大块儿,刚开始分析确实很容易没有头绪,所以在进入庞大的源码之前先确定一个分析顺序,也好避免越学越乱。 对于源码的分析不外乎whw(what—how—why) 对于蓝牙各协议的功能以及如何演示都已经分析完了,具体可以参考 带你解锁蓝牙skill(一)以及带你解锁蓝牙skill(二)。 本文以Android7.0为例进行源码分析。开始分析源码之前,先来看看蓝牙相关的都有什么东西 4,如何开始 在对一个新事物进行研究之前,我们已经了解了他是什么,那么接下来就是庖丁解牛了
fanfan
2018/01/24
1.6K0
Android 蓝牙开发(一)蓝牙通信「建议收藏」
<uses-permissionandroid:name=”android.permission.BLUETOOTH” />
全栈程序员站长
2022/09/14
4.4K0
Android BLE 蓝牙开发,连接蓝牙设备进行通讯
讲解如何通过 UUID 连接蓝牙设备。如果你针对 GATT 服务不太了解。那么这篇应该能够稍微帮助到你。
zinyan.com
2023/07/14
5.9K0
Android BLE 蓝牙开发,连接蓝牙设备进行通讯
Android蓝牙详析 | 蓝牙的适配、权限、开启、搜索发现等处理
本系列笔记概述 蓝牙传输优势:功耗低,传输距离还可以; 蓝牙聊天室案例 Android中蓝牙设备的使用 蓝牙权限(本文的讲解内容之一) 蓝牙功能开启(本文的讲解内容之一) 搜索蓝牙设备(本文的讲解内容之一) 与外设搭建RFCOMM通道(射频通道) 蓝牙设备双向数据传输 蓝牙聊天室案例框架 蓝牙权限 执行蓝牙通信需要权限BLUETOOTH, 例如:请求连接、接收连接和传输数据等; 如果需要启动设备 或 操作蓝牙设置,则需声明BLUETOOTH_ADMIN权限 <uses-permiss
凌川江雪
2019/05/17
6.7K0
Android蓝牙开发(二)之蓝牙配对和蓝牙连接
上篇文章:https://blog.csdn.net/huangliniqng/article/details/82185983
黄林晴
2019/01/10
4.5K0
Android蓝牙开发(一)之打开蓝牙和设备搜索
https://blog.csdn.net/huangliniqng/article/details/82185635
黄林晴
2019/01/10
2.4K0
Android蓝牙开发(二)之蓝牙配对和蓝牙连接
上篇文章:https://blog.csdn.net/huangliniqng/article/details/82185983
全栈程序员站长
2022/09/07
3.5K0
推荐阅读
相关推荐
Android6.0蓝牙协议之OPP
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验