目录

前言

一、连接&配对方法介绍

二、演示:第一次连接蓝牙设备  &  直接与蓝牙设备建立配对

三、总结

四、补充

五、Demo案例源码地址:

前言

前面两篇文章【Android】蓝牙开发——经典蓝牙(附完整Demo)和【Android】蓝牙开发——经典蓝牙配对介绍(通过手机系统蓝牙演示),分别介绍了经典蓝牙的开发流程以及通过手机系统蓝牙演示经典蓝牙的四种配对方式,今天这篇文章主讨论Java代码实现经典蓝牙的配对。经典蓝牙需要进行配对,一般有两种情况下:

1、系统蓝牙第一次连接设备时,需要进行配对操作。(这里“第一次”指的是系统蓝牙没有与设备建立配对)

2、系统蓝牙与设备只进行配对操作,不建立连接。

注意:如果系统蓝牙已经与设备建立了配对,连接设备时就不再进行配对操作。

一、连接&配对方法介绍

1、连接方法

BluetoothDevice.createRfcommSocketToServiceRecord(UUID)

2、配对&解除配对方法(通过反射)

/**

* 与设备配对 参考源码:platform/packages/apps/Settings.git

* /Settings/src/com/android/settings/bluetooth/CachedBluetoothDevice.java

*/

@SuppressWarnings("unchecked")

static public boolean createBond(@SuppressWarnings("rawtypes") Class btClass, BluetoothDevice btDevice)

throws Exception {

Method createBondMethod = btClass.getMethod("createBond");

Boolean returnValue = (Boolean) createBondMethod.invoke(btDevice);

return returnValue.booleanValue();

}

/**

* 与设备解除配对 参考源码:platform/packages/apps/Settings.git

* /Settings/src/com/android/settings/bluetooth/CachedBluetoothDevice.java

*/

@SuppressWarnings("unchecked")

static public boolean removeBond(Class btClass, BluetoothDevice btDevice)

throws Exception {

Method removeBondMethod = btClass.getMethod("removeBond");

Boolean returnValue = (Boolean) removeBondMethod.invoke(btDevice);

return returnValue.booleanValue();

}

二、演示:第一次连接蓝牙设备  &  直接与蓝牙设备建立配对

每一种配对模式下,左边的图是演示第一次连接蓝牙设备,右边图是直接与蓝牙设备建立配对。

第一次连接蓝牙设备,即只调用上面的连接方法。

直接与蓝牙设备建立配对,即只调用上面的配对方法。

(测试手机为荣耀9 Android 9系统,不同的手机样式可能会有所不同)

(1)pincode模式

(2)confirm模式

(3)passkey

(4)justwork

            

三、总结

仔细比对上面4种配对模式下的2组图,可以发现:

1、pincode、confirm、passkey三种配对模式,第一次连接蓝牙设备与直接配对蓝牙设备均会弹出配对框。

2、而justwork配对模式,第一次连接蓝牙设备会弹出配对框,而直接配对蓝牙设备不会弹出配对框。

四、补充

下面演示一下,“如果系统蓝牙已经与设备建立了配对,连接设备时就不再进行配对操作”的情况,以pincode模式为例:

五、Demo案例源码地址:

https://gitee.com/lilium_foliage/Android-Bluetooth

蓝牙配对模式 java_【Android】蓝牙开发—— 经典蓝牙配对介绍(Java代码实现演示)附Demo源码...相关推荐

  1. 微信小程序开发之文件上传下载应用场景(附Demo源码)

    微信小程序开发之文件上传下载应用场景(附Demo源码),Demo为小相册应用,源码在附件中,本示例需要腾讯云支持. http://www.henkuai.com/forum.php?mod=viewt ...

  2. Android 小应用之一个activity实现简易手电筒(内附免费源码)

    Android小应用之一个activity实现简易手电筒(内附免费源码) 1.activity代码 2.xml代码 3.资源文件代码 4.源码压缩包(免费) 今天爷爷说他手机更新之后找不到手电筒了,我 ...

  3. 【Android】蓝牙开发—— 经典蓝牙配对介绍(Java代码实现演示)附Demo源码

    目录 前言 一.连接&配对方法介绍 二.演示:第一次连接蓝牙设备  &  直接与蓝牙设备建立配对 三.总结 四.补充 五.Demo案例源码地址: 前言 前面两篇文章[Android]蓝 ...

  4. 13个经典的量化策略涵盖股票期货期权市场(附策略源码)

    原 13个经典的量化策略,涵盖股票.期货.期权市场(附策略源码)https://blog.csdn.net/myquant/article/details/805670021.双均线策略(期货) 2. ...

  5. 分享基于白鹭Egret联合Matchvs开发的足球游戏(附Demo源码)

    Demo简介 本游戏使用Matchvs的实时联网SDK和白鹭Egret开发,并提供了简洁的Demo来展示多人实时联网游戏的开发过程和效果,用于演示多人匹配.数据传输.帧同步.创建房间.获取房间列表.消 ...

  6. Android BlueToothBLE入门(二)——设备的连接和通讯(附Demo源码地址)

    学更好的别人, 做更好的自己. --<微卡智享> 本文长度为7870字,预计阅读12分钟 前言 接<Android BlueToothBLE入门(一)--低功耗蓝牙介绍>上篇, ...

  7. Android 二维码 生成和识别(附Demo源码)

    Posted on 2013-08-25 23:15 泡泡糖 阅读( 20424) 评论( 7) 编辑 收藏 今天讲一下目前移动领域很常用的技术--二维码.现在大街小巷.各大网站都有二维码的踪迹,不管 ...

  8. 基于Java开发一套完整的区块链系统(附完整源码)

    前言 近几年区块链概念越来越火,特别是区块链技术被纳入国家基础设施建设名单后,各大企业也开始招兵买马,对区块链技术进行研究,从各大招聘网站的区块链职位来看,薪资待遇都很不错,月薪30K到80K的都有, ...

  9. Android - 弹幕实现原理(附Demo源码)

    3.核心代码就要来了.在这里有几点是需要说明的. (1)首先播放视频的话这里用到的是VideoView,使用起来也非常简单,先要设置一个视频文件的路径:String uri = "andro ...

最新文章

  1. 【硬件基础】制作直流电源
  2. 钢铁飞龙每个人的机器人_让人震撼的特斯拉超级工厂全自动生产线
  3. HDLBits 系列(26)独热码有限状态机实现的两种方式
  4. VS2010静态编译
  5. 银行系统开发必读的三本书!银行IT开发
  6. 计算几何常用算法的理论基础【转】
  7. Solr实战(二):索引操作
  8. 如何基于Weex实现创新交互体验?手淘开源技术BindingX案例解析
  9. iOS之深入解析类加载的底层原理:类如何加载到内存中
  10. java+mysql性能优化_Java培训实战教程之mysql优化
  11. Jenkins_安装基础软件_入门试炼03
  12. android wear ios表盘,秒杀 Apple Watch,Android Wear 又有 17 款新表盘可以玩啦!
  13. Linux检测内存泄露的脚本
  14. 射频微波芯片设计4:耦合器芯片
  15. 黄金分割法求极值 matlab,利用matlab实现黄金分割法求极值问题-北京理工大学-机械优化设计.doc...
  16. lvds单8转双8芯片_LVDS 数据通道详解 单8 单6
  17. 微信小程序分享至朋友圈功能
  18. Sematic UI框架的学习-button样式(1)
  19. 【Try to Hack】veil-evasion免杀
  20. Fatal signal 11 (SIGSEGV) at 0x00000004 (code=1)

热门文章

  1. 大型网站演变中的负载均衡场景,netty实战pdf中文下载
  2. 问世 20 年,QQ 要推出注销功能
  3. html中把视频作为背景音乐,短视频配音乐怎么做?视频配乐详细方法及技巧干货分享...
  4. 电脑右键没有打开方式怎么办
  5. PAT TOP 1022. Werewolf (35)
  6. 论文解读(MERIT)《Multi-Scale Contrastive Siamese Networks for Self-Supervised Graph Representation Learni
  7. python钻石图_Python图中用平行线制成的钻石
  8. 半角和全角的区别 java_全角和半角的区别是什么
  9. 励志篇--人生激励名言(转)
  10. 看Deepmind机器人尬舞,边玩边学AI技术