首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Android开发者家园

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

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

    3.1K10发布于 2019-12-26
  • 来自专栏编程思想之路

    Android蓝牙连接a2dp蓝牙耳机

    设备,蓝牙耳机设备 功能实现: 本应用提供以下功能: 第一:开启蓝牙 第二:查找过滤掉A2DP设备 第三:连接A2DP设备 第四:断开连接A2DP设备 第五:保存通过本应用连接的A2DP设备 第六 :当重新启动应用时加载已连接的设备 A2dp介绍 A2DP全名是Advanced Audio Distribution Profile 蓝牙音频传输模型协定。 A2DP是能够采用耳机内的芯片来堆栈数据,达到声音的高清晰度。然而并非支持A2DP的耳机就是蓝牙立体声耳机,立体声实现的基本要求是双声道,所以单声道的蓝牙耳机是不能实现立体声的。 如果手机支持蓝牙,只要装载A2DP协议,就能使用A2DP耳机了。 还有消费者看到技术参数提到蓝牙V1.0 V1.1 V1.2 V2.0——这些是指蓝牙的技术版本,是指通过蓝牙传输的速度,他们是否支持A2DP具体要看蓝牙产品制造商是否使用这个技术 代码介绍 代码结构如下

    3.7K00发布于 2019-07-11
  • 来自专栏linux驱动个人学习

    蓝牙协议分析(2)_协议架构

    前言 本文是蓝牙协议分析的第二篇文章,在“蓝牙协议分析(1)_基本概念”的基础上,从整体架构的角度,了解蓝牙协议的组成,以便加深对蓝牙的理解。 2. APP层,理解蓝牙协议中的应用层,基于L2CAP提供的channel,实现各种各样的应用功能。 2.3 L2CAP Channels L2CAP是Logical Link Control and Adaptation Protocol(逻辑链路控制和适配协议)的缩写,蓝牙协议到这个层次的时候,就清爽多了 蓝牙核心框架 蓝牙规范有两类:一类是蓝牙核心规范,由Bluetooth Core Specification定义,囊括到L2CAP层,以及相关的核心profile;另一类是蓝牙Application规范 蓝牙核心规范所定义的框架如下: 经过第2章协议层次的介绍,蓝牙核心框架已经比较容易理解了,这里对层次中各个模块做一个简单的说明,更为详细的分析,请参考后续的文章。

    3.7K12发布于 2021-10-18
  • 来自专栏云深之无迹

    Jetson Nano 2GB连接蓝牙设备

    Jetson Nano 2GB 开发人员工具包没有内置蓝牙。为了将蓝牙音频设备连接到开发人员工具包,你需要使用 USB 蓝牙适配器。(就是自己买一个) ? 按照以下步骤在开发人员工具包上启用蓝牙音频。 蓝牙适配器要求 蓝牙适配器必须支持 Linux 操作系统,并且你需要访问蓝牙适配器的驱动程序。 连接蓝牙音频 在开发人员工具包上安装蓝牙适配器所需的任何驱动程序。按照蓝牙适配器制造商的说明操作。 安装驱动程序后,你可能需要重新启动开发人员工具包,以便系统启用它 连接蓝牙适配器(如果在安装驱动程序期间未连接它) cd到此文件: /lib/systemd/system/bluetooth.service.d ExecStart=/usr/lib/bluetooth/bluetoothd -d --noplugin=audio,a2dp,avrcp 到这里~ ExecStart=/usr/lib/bluetooth

    2.9K30发布于 2021-02-23
  • 来自专栏KT148A

    KT6368A的蓝牙芯片修改了蓝牙名称手机没有更新_以及会出现两个蓝牙名连不上2

    一、问题KT6368A的蓝牙芯片,发指令修改蓝牙名称,但是手机的app好像没有更新1、因为你手机也会记忆名字,尤其是芯片只改了名字,而蓝牙芯片的MAC地址没变所以手机他没有刷新解决这个问题,要么换一个手机测试 ,试了一个不能连接显示1、这个你肯定用的是“蓝牙串口”这个测试APP,因为这个APP很奇怪,会搜索出来SPP蓝牙,也会搜出来BLE蓝牙2、如果你点击的是BLE的蓝牙,那么他必定是连不上的。 因为蓝牙串口测试app只支持SPP的测试3、如上图,RK6006,这个应该就是BLE的名称 。下面的那个就是SPP的名称,因为他们的地址不一样,注意仔细看。 因为明显的地址不同,可以详见手册的3.5章节“3.5 查询 BLE 蓝牙的名称和地址[TM][TN][TD]”4、实际使用的时候,建议BLE的名称设置,要和SPP的名称做一下区分。 5、不要用蓝牙串口这个app。去测试,建议使用“FeasyBlue”app或者其他的蓝牙调试宝等等app

    43630编辑于 2023-11-16
  • 来自专栏全栈程序员必看

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

    上篇文章:https://blog.csdn.net/huangliniqng/article/details/82185983 讲解了打开蓝牙设备和搜索蓝牙设备,这篇文章来讲解蓝牙配对和蓝牙连接 1. 蓝牙配对 搜索到蓝牙设备后,将设备信息填充到listview中,点击listiew则请求配对 蓝牙配对有点击配对和自动配对,点击配对就是我们选择设备两个手机弹出配对确认框,点击确认后配对 自动配对就是搜索到蓝牙设备后自动配对不需要输入pin码,但在基本开发中都不采用这种方式,所以这里说的是第一种配对方式 点击配对,调用 BluetoothDevice.class.getMethod 中所以从list中取) 点击之后怎会弹出配对确认框,且必须被配对的手机也点击确认配对才可以配对成功如图: 同样的,如果我们想要配对的设备取消配对 只需要将creatBond改为removeBond 2. 蓝牙连接: 配对成功之后,就可以进行蓝牙连接了,蓝牙连接操作比较耗时,可以在一个线程中进行: 调用自己定义的 connect(listdevice.get(position)); 同样传递的参数也是设备

    5.1K20编辑于 2022-09-07
  • 来自专栏代码男人

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

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

    5.3K20发布于 2019-01-10
  • 来自专栏全栈程序员必看

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

    双模蓝牙:支持低功耗蓝牙和经典蓝牙的所有功能 低功耗蓝牙:仅支持低功耗蓝牙不支持经典蓝牙 经典蓝牙: 仅支持经典蓝牙不支持低功耗蓝牙 1.1.1 经典蓝牙(BT): BR技术 、EDR技术 、AMP技术 2蓝牙协议规定了两个层次的协议,分别为蓝牙核心协议(Bluetooth Core)和蓝牙应用层协议(Bluetooth Application)。 2. AMP  该图片是对Bluetooth Core的一个Overview,从RF的Physical Channel,到Baseband的Physical Link、Logical Link、LMP、L2CAP 2)但随着物联网的发展,业界对简单的、不需要连接的多播或广播通信的需求越来越迫切,因此BLE技术在RF和Baseband的协议中,就做出了修改,以适应这种需求,即:修改原有的79个channel的跳频方式

    8.7K12编辑于 2022-07-25
  • 来自专栏知识分享

    WIFI&蓝牙(ESP32)转CAN总线&串口TTL模块-A2-蓝牙和CAN总线透传通信(经典蓝牙主机)

    实现的功能说明 设备作为经典蓝牙主机, 然后连接蓝牙名字为 ESP32_SLAVE_BT 的从机设备; 设备连接上从机蓝牙之后, 把蓝牙接收到数据通过CAN总线输出; 设备从CAN总线接收的数据通过蓝牙发送给蓝牙从机 ; 测试 1,安装CAN支持库(如果已经安装了不需要安装) 主题选择通信,然后输入 CAN, 往下找到对应的库,然后点击安装 2,打开这节的工程(放到非中文目录打开) 里面有两个工程 BT_CAN_MASTER 这个工程是咱这节的工程 因为手头没有现成的蓝牙从机设备所以就准备了另一个设备, 烧录上 BT_CAN_SLAVE 工程作为模拟一台蓝牙从机设备 3,提示,如果用户有蓝牙设备,可以直接下载这节的工程连接自己的设备进行测试 CAN.begin(CanBitrate*2)) { Serial.println("Starting CAN failed!") 2,蓝牙接收的数据通过CAN总线输出 3,CAN总线接收的数据通过蓝牙发送

    1.3K20编辑于 2023-10-15
  • 来自专栏代码男人

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

    上篇文章:https://blog.csdn.net/huangliniqng/article/details/82187966 上篇文章我们讲解了,蓝牙配对和蓝牙连接相关知识,还没有了解的朋友可先移步上篇文章 1.蓝牙通信简介   无论是做Java还是Android开发的朋友肯定都比较熟悉Socket的连接,在java中通信用的是Socket,同样的蓝牙之间通信(这里说的是经典蓝牙)方式也是Socket,只不过是 BluetoothSocket,同样的也要有Socket服务端和客户端 2.蓝牙通信消息接收端 设备连接后,跳转到通讯界面,首先我们要在通讯界面开启消息接收端服务,同样的我们要在一个线程中开启 得到bluetooth length; int fileSzie = 0; byte[] b = new byte[1024]; // 2、 Log.i("socketChat", "文件上传进度:" + (fileSize / file.length() * 100) + "%"); //2

    2.8K20发布于 2019-01-10
  • 来自专栏全栈程序员必看

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

    最近在做蓝牙开发,刚接触时傻傻的分不清经典蓝牙和低功耗蓝牙的区别,一直用开发低功耗蓝牙的方法去连接经典蓝牙设备,最后当然是一直连接不上了。在此记录下经典蓝牙和低功耗蓝牙的区别和联系。 Android中的蓝牙 说到Android中的蓝牙,大家听到的可能有蓝牙1.0、蓝牙2.0、蓝牙3.0、蓝牙4.0之类的以数字结尾的蓝牙版本号,而实际上,在最新的标准中,已经不再使用数字版本号作为蓝牙版本的区分了 注意:当两种蓝牙设备被某设备(包括当前的设备)配对/绑定后,可能不会再被扫描到。 2. 配对/绑定 有很多小伙伴都不太理解配对和绑定究竟有什么区别,或者它们根本就是同一个东西。 mGattCallback)方法返回的BluetoothGatt对象,调用BluetoothGatt的方法getService(Service_UUID)获取相应的BluetoothGattService; (2) 远距离的,不用蓝牙。 固定供电的、不考虑功耗的、要传超过几十米距离的、要传高速数据的,这些都不适合蓝牙。远距离的可以用2G、4G、NB-IOT,大数据量的可以用WIFI。

    6.3K21编辑于 2022-07-05
  • 来自专栏加菲猫的VFP

    驯服蓝牙打印机2-打印图片指令

    1 查看图片打印文档 可以得出几个参数 指令开始的头为 1B 2A m 的值是分辨率,我们使用 33 ,也就是 22DPI的密度来打印 nL nH为图片的宽度 nL用1字节来存放低位的数据 nH用1字节来存放高位的数据 当m=33时 k=(nL+nHx256)x3 举例说明,刚刚100像素宽的图片 k=(100+0x256)x3=300 也就是说图片数组的大小为300个 2 数组的里面放什么数据? 数据d是一个字节,只有8位. 24个点,就是 d1 d2 d3来表示打印出一竖 也就是说 d1 d2 d3 第一竖 d4 d5 d6 第二竖 .... d(k-2) d(k-1) dk 最后一竖 d=8 位数组,图像数组长度为100*24/8 Dimension imgdata[100*24/8+5] k=1 *--图片头指令 imgdata[k] = 0x1B k=k+1 imgdata[k] = 0x2A

    1.4K20发布于 2021-08-16
  • 来自专栏AIoT技术交流、分享

    LabVIEW Arduino无线蓝牙遥控智能车(项目篇—2

    无线遥控智能小车总体框图如下图所示: 项目资源下载请参见:LabVIEWArduino无线蓝牙遥控智能车【实战项目】-单片机文档类资源 智能小车的车体采用两个驱动轮、一个万向轮的三轮式小车模型,驱动电机采用直流减速电机 将VNH2SP30电机驱动模块的1INA、1INB、1PWM分别接至Arduino Uno控制板上的数字端口D7、D6、D5,为电机1提供转向和调速控制信号;将VNH2SP30电机驱动模块的2INA、2INB 、2PWM分别接至Arduino Uno控制板上的数字端口D4、D2、D3,为电机2提供转向和调速控制信号。 = 4; int INB2 = 2; int PWM2 = 3; //定义电机2的转向和速度的控制引脚 int Trace_sensor_X1=8; int Trace_sensor_X2= “速度档位"值改变事件的程序框图如下图所示: 项目资源下载请参见:LabVIEWArduino无线蓝牙遥控智能车【实战项目】-单片机文档类资源

    1.7K30编辑于 2022-06-14
  • 来自专栏李蔚蓬的专栏

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

    连接设备 蓝牙通讯机制建立在socket上; 要在两台设备上创建连接,需要实现服务器端和客户端机制 一般通讯过程: 在服务端等待客户端的连接请求, 有连接请求后连接, 连接成功后有一个socket 服务器设备和客户端设备分别获得需要的BluetoothSocket; 上面说过, 要在两台设备上创建连接, 需要实现服务器端和客户端机制, 其中有一台需要开放服务端的套接字, 另外一台作为客户端, 需要通过蓝牙的 除非要接受更多连接,否则调用close()结束该次通信; 设置客户端 发起与远程设备(保持开放的服务器套接字的设备)的连接; 首先要获取表示该远程设备的BluetoothDevice对象, 这个对象是通过蓝牙

    2.8K20发布于 2019-05-19
  • 来自专栏移动开发专栏

    Android 蓝牙开发,蓝牙连打印机。

    libs文件夹,拷入jar文件并Add As Library 2.在main目录下新建jniLibs目录,并拷入so文件 3.配置我们的manifest文件,添加必要的权限 <! ActivityCompat.requestPermissions(this, per.toArray(p), REQUEST_CODE); } } 2. 、是否开启,显示已配对和未配对的蓝牙设备列表 /** * 初始化蓝牙 */ private void initBluetooth() { // 获取蓝牙适配器 > av, View v, int arg2, long arg3) { // Cancel discovery because it's costly and we're about 2.打印之前也要先做蓝牙状态的判断,只有做到足够的严谨,才能看起来万无一失。。

    3.6K20编辑于 2022-06-10
  • 来自专栏Android开发者家园

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

    第一篇文章 Android 蓝牙开发(1) 主要是介绍了普通的蓝牙在 Android 开发中的运用。 第二篇文章 Android 蓝牙开发(2) 主要是介绍了低功耗蓝牙的开发。 这篇文章主要介绍的是蓝牙的历史和一些关于蓝牙的通用知识,还有广播包的知识。要想彻底了解蓝牙开发,这些基础的知识也是需要的,就像网络协议一样,这些都是基础的内容。 蓝牙其实就是一种近距离无线通信技术。 ? 蓝牙历史版本.png 低功耗蓝牙 BLE 全称是 Bluetooth Low Energy 简称 BLE 。 有链路控制和适配层(L2CAP),安全管理(SM)等。重点看属性协议层,也就是 ATT。它是整个 BLE 通信的基础。 (2)观察者:扫描设备,但不发起建立连接 (3)外部设备:可连接的广播设备,可以在单个链路层连接中作为从机。(4)集中器:扫描广播设备并发起连接,可以在单链路层连接中作为主机。

    3K10发布于 2019-12-26
  • 来自专栏嵌入式智能硬件

    蓝牙芯片----BK3431开发笔记------快速入门(2

    2.编译工程 编译成功后在目录\output\app下,会生成几个bin文件,用联机下载器烧录带CRC的bin文件,如图的bin 三、烧录 1.烧录接口 硬件SPI接口 2.烧录程序 打开联机下载器上位机软件 user_config.h里面有两个宏定义 APP_DFLT_DEVICE_NAME APP_SCNRSP_DATA 修改这两个宏,可以修改蓝牙名称 2.UUID怎么修改? 连接成功回调函数是gapc_connection_req_ind_handler,程序运行到这里,说明蓝牙连接成功。 7.蓝牙断开连接回调函数 蓝牙断开回调函数是gapc_disconnect_req_ind_handler,程序运行到这里,说明蓝牙已经断开。 8.蓝牙设备如何发数据到手机端? 以GATT工程为例,FFF0的服务中,FFF2为write属性,用write从手机发数据到蓝牙设备 函数接口fff2_writer_req_handler接收数据后,并打印出来 static int fff2

    2.5K20发布于 2021-09-26
  • 来自专栏全栈程序员必看

    Android 蓝牙开发(一)蓝牙通信「建议收藏」

    1 蓝牙基本操作 随着可穿戴设备的流行,研究蓝牙是必不可少的一门技术了。 总结了下蓝牙开发使用的一些东西分享一下。 蓝牙权限 首先需要AndroidManifest.xml文件中添加操作蓝牙的权限。 ( BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 120); startActivity(discoverableIntent); } } 2 try {//关闭这个socket mmSocket.close(); } catch (IOException e2) { e2.printStackTrace(); } return; }

    6.4K52编辑于 2022-09-14
  • 来自专栏嵌入式智能硬件

    蓝牙芯片----BK34341开发笔记------快速入门(2

    2.编译工程 编译成功后在目录\output\app下,会生成几个bin文件,用联机下载器烧录带CRC的bin文件,如图的bin 三、烧录 1.烧录接口 硬件SPI接口 2.烧录程序 打开联机下载器上位机软件 user_config.h里面有两个宏定义 APP_DFLT_DEVICE_NAME APP_SCNRSP_DATA 修改这两个宏,可以修改蓝牙名称 2.UUID怎么修改? 连接成功回调函数是gapc_connection_req_ind_handler,程序运行到这里,说明蓝牙连接成功。 7.蓝牙断开连接回调函数 蓝牙断开回调函数是gapc_disconnect_req_ind_handler,程序运行到这里,说明蓝牙已经断开。 8.蓝牙设备如何发数据到手机端? 以GATT工程为例,FFF0的服务中,FFF2为write属性,用write从手机发数据到蓝牙设备 函数接口fff2_writer_req_handler接收数据后,并打印出来 static int fff2

    2.8K10发布于 2020-08-31
  • 来自专栏全栈程序员必看

    Android蓝牙开发教程(一)——搜索蓝牙设备

    Android蓝牙功能的开发一直是很多新手头疼的问题,网上虽然也有很多教程贴,但大多都写得不全面,不能让我们真正掌握蓝牙开发的基本知识。 本教程主要讲解搜索蓝牙设备、蓝牙设备之间的连接和蓝牙之间的通讯三个主要模块。掌握了这三个,基本就能进行简单的蓝牙开发了。 先上效果图 界面比较简单。主要有三个按钮,两个文本和一个列表。 开启蓝牙后,需要设置蓝牙为可发现状态,让其他设备能够搜索到。 i.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300); 搜索蓝牙设备 成功开启蓝牙设备后,调用蓝牙适配器的startDiscovery 方法就可以搜索附近可连接的蓝牙设备。

    8K40编辑于 2022-09-13
领券