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

Android蓝牙详析 | 经典蓝牙通讯架构

连接设备 蓝牙通讯机制建立在socket上; 要在两台设备上创建连接,需要实现服务器端和客户端机制 一般通讯过程: 在服务端等待客户端的连接请求, 有连接请求后连接, 连接成功后有一个socket...(也即套接字), 通过socket套接字得到IO流, 往输入流中读数据, 或者往输出流中写数据, 即可以实现两台设备之间的通讯; 服务器设备和客户端设备分别获得需要的BluetoothSocket...; 上面说过, 要在两台设备上创建连接, 需要实现服务器端和客户端机制, 其中有一台需要开放服务端的套接字, 另外一台作为客户端, 需要通过蓝牙的Mac地址向服务端发送连接请求; 当我们的服务端和客户端在同一个频道上的话...除非要接受更多连接,否则调用close()结束该次通信; 设置客户端 发起与远程设备(保持开放的服务器套接字的设备)的连接; 首先要获取表示该远程设备的BluetoothDevice对象, 这个对象是通过蓝牙

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

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

    概念 如果是老用户了,那么就应该知道曾经蓝牙设备是一个高耗电的部件。根本不可能长时间开启。而在蓝牙4.0版本之后,蓝牙通讯,耗电,抗干扰都得到了显著提升。同时蓝牙成本也得到了降低。...然后才有了我们现在的各种穿戴设备例如手环,蓝牙耳机,蓝牙电子秤,蓝牙音箱等等的爆发。 同时,其他工业或者外置设备也都开始大量支持蓝牙通讯。因为能耗和成本降低了。...以前开发蓝牙通讯,还需要实现蓝牙配对。需要主动跳转到手机设置界面进行PIN码配对,然后配对通过之后才能进行蓝牙链接。...以上术语的介绍来源于Android官网 2.2 通讯过程 假如我们有一个蓝牙外置设备(Device),然后有一个支持蓝牙的移动设备(Phone)。两者之间的通讯方式步骤是: Device 开启蓝牙。...下面我也将按照这个通讯过程进行介绍。 3.开发 基于我的使用情况,从无到有的介绍,完整的蓝牙开发配置过程。

    4.5K20

    iOS开发之蓝牙通讯

    iOS开发之蓝牙通讯 一、引言         蓝牙是设备近距离通信的一种方便手段,在iPhone引入蓝牙4.0后,设备之间的通讯变得更加简单。...相关的蓝牙操作由专门的CoreBluetooth.framework进行统一管理。...通过蓝牙进行通讯交互分为两方,一方为中心设备central,一方为外设peripheral,外设通过广播的方式向外发送信息,中心设备检索到外设发的广播信息,可以进行配对连接,进而进行数据交互。...CBCentralManagerStateUnsupported, //未授权蓝牙使用 CBCentralManagerStateUnauthorized, //蓝牙关闭 CBCentralManagerStatePoweredOff...willRestoreState:(NSDictionary *)dict; 三、外设CBPeripheralManager         从上面我们知道,中心设备是用来扫描周围的外设,两台设备的通讯

    1.2K20

    MASA MAUI Plugin 安卓蓝牙低功耗(二)蓝牙通讯

    介绍 上一篇文章我们实现了蓝牙BLE的扫描功能,这里我们继续实现通讯功能。...换句话说我们可以通过这个特征给设备发送数据,而且可以通过订阅该特征值变化事件,来获取设备通过蓝牙的返回信息。与 BLE 设备交互的第一步便是连接到 GATT 服务器。...写入蓝牙指令 官方文档示例中没有给出特征值写入的示例,这里我们自己实现。...想对蓝牙进行写入操作,当然需要先找到蓝牙设备的服务id和特征值id才行。...打开蓝牙监听 以上一系列操作我们已经可以拿到具体的这个设备的服务和具体的特征值了,对于BLE设备,大部分都是通过Notify属性进行广播的。

    2.1K20

    微信小程序蓝牙开发,微信小程序 蓝牙通讯

    客户的需求如下:通过微信小程序控制蓝牙ble设备(电子面膜),通过不同指令控制面膜的亮度和时间。...01.首先看下客户的ble设备服务文档:(本部分需要有点蓝牙基础,在调试过程中可以用安卓软件nRF Connect软件来执行测试命令)UUID名称特征属性说明FFF0灯控服务FFF1灯控命令WriteAPP...02.现在开始进行开发小程序端:    0201.蓝牙适配器开启wx.openBluetoothAdapter({  success: function (res) {    //开启成功,继续搜索操作...  },  fail:function(){    //开启失败,后台监听状态处理,注意:在安卓系统中手动开启蓝牙可以监听,苹果在设置中开启监听不到,必须使用快捷图标开启(算是小程序蓝牙之坑)    wx.onBluetoothAdapterStateChange...api        //但是如果你的服务uuid需要你提供硬件mac地址交互的话需要做兼容处理        //例如你可以要求蓝牙方在广播数据中保存硬件mac地址.

    40910

    HTML5中调用手机蓝牙功能方案讨论

    对象来请求访问并控制蓝牙设备。...这些插件可以在应用的原生层实现蓝牙功能,并通过JavaScript API暴露给开发者。例如,在Cordova中,你可以使用cordova-plugin-ble-central插件来访问蓝牙设备。...方案三:使用WebUSB API(对于USB蓝牙适配器):如果你的设备是通过USB蓝牙适配器连接到手机的,并且你的浏览器支持WebUSB API,你可以尝试使用WebUSB API来访问这个适配器。...但请注意,WebUSB API主要用于访问USB设备,而不是直接访问蓝牙设备。方案四:使用原生应用作为中介:如果你不能直接在网页上实现蓝牙通信,你可以考虑开发一个原生应用作为中介。...方案六:有些第三方服务可能提供了在网页上访问蓝牙设备的功能。这些服务通常是通过一个中间服务器来实现的,你的网页与这个服务器通信,服务器再与用户的蓝牙设备通信。

    46310

    iOS简易蓝牙对战五子棋游戏设计思路之一——核心蓝牙通讯类的设计

    iOS简易蓝牙对战五子棋游戏设计思路之一——核心蓝牙通讯类的设计 一、引言     本系列博客将系统的介绍一款蓝牙对战五子棋的开发思路与过程,其中的核心部分有两个,一部分是蓝牙通讯中对战双方信息交互框架的设计与开发...本篇博客将介绍游戏中蓝牙通讯类的设计思路 二、设计通讯类的核心想法    在前篇的一篇博客中,我们有详细的介绍iOS中蓝牙4.0技术的应用与系统框架CoorBluetooth.framework中提供的编程接口的用法...在使用蓝牙进行应用间通讯交互时,必须有一方作为中心设备,有一方作为外围设备。...服务是中心设备与外设机型通讯的功能标识,然而具体的通讯媒介则是由服务中的特征值来完成的,一个服务也可以提供多个特征值。可以这样理解,特征值是两设备进行蓝牙通讯的最小通讯单元,是读写数据的载体。    ...由上面分析可知,游戏中的房主正是充当蓝牙通讯中的外设,它将广播广告告知周围设备自己的存在。而游戏中的加入者则是充当着蓝牙通讯中的中心设备,扫描到周围的游戏房间后进行连接加入,开始游戏。

    1.2K60

    Android蓝牙开发(二)之蓝牙配对和蓝牙连接

    上篇文章:https://blog.csdn.net/huangliniqng/article/details/82185983 讲解了打开蓝牙设备和搜索蓝牙设备,这篇文章来讲解蓝牙配对和蓝牙连接 1....蓝牙配对    搜索到蓝牙设备后,将设备信息填充到listview中,点击listiew则请求配对   蓝牙配对有点击配对和自动配对,点击配对就是我们选择设备两个手机弹出配对确认框,点击确认后配对  ...同样的,如果我们想要配对的设备取消配对 只需要将creatBond改为removeBond 2.蓝牙连接:   配对成功之后,就可以进行蓝牙连接了,蓝牙连接操作比较耗时,可以在一个线程中进行: 调用自己定义的...mBluetoothSocket.isConnected()) { mBluetoothSocket.connect(); } 比如我们让其连接成功后,跳转到消息通讯界面,界面中有edittext...在这里我们需要注意的是,当连接成功时,我们要让被连接的那部手机也自动跳转到聊天页面,所以我们要开启蓝牙服务端等待设备的连接,当设备连接时,自动跳转页面,蓝牙服务端代码如下: /** * 开启服务端

    4.4K20

    Android蓝牙开发(二)之蓝牙配对和蓝牙连接

    上篇文章:https://blog.csdn.net/huangliniqng/article/details/82185983 讲解了打开蓝牙设备和搜索蓝牙设备,这篇文章来讲解蓝牙配对和蓝牙连接 1....蓝牙配对 搜索到蓝牙设备后,将设备信息填充到listview中,点击listiew则请求配对 蓝牙配对有点击配对和自动配对,点击配对就是我们选择设备两个手机弹出配对确认框,点击确认后配对...: 配对成功之后,就可以进行蓝牙连接了,蓝牙连接操作比较耗时,可以在一个线程中进行: 调用自己定义的 connect(listdevice.get(position)); 同样传递的参数也是设备device...mBluetoothSocket.isConnected()) { mBluetoothSocket.connect(); } 比如我们让其连接成功后,跳转到消息通讯界面,界面中有edittext...输入框并显示当前连接的设备名称如图所示: 在这里我们需要注意的是,当连接成功时,我们要让被连接的那部手机也自动跳转到聊天页面,所以我们要开启蓝牙服务端等待设备的连接,当设备连接时,自动跳转页面,蓝牙服务端代码如下

    2.8K20

    蓝牙协议详解(蓝牙是什么)

    蓝牙协议分析(1)基本概念  蓝牙4.1,是一个大杂烩:BR/EDR沿用旧的蓝牙规范;LE抄袭802.15.4;AMP直接使用802.11。...1.蓝牙技术的概述 1.1 两种蓝牙技术:经典蓝牙(检称 BT)和低功耗蓝牙(简称BLE)  蓝牙协议包括两种技术:经典蓝牙(简称BT)和低功耗蓝牙(简称BLE)。...因此在硬件模组上又有单模蓝牙和双模蓝牙的区别。在智能手机中的蓝牙就是双模蓝牙,它可以支持经典蓝牙和低功耗蓝牙。...双模蓝牙:支持低功耗蓝牙和经典蓝牙的所有功能 低功耗蓝牙:仅支持低功耗蓝牙不支持经典蓝牙 经典蓝牙: 仅支持经典蓝牙不支持低功耗蓝牙 1.1.1 经典蓝牙(BT): BR技术 、EDR技术 、AMP技术... 经典蓝牙是正宗的蓝牙技术。

    7.4K12

    Android蓝牙开发(三)之蓝牙通信

    上篇文章:https://blog.csdn.net/huangliniqng/article/details/82187966 上篇文章我们讲解了,蓝牙配对和蓝牙连接相关知识,还没有了解的朋友可先移步上篇文章...1.蓝牙通信简介   无论是做Java还是Android开发的朋友肯定都比较熟悉Socket的连接,在java中通信用的是Socket,同样的蓝牙之间通信(这里说的是经典蓝牙)方式也是Socket,只不过是...BluetoothSocket,同样的也要有Socket服务端和客户端 2.蓝牙通信消息接收端 设备连接后,跳转到通讯界面,首先我们要在通讯界面开启消息接收端服务,同样的我们要在一个线程中开启 得到bluetooth...文件保存成功")); } } } catch (IOException e) { e.printStackTrace(); } } 3.蓝牙通信发送文本消息...BltContant.SEND_TEXT_SUCCESS)); } catch (IOException e) { e.printStackTrace(); } } 4.蓝牙通信发送文件

    2.1K20

    Android蓝牙开发—经典蓝牙和BLE(低功耗)蓝牙的区别

    最近在做蓝牙开发,刚接触时傻傻的分不清经典蓝牙和低功耗蓝牙的区别,一直用开发低功耗蓝牙的方法去连接经典蓝牙设备,最后当然是一直连接不上了。在此记录下经典蓝牙和低功耗蓝牙的区别和联系。...Android中的蓝牙 说到Android中的蓝牙,大家听到的可能有蓝牙1.0、蓝牙2.0、蓝牙3.0、蓝牙4.0之类的以数字结尾的蓝牙版本号,而实际上,在最新的标准中,已经不再使用数字版本号作为蓝牙版本的区分了...这里提到的低功耗蓝牙也会有很多人会误解为就是蓝牙4.0,但是完整的蓝牙4.0规范中实际上包括有经典蓝牙和低功耗蓝牙这两个部分,大家看看如下这张分类表就能够明白这其中的关系了。...如表中所述,现在的蓝牙实际上分为了三类:单模、双模和经典。那么,最官方的蓝牙版本称呼就是,单模蓝牙、双模蓝牙和经典蓝牙。 在这其中,最前沿的当属单模蓝牙了,也就是低功耗蓝牙。...这个蓝牙标准和经典蓝牙区别极大,在最初甚至考虑过加入WIFI阵营,但是因为蓝牙阵营这边条件较为优厚(比如授权费用极低)才并入了蓝牙标准。 那么,低功耗蓝牙和经典蓝牙的区别究竟在哪里呢?

    4.7K21

    Android 蓝牙开发(2)——低功耗蓝牙

    低功耗蓝牙官方文档 本文章是参考官网,然后加入自己实践中的理解完成!没有看上一篇的读者,可以先阅读一下前一篇,这是一个系列。...(API 18 )引入了低功耗蓝牙,应用可以查询周围设备、查询设备的服务、传输信息。...目前所有低功耗应用配置文件基本都是基于 GATT Bluetooth SIG (蓝牙技术联盟) 是为低功耗设备定义了许多配置文件。配置文件是设备在特定应用程序中的工作方式的规范。...确定了两个设备建立连接后如何进行相互通信 BLE 权限 应用在使用蓝牙设备的时候必须要声明蓝牙权限 BLUETOOTH 需要这个权限才可以进行蓝牙通信,例如:请求连接、接受连接、和传输数据。...如果还需要发现或者操作蓝牙设置,则需要声明 BLUETOOTH_ADMIN 权限。使用这个权限的前提是要有 BLUETOOTH 权限。

    2.3K10

    Android蓝牙通信之搜索蓝牙设备

    一:注意事项 1:android6.0使用蓝牙时,需要开启gps定位权限,不然无法搜索其它蓝牙设备。 二:权限 1:权限配置 <!...android.bluetooth.BluetoothAdapter 是蓝牙开发用得比较多,并且比较重要的一个类,可以设备蓝牙名称,打开,关闭,搜索等常规操作。...1 蓝牙打开,以及搜索 蓝牙打开和关闭信息使用BluetoothAdapter.ACTION_STATE_CHANGED去接收广播 BluetoothAdapter mBluetoothAdapter...而是安卓6.0的bug,凡是遇到蓝牙适配问题的,请同时打开蓝牙和定位,再去配对,基本90%都没有问题了。...demo代码下载:github 总结 以上所述是小编给大家介绍的Android蓝牙通信之搜索蓝牙设备,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。

    3.1K31

    Android 蓝牙开发(3)——蓝牙的详细介绍

    第一篇文章 Android 蓝牙开发(1) 主要是介绍了普通的蓝牙在 Android 开发中的运用。 第二篇文章 Android 蓝牙开发(2) 主要是介绍了低功耗蓝牙的开发。...这篇文章主要介绍的是蓝牙的历史和一些关于蓝牙的通用知识,还有广播包的知识。要想彻底了解蓝牙开发,这些基础的知识也是需要的,就像网络协议一样,这些都是基础的内容。...发明者希望为设备间的通讯创造一组统一规则(标准化协议)用来解决用户间相互不兼容的移动电子设备。...蓝牙其实就是一种近距离无线通信技术。 ? 蓝牙历史版本.png 低功耗蓝牙 BLE 全称是 Bluetooth Low Energy 简称 BLE 。...HCI(Host Controller Interface):主机和控制器就是通过这个接口来进行通讯的,通讯的介质就是 HCI 命令。

    2.3K10

    Android蓝牙连接a2dp蓝牙耳机

    设备,蓝牙耳机设备 功能实现: 本应用提供以下功能: 第一:开启蓝牙 第二:查找过滤掉A2DP设备 第三:连接A2DP设备 第四:断开连接A2DP设备 第五:保存通过本应用连接的A2DP设备 第六...然而并非支持A2DP的耳机就是蓝牙立体声耳机,立体声实现的基本要求是双声道,所以单声道的蓝牙耳机是不能实现立体声的。声音能达到44.1kHz,一般的耳机只能达到8kHz。...如果手机支持蓝牙,只要装载A2DP协议,就能使用A2DP耳机了。...还有消费者看到技术参数提到蓝牙V1.0 V1.1 V1.2 V2.0——这些是指蓝牙的技术版本,是指通过蓝牙传输的速度,他们是否支持A2DP具体要看蓝牙产品制造商是否使用这个技术 代码介绍 代码结构如下...: 向系统发送请求,开启蓝牙,该过程会请求用户同意开启蓝牙 Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 接下来开启蓝牙扫描

    3K00
    领券