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

开发 | 手把手,教你调用小程序蓝牙接口

大致流程: 开启蓝牙适配; 获取蓝牙适配器状态,判断设备蓝牙是否可用; 判断蓝牙适配器可用时开启扫描蓝牙设备和开启获取已连接的蓝牙设备; 如果开启扫描蓝牙设备失败 5 s 后,自动再次开启扫描; 开启扫描蓝牙设备成功后...,开启监听已扫描的设备; 如果已扫描到的新设备,包含特定名称规律,则开始连接该设备; 开启获取已连接蓝牙设备,成功后,连接包含特定名称规律的设备; 两者都无法搜索到相应设备,则等待 5 s,重新搜索;...此方法可自定义过滤一些无效的蓝牙设备,比如 name 为空的,或是产品开发中,需要过滤设备名称不含有特定规律字符串的设备。 6....意外处理 如果扫描到的设备中没有想要连接的设备,可以尝试使用系统蓝牙手动配对,然后再小程序中调用 getConnectedBluetoothDevices() 获取本机已配对的蓝牙设备,然后过滤设备(可能获取多个已配对的蓝牙设备...开发者可以做个页面显示出设备名,用户点击某个设备后,才开始连接。

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

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

    ,在扫描附近可用设备时会对缓存中的数据进行增加或者删除,并将数据显示在可用设备列表mAvailableDevicesCategory,并且程序会实时监听远程设备的状态变化,进行对设备列表的增加或删除。...其实,在进行扫描后,获取的设备列表与可配对设备列表缓存在一起,这部分在介绍扫描处介绍 ii>,设备列表加载到屏幕 现在不论是已配对设备或是附近可用设备均缓存在同一列表,所以两个列表的加载类似,附近可用设备列表显示时会有一个...4>,蓝牙搜索附近可用设备 搜索功能流程如下:首先检测蓝牙是否开启,如果开启检测是否正在搜索,如果正在搜索则不做处理,如果未开启搜索则开启搜索 程序中的设置是如果蓝牙未开启或者正在搜索的话搜索设备按钮不可用...如果没有配对,就进行配对 配对程序如下,在进行配对时首先检查远程设备是否正在配对,如果是,就返回true,如果没有在配对就现将本机的蓝牙配对状态设为true表示正在配对,紧接着停止蓝牙的扫描操作,与远程设备进行配对...,判断远程蓝牙设备是否可以配对以及请求配对是否超时, //如果可以配对就把远程蓝牙设备的配对状态设置为正在配对  if (!

    96130

    Android 蓝牙开发(1)

    针对具有低功耗要求的蓝牙设备,Android 4.3(API 18)中引入了面向低功耗蓝牙的 API 支持。...在首次与远程设备建立连接后,将会自动向用户显示配对请求。设备完成配对后,将会保存关于该设备的基本信息(如 设备名称、MAC 地址)。并且可以使用 Bluetooth API 读取这些信息。...例如:我们可以查询所有已配对的设备,然后使用 ArrayAdapter 向用户显示每台设备的名称: Set pairedDevices = mBlutooothAdapter.getBondedDevices...发现进程通常包含约 12 秒的查询扫描,之后对发现的设备进行扫描,以检索其蓝牙设备的名字。...如果用户响应 NO 或者出现错误,结果代码为 RESULT_CANCELED 如果设备没有打开蓝牙,则启用设备可检测性的时候会自动启用蓝牙。 设备将在分配的时间内以静默方式保持可检测到模式。

    2.5K01

    物联网来了,你还不会蓝牙开发?

    : 如果 android.hardware.bluetooth_le设置为false,可以安装在不支持的设备上使用,判断是否支持蓝牙4.0用以下代码就可以了,如: 对蓝牙的启动关闭操作: 1、利用系统默认开启蓝牙对话框...初始化蓝牙(包含了动态授权蓝牙操作权限、打开蓝牙、判断设备是否支持蓝牙) 如果没有打开蓝牙,当点击打开蓝牙的提示框后,会在 该方法中收到回调信息,打开后则开启扫描,否则则根据你自己的需要进行操作。...BleDevice: 该类的主要是来描述并记录蓝牙的属性和状态,如记录蓝牙名称、蓝牙MAC地址、蓝牙别名(即修改之后的名称)、蓝牙连接状态等。...去处理状态改变,如下: 在此要注意一些细节,比如大多数设备扫描的时候会重复扫描到相同蓝牙设备,必须要进行过滤,开发应用时,必须还要进行产品过滤,比如通过设备的广播包过滤,或者通过设备名过滤都是可以的,...如下(注意:要根据自己产品提供的广播包进行过滤,下图是我们自己产品的): 还有更重要的一个细节就是,在设备添加、移除或者连接状态发生改变时怎么样判断当前蓝牙对象是否是同一个对象(有点拗口),看下图:

    98320

    APP与硬件交互-蓝牙连接测试

    蓝牙连接的开发实现 这里以手机端作为central,以蓝牙设备作为peripheral,蓝牙设备连接的开发实现主要包括以下步骤: 1....APP扫描设备 1)手机端蓝牙不同设置下是否能正常扫描:蓝牙打开、蓝牙关闭; 2)蓝牙设备被扫描到并出现在可连接设备列表的条件:蓝牙设备名称与可连接的设备列表中的名称匹配、设备处于广播状态; 蓝牙设备与可连接的设备列表中名称是否匹配...,是否正常扫描: 一个手机同时扫描多个设备; 多个手机同时扫描同一个设备; 多个手机同时扫描多个设备; 4)扫描过程中取消; 5)扫描结果:扫描超时;未扫描到可连接设备,是否支持重试;扫描失败;扫描成功...连接设备(APP端点击可连接设备列表,连接蓝牙设备) 1)测试蓝牙设备状态变化后,不同状态下是否可正常连接:待机状态、广播状态、已连接状态、蓝牙设备操作中、数据传输中、关机状态; 2)连接结果的处理:连接成功...连接成功后的数据传输 1)功能上,APP端和蓝牙设备端是否符合正常使用需求; 2)性能上,APP与蓝牙设备的交互是否满足需求; (本文只讨论了蓝牙设备连接部分,具体数据传输部分的用例,大家可自行扩展)

    5.5K11

    Android4.42-Settings源码分析之蓝牙模块Bluetooth整体实现(总)

    中完成,接下来就是在BluetoothEnabler.java中进行处理 判断蓝牙是否可用,不可用就把switch设置成不可点击 根据本地蓝牙状态来更新switch状态 注册过滤BluetoothAdapter.ACTION_STATE_CHANGE...、summary---蓝牙可检测性的更新 蓝牙名称--title的更新过程在BluetoothSettings.java中完成,过程如下 获取到本机蓝牙名称 mMyDevicePreference.setTitle...广播,对summary进行更新显示,调用第三步的方法 为preference设置点击监听,更改扫描状态 根据本地蓝牙的扫描状态来显示summary 在显示summary时有两种情况,        i>...,如果本地蓝牙既可以扫描又可以被检测到即处于SCAN_MODE_CONNECTABLE_DISCOVERABLE状态时,则根据可检测性时间的长短来显示,显示内容为:附近所有设备可以检测到+timeout...       ii>,如果是别的状态,则要根据是否已经有已配对的设备进行显示,显示为“已配对设备可见”或者是“对所有设备不可见” 既然说到了可检测性,直接说一说可检测时间,在程序启动时注册了广播BluetoothDiscoverableTimeoutReceiver

    53410

    Kali下的蓝牙设备侦察方法介绍

    Step 3:使用Hcitool扫描蓝牙设备 BlueZ协议栈还具有一些用于扫描蓝牙设备的优秀命令行(cli)工具。这些都位于hcitool中。...现在,让我们尝试使用inquiry (inq) 命令,以获取有关这些设备的更多信息: kali > hcitool inq ? 请注意,它还显示了clock offset以及class。...class指示了它是哪种类型的蓝牙设备,我们可以通过转到Bluetooth SIG站点上的服务发现页来查看代码,以确定它的设备类型。在接下来的内容中,还有更为方便直接的工具可以为我们做到这一点。...从测试结果可以看出,MAC地址为76:6F:46:65:72:67的设备在范围内并且可以访问。...BlueMaho开始扫描可发现的设备,和其他工具一样,它找到了两个蓝牙设备。 ? 在底部窗口中,BlueMaho为我们显示了来自扫描设备的详细信息。

    4.2K30

    低功耗蓝牙(BLE)攻击分析

    随着物联网的快速发展,蓝牙技术也加速了其发展步伐以适应不断增长的市场和用户需求。蓝牙特别兴趣小组(SIG)正不断努力提高蓝牙的传输速度,以让蓝牙技术更好的融合于各种物联网设备当中。...虽然,所有低功耗蓝牙设备开发的主要动机都是为了增强用户体验。但与此同时,我们需要思考的是安全性是否也已同步? 下面,让我们看看影响BLE安全性的三个主要漏洞: 1....GAP使你的设备被其他设备可见,并决定了你的设备是否可以或者怎样与合同设备进行交互。 GAP给设备定义了若干角色,其中主要的两个是:外围设备(Peripheral)和中心设备(Central)。...连接到具有地址adr的远程蓝牙设备。...我们还可以使用char-desc 01 05之类的命令,将显示的句柄过滤到特定范围,该命令将显示从1到5的5个句柄。 ? 找到句柄后,我们使用char-read-hnd 命令从中读取数据。 ?

    4.9K61

    『教程』微信小程序--蓝牙连接开发总结

    3、 判断蓝牙适配器可用时开启扫描蓝牙设备和开启获取已连接的蓝牙设备 4、 如果开启扫描蓝牙设备失败5s后自动再次开启扫描 5、 开启扫描蓝牙设备成功后开启监听已扫描的设备 6、 如果已扫描到的新设备含...FeiZhi名(个人产品需要)的设备则开始连接该设备 7、 开启获取已连接蓝牙设备开启获取设备成功后判断以获取的设备名包含FeiZhi(个人产品需要)字符串的设备则开始连接该设备 8、 开始获取已连接蓝牙设备没有成功获取到已连接的蓝牙设备...this.onBluetoothDeviceFound() 此方法可自定义过滤一些无效的蓝牙设备比如name为空的,个人产品开发中需要过滤devices name 不含有FeiZhi字符串的设备。...,可以尝试使用系统蓝牙手动配对,然后再小程序中调用getConnectedBluetoothDevices() 获取本机已配对的蓝牙设备,然后过滤设备(可能获取多个已配对的蓝牙设备)。...11、手动连接,上文介绍的方法是为了直接自动连接,如果不需要自动连接,可在使用方法getBluetoothDevices() 将会获取到已扫描到的蓝牙设备的列表,可以做个页面显示出设备名,点击该设备开始连接

    7.8K103

    【Android 应用开发】BluetoothAdapter解析

    , 值为21, 查询扫描失效, 页面扫描有效, 该状态下蓝牙模块可以扫描其它设备, 从可见性来说只对已配对的蓝牙设备可见, 只有配对的设备才能主动连接本设备; 可见状态 : int SCAN_MODE_CONNECTABLE_DISCOVERABLE..., 值为23, 查询扫描和页面扫描都有效; 查询扫描功能 : 其它设备可以扫描到本设备 , 指的是可见性可见; 页面扫描功能 : 可以主动扫描其它设备; (3)蓝牙操作接收的广播 开始搜索广播 : String...权限; (2)是否在扫描中 public boolean isDiscovering(); 作用 : 是否正在搜索; 返回值 : 如果设备正在搜索, 返回true; 如果设备没有进行蓝牙搜索, 返回false...(name)和唯一的识别码(uuid)来创建一个SDP服务, 远程蓝牙设备可以根据唯一的UUID来连接这个SDP服务器; 参数 : name : SDP服务器名称, UUID, SDP记录下的UUID;...); startActivityForResult(intent, REQUEST_OPEN_BT_CODE); //会以Dialog样式显示一个Activity , 我们可以在onActivityResult

    2.2K40

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

    4:本机蓝牙设备的相关设置,包括本机蓝牙名称,蓝牙对附近可用设备的可见性,蓝牙对已经配对设备的可见性,当检测到蓝牙开启时会添加一个本机蓝牙信息的Preference,在方法updateContent中完成添加或者移除...不同Category的Preference的添加和修改与蓝牙开关状态、是否有已经配对的蓝牙设备以及附近是否有可用的蓝牙设备。 蓝牙界面的布局暂且介绍到这儿,有问题的可博文下留言,我再进行补充。...在此进行强调,只要是对对话框中的编辑框进行了编辑,不论内容是否修改(比如删除之后又添加上一模一样的),均会发送蓝牙名称已经更改的广播。...,int型值,大小为20,表示对任何设备不可见,且无法进行扫描功能 SCAN_MODE_CONNECTABLE,int型值,大小为21,表示只对已经配对的设备可见,可以扫描其他设备 SCAN_MODE_CONNECTABLE_DISCOVERABLE...,int型值,大小为23,表示对附近所有设备可见,可以扫描其他设备。

    1.6K20

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

    所以类中我们定义的服务UUID只是中间xxxx四位即可,写了一个函数来直接生成对应的UUID 代码中使用BLE蓝牙相关Api时,Android Studio会经常提示要先判断是否有蓝牙权限,所以这里也是把蓝牙是否做过初始化...,和判断是否有相关的蓝牙权限写了一个函数调用 蓝牙权限 检测是否有相关权限 调用蓝牙API时先检测是否有对应的权限 像扫描设备,连接设备时需要知道返回的结果,用到了回调,那类中直接就是传入相磁的...如下面这个扫描蓝牙设备函数 参数为ScanCallback ScanFragment中定义ScanCallback,实现onScanResult中发送意图 点击扫描设备直接调用类中函数并传入回调函数...startScan(filter, builder.build(), scancallback) //过滤特定的 UUID 设备 //bluetoothAdapter...fun getAdvertiseData(): AdvertiseData { return AdvertiseData.Builder() //设置广播包中是否包含设备名称

    1.2K30

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

    因此,旧的蓝牙测距技术,在资产跟踪、无钥匙进入和点火系统等应用方面更具挑战性,需要一种更复杂、更安全和标准化的方法,以产生更准确、更可靠的结果。...这可以在 iPhone、Android 和其他具有 Windows 和 Linux 等其他操作系统的设备上扩展“查找”网络。...基于决策的广告过滤允许扫描设备使用在主广告通道上接收的数据包的内容来决定是否应该扫描辅助通道上的相关数据包,从而减少在辅助通道上扫描可能不包含与应用程序相关的 PDU 的数据包所花费的时间,从而提高扫描效率...3、监控广告商 观察者设备的主机组件可以指示蓝牙 LE 控制器过滤重复的广告数据包。...这提高了主机的效率,但缺点是,当情况要求观察者设备现在应尝试连接到设备时,主机无法知道设备是否仍在范围内。这可能会导致观察者浪费能源对先前发现的不再在范围内的设备执行高占空比扫描。

    44610

    Android 低功耗蓝牙开发 (扫描过滤、自定义服务与特性)Kotlin版

    一、扫描过滤   首先看看扫描过滤的实现,先说说这个功能的使用场景,当附近蓝牙设备很多时,快速找到想要连接调试的设备,这是这个功能的初衷,同时在扫描蓝牙时可以过滤掉一些没有名字的设备,信号强度低的设备,...例如我上次滑动到50,然后我关闭了弹窗,当我再次打开弹窗时应该也是要显示50的,那么对于本地缓存ui的控制效果演示图如下图所示: 下面就可以对扫描到的设备进行操作了,因为扫描过滤的设置已经没有问题了...⑤ 扫描设备过滤   开发是循序渐进的,逻辑很重要,先想清楚逻辑再进行编码这会让你事倍功半。下面就是对扫描的结果进行处理,针对于一些结果可以不用添加到设备列表中,因此就不会显示了。...在MainActivity中增加如下代码: //当前扫描设备是否过滤设备名称为Null的设备 private var isScanNullNameDevice = false...,点击之后就可以显示扫描过滤弹窗了。

    1.2K10

    Android 低功耗蓝牙开发 (扫描过滤、自定义服务与特性)Kotlin版

    一、扫描过滤   首先看看扫描过滤的实现,先说说这个功能的使用场景,当附近蓝牙设备很多时,快速找到想要连接调试的设备,这是这个功能的初衷,同时在扫描蓝牙时可以过滤掉一些没有名字的设备,信号强度低的设备,...例如我上次滑动到50,然后我关闭了弹窗,当我再次打开弹窗时应该也是要显示50的,那么对于本地缓存ui的控制效果演示图如下图所示: 下面就可以对扫描到的设备进行操作了,因为扫描过滤的设置已经没有问题了...⑤ 扫描设备过滤   开发是循序渐进的,逻辑很重要,先想清楚逻辑再进行编码这会让你事倍功半。下面就是对扫描的结果进行处理,针对于一些结果可以不用添加到设备列表中,因此就不会显示了。...在MainActivity中增加如下代码: //当前扫描设备是否过滤设备名称为Null的设备 private var isScanNullNameDevice = false...,点击之后就可以显示扫描过滤弹窗了。

    1.3K30

    Android低功耗蓝牙BLE开发小结

    特征还可以包括一个或多个描述符(Descriptor)——与所拥有的特征相关的元数据或配置标识。 GATT将这些服务分组以封装设备的行为,并根据GATT功能描述用例,角色和一般行为。...BluetoothGatt:该类提供了蓝牙的GATT功能,以实现与BLE设备的通信。如连接、发现服务、读写特征、设置通知等。...使用下面的方法获取到该设备的服务的UUID列表,根据该列表对设备进行过滤。...2另外,在API 21之后,也引入了android.bluetooth.le包及ScanRecord等类,可以直接获取服务的UUID列表,更方便地处理扫描结果。...128bit服务UUID列表 0x07 完整的128bit服务UUID列表 0x09 完整的设备名称 0xFF 厂商特定数据 这是一个小米手环的广播包数据的例子:0x02, 0x01,

    5.7K561

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

    本系列笔记概述 蓝牙传输优势:功耗低,传输距离还可以; 蓝牙聊天室案例 Android中蓝牙设备的使用 蓝牙权限(本文的讲解内容之一) 蓝牙功能开启(本文的讲解内容之一) 搜索蓝牙设备(本文的讲解内容之一...调用isEnable()以检查当前是否已启用蓝牙; 如果此方法返回false,则表示蓝牙处于停用状态; 要请求启用蓝牙,将通过ACTION_REQUEST_ENABLE向系统设置 发出启用蓝牙的请求...——发现设备 发现设备:startDiscovery() 该进程为异步进程, 该方法会立即返回一个布尔值,指示是否已成功启动发现操作; 发现进程通常包含约12秒钟的查询扫描 广播接收: //...mBluetoothAdapter.startDiscovery();//异步函数 } }); 运行之后点击“已配对设备”按钮,显示已配对蓝牙设备的信息: ?...、扫描完毕时两个状态,做对应处理): 点击“扫描附近蓝牙设备”按钮时,开始一轮新的扫描: mScanButton.setOnClickListener(new View.OnClickListener

    6.6K30

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

    运行效果图 [在这里插入图片描述] 扫描蓝牙设备 [在这里插入图片描述] 如果你对上面的效果图感觉满意,那么可以往下面看了,不满意就不浪费你查看其它文章的时间了。...,它允许你的返回值一致的判断进行直接赋值,比如这里判断设备名称为空则显示无名二字,不为空则显示设备名,这两个返回都是String类型,而tvName.text设置的就是String类型,所以就有了上面的简洁代码...当然不是,首先要看你的设备是否支持蓝牙,其次蓝牙是否打开,最后才是扫描蓝牙 于是里面的代码就可以这样写 /\*\* \* 扫描蓝牙 \*/ fun scanBluetooth...= null) { //过滤掉设备名称为null的设备 list.add(device) } } mAdapter...= null) { //过滤掉设备名称为null的设备 list.add(device) }

    4.9K10
    领券