Android 蓝牙连接,蓝牙配对,自动连接蓝牙

article/2025/10/8 11:19:55

趁热打铁,这篇文章写于刚写完蓝牙配对Demo,主要介绍配对蓝牙的具体编码步骤,开整!
首先上效果图,看一下是否符合读者现在的需求
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
主要核心代码没有想象中那么复杂,首先要去申请一下权限,不仅需要蓝牙权限,还需要位置权限哦

  1. 清单文件中
    <uses-permission android:name="android.permission.BLUETOOTH"/><uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
  1. 代码中动态获取,这里主要获取位置权限,目前蓝牙权限不需要动态申请,如果某年之后需要动态申请与位置权限相似添加上即可
/*动态申请权限操作*/private boolean isPermissionRequested = false;public void requestPermission() {if (Build.VERSION.SDK_INT >= 23 && !isPermissionRequested) {isPermissionRequested = true;ArrayList<String> permissionsList = new ArrayList<>();String[] permissions = {//在这里加入你要使用的权限Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION};for (String perm : permissions) {if (PackageManager.PERMISSION_GRANTED != checkSelfPermission(perm)) {permissionsList.add(perm);// 进入这里代表没有权限.}}if (!permissionsList.isEmpty()) {String[] strings = new String[permissionsList.size()];requestPermissions(permissionsList.toArray(strings), 0);}}}

权限就如入场券,有了权限才能大胆进行其他操作

蓝牙操作的主要核心都是围绕蓝牙设备适配器 BluetoothAdapter 来进行的,想要获取到蓝牙设备适配器,首先要先创建蓝牙设备管理器 BluetoothManager

 BluetoothManager bluetoothmanger = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);BluetoothAdapter bluetoothadapter = bluetoothmanger.getAdapter();

拿到蓝牙设备适配器你就可以 “为所欲为” 了,具体怎么个任性法呢,通过这个适配器你可以判断当前设备是否支持蓝牙,可以判断当前设备蓝牙是否开启,可以开启关闭蓝牙,可以进行蓝牙搜索与取消搜索,等等…

具体表现在:

bluetoothadapter == null 当前设备不支持蓝牙,反之
bluetoothadapter.getName() 本机蓝牙名称
bluetoothadapter.getAddress() 本机蓝牙地址
bluetoothadapter.getBondedDevices() 获取当前设备蓝牙已经连接的设备信息
bluetoothadapter.isEnabled() 蓝牙是否开启
bluetoothadapter.enable() 开启蓝牙
bluetoothadapter.disable() 关闭蓝牙
bluetoothadapter.isDiscovering() 当前蓝牙是否正在进行搜索
bluetoothadapter.startDiscovery() 开启搜索附近蓝牙设备
bluetoothadapter.cancelDiscovery() 关闭搜索附近蓝牙设备

其实上面的几个方法就能完成前面的效果图功能了,当然还有当前设备已连接的数据和附近设备的数据呢,别急,他来了!

首先上述方法中的 bluetoothadapter.getBondedDevices() 方法为获取当前设备,他返回的是一个 Set 集合,其中的参数类型为 BluetoothDevice 字面意思为 蓝牙设备,这就已经明示了,这个集合装的是 一条条的设备信息,既然是设备信息,怎么获取到当前设备的名字和地址呢?
在这里插入图片描述
是的,就是这么直接, getName() 和 getAddress() 方法就能获取相应信息

以上是获取当前设备已连接信息,那怎么获取附近设备信息呢?

首先考虑的一点就是,要想设备与其他设备进行交流该用什么方式呢,你直接在代码里写方法,肯定是与其他设备联系不到的,这里就用到了广播,通过广播的形式去找各个设备的蓝牙信息,如果找到了就把他的蓝牙信息返回过来,我们拿到了蓝牙信息中的地址就能去相应的蓝牙设备进行交流,完结,撒花!

/***注释:* 广播,寻找其他蓝牙设备*/private BroadcastReceiver searchDevices = new BroadcastReceiver() {public void onReceive(Context context, Intent intent) {String action = intent.getAction();if (action.equals(BluetoothDevice.ACTION_FOUND)) { //found deviceBluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);if (device.getName() != null){//没有名称时不添加String str = "名称: "+device.getName() + " 地址:" + device.getAddress();System.out.println("BlueTooth搜索到的设备:"+str);//如果List中没有str元素则返回-1if (myEveryList.indexOf(str) == -1){// 防止重复添加myEveryList.add(device); // 获取设备名称和mac地址}}} else if (action.equals(BluetoothAdapter.ACTION_DISCOVERY_STARTED)) {Toast.makeText(getBaseContext(), "正在扫描,请耐心等待", Toast.LENGTH_SHORT).show();tv_now_search.setVisibility(View.VISIBLE);//显示等待标识lv_every.setVisibility(View.GONE);//列表先隐藏掉tv_fu.setText("附近的蓝牙设备("+myEveryList.size()+")");} else if (action.equals(BluetoothAdapter.ACTION_DISCOVERY_FINISHED)) {tv_now_search.setVisibility(View.GONE);//隐藏等待标识lv_every.setVisibility(View.VISIBLE);//列表显示Toast.makeText(getBaseContext(), "扫描完成,点击列表中的设备来尝试连接", Toast.LENGTH_SHORT).show();tv_fu.setText("附近的蓝牙设备("+myEveryList.size()+")");lv_every.setAdapter(new MyFuListAdapter(myEveryList));}}};

以上就是蓝牙配对的编码过程,下面介绍一下如何进行蓝牙配对与取消配对,以上操作的基础都是你要有对应蓝牙设备信息,就是上述的BluetoothDevice

蓝牙配对:

  Method method = BluetoothDevice.class.getMethod("createBond");method.invoke(myEveryList.get(i));//这里面的参数就是BluetoothDevice  

取消配对

  Method method = BluetoothDevice.class.getMethod("removeBond");method.invoke(myNowList.get(i));//这里面的参数就是BluetoothDevice 

好了,将上述文章的相关方法拼凑起来就构成了从 开启关闭蓝牙、搜索蓝牙设备、进行设备连接、进行取消连接的一条龙操作。

源码也发布到资源里面去了, 1 C币下载! 壹 C币下载! 下载地址


http://chatgpt.dhexx.cn/article/mFwt0KRV.shtml

相关文章

蓝牙配对方式

4种蓝牙配对方式&#xff0c;通俗地说&#xff1a; 1.Numeric Comparison&#xff1a;配对双方都显示一个6位的数字&#xff0c;由用户来核对数字是否一致&#xff0c;一致即可配对。例如手机之间的配对。 2.Just Works&#xff1a;用于配对没有显示没有输入的设备&#xff0c;…

蓝牙的配对和连接的建立过程

蓝牙的建立过程是一个复杂的过程&#xff0c;即使有过相当一段工作和使用经验的人&#xff0c;如果不仔细去了解还是理解不全。 平时我们用蓝牙耳机听音乐&#xff0c;和不同的设备共享文件&#xff0c;打电话等&#xff0c;都有一个配对--连接--传输数据的过程。 配对&#…

蓝牙|标准蓝牙配对方式

蓝牙:BlueTooth,是一种无线技术标准&#xff0c;可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换&#xff0c;蓝牙又分为传统/标准蓝牙和BLE蓝牙。 在了解配对方式前&#xff0c;先了解设备的IOCapacity,IOCapcaity是由设备InputCapacity和OutputCapacity组合而成…

蓝牙学习八(配对与绑定)

1.简介 Paring&#xff08;配对&#xff09;和Bonding&#xff08;绑定&#xff09;是实现蓝牙射频通信安全的一种机制&#xff0c;有两点需要注意&#xff1a; Paring/bonding实现的是蓝牙链路层的安全&#xff0c;对应用层来说是完全透明的。也就是说&#xff0c;不管有没有…

蓝牙 - 配对和连接

什么是蓝牙配对&#xff1f; 蓝牙配对是为了连接设备的一种信息注册方法。通过在设备之间注册设备信息&#xff08;配对&#xff09;&#xff0c;它们可以连接。要使用一个蓝牙设备&#xff0c;你必须首先将其与另一个蓝牙设备配对。配对有点像交换电话号码。类似于你必须与你…

Java 接口回调机制

日常开发中接口回调机制无处不在&#xff0c;刚开始用时却总是晕晕乎乎&#xff0c;网上也有很多相关的文章介绍&#xff0c;但总是没有看得太明白&#xff0c;今天端午假期正好花时间来总结一下&#xff0c;我们按如下顺序介绍 一、什么是接口回调 在应用开发中&#xff0c;接…

Android 接口回调

Android接口回调讲解 回调定义回调机制回调意义接口回调的实现步骤参考 网上看了一堆&#xff0c;感觉有点零散&#xff0c;我自己总结一下。 回调定义 正式定义 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针&#xff08;地址&#xff09;作为参数传递给另一…

理解Java接口回调

初步认识&#xff1a; 实现步骤&#xff1a; 1、创建一个回调接口。 2、创建一个回调对象实现回调接口。 3、创建一个控制器对象&#xff0c;将回调对象作为参数传给控制器对象&#xff0c;控制器对象负责检查某个场景是否出现或某个条件是否满足&#xff0c;当满足时&#…

Android 自定义接口回调

1.定义一个简单的接口回调 下面是定义一个简单的接口&#xff0c;实现的功能是&#xff0c;设置名字爱好&#xff0c;并且返回给主 Activity。 1.1 自定义一个接口 定义一个名字为 setNameListener() 的接口类&#xff1a; /*** author: wu* date: on 2018/10/23.* describ…

接口回调(笔记

接口回调讲解 回调定义回调机制回调意义接口回调的实现步骤参考 网上看了一堆&#xff0c;感觉有点零散&#xff0c;我自己总结一下。看评论区说存在很多问题&#xff0c;我读了一下&#xff0c;雀氏存在一些&#xff0c;非常感谢批评指正&#xff0c;我重新写一写。&#xff0…

接口回调与方法回调

1.1 接口回调 简介&#xff1a; 笔者查阅了大量资料&#xff0c;接口回调没有定义&#xff0c;可以理解为是一种设计思想。 其本质是将实现接口的类通过向上转型至接口类型&#xff0c;通过传入不同的子类&#xff0c;实现调用相应的子类重写的父类接口方法。 详情见&#xff…

Java接口回调详解

一.产生接口回调的场景 在现实生活中,产生接口回调的场景很简单,比如我主动叫你帮我做一件事,然后你做完这件事之后会通知我,"通知我"这个动作就是接口回调的动作.接口回调重在理解思就好.再举个例子用于下面的代码演示,老师让学生做课堂练习,学生做完练习后并告诉老…

java 接口回调的例子_java接口回调

java的接口回调原理网上已经有很多生动形象的例子说明了,在此总结一下个人的理解:类A调用类B的方法b(),类B再回调类A的方法a(),其中方法a()是定义在接口中的,由类A来实现。这是一个双向调用的过程,用下面的类图来加以说明。 Callback.png 1. 创建一个接口: public inter…

巧妙理解接口回调

接口回调目的和用法解析 一、为什么会有接口回调&#xff1f;什么是接口回调&#xff1f; 其实这两个问题是一个问题&#xff0c;知道了接口回调的原理自然就知道了为什么会有这么个东西。我们知道java中接口是不可以直接创建实例的&#xff0c;那么问题来了&#xff0c;假如…

[Java]什么是接口回调?

什么是接口回调&#xff1f; 1&#xff0e;接口回调是什么[2]&#xff1f; 接口回调是指&#xff1a;可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量&#xff0c;那么该接口变量就可以调用被类实现的接口的方法。实际上&#xff0c;当接口变量调用被类实现…

自定义动画animate

开发工具与关键技术&#xff1a;VS&#xff0c;MVC 作者&#xff1a;陈梅 撰写时间&#xff1a;2019年6月2 日 所有代码来源与老师教学 这次分享一个好玩的自定义动画效果&#xff0c;这次还是用jQuery做出来的小功能。这次我们先直接看最后已经布局好的效果。 把所想写的内容…

Android自定义动画专题一

Android自定义动画 在目前的移动端产品中&#xff0c;不管是app还是网页一个好看酷炫的页面总是会第一时间吸引人的眼球&#xff0c;那么对于android开发人员来说&#xff0c;要想实现一个好看的页面必然需要掌握自定义控件以及自定义动画这门技术。 1.Android原生动画 Androi…

百度地图添加自定义图标标注以及自定义动画效果

百度地图添加自定义图标标注以及自定义动画效果 1、添加自定义图标标注2、添加自定义动画效果2.1、标注对象marker的构成2.2、自定义动画效果实现过程2.3、最终实现效果 上次写的是添加自定义图标&#xff0c;但是用的是添加自定义覆盖物方法&#xff0c;结果不支持点聚合&…

Vue中如何进行自定义动画与动画效果设计

Vue中如何进行自定义动画与动画效果设计 在Vue中&#xff0c;动画效果是非常有用的&#xff0c;它可以使用户界面变得更加生动、有趣&#xff0c;从而提高用户体验。Vue提供了一套非常方便的动画系统&#xff0c;使得我们可以非常容易地实现动画效果。 在本文中&#xff0c;我…

Android 自定义动画(实现类似分享动画)

最近在开发app中,要实现点击进入分享动画页面,然后照着每个Item的功能,来实现各自的功能 效果图如下: 首选自定义动画Activity import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import andr…