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

Android实现蓝牙聊天功能

蓝牙,时下最流行的智能设备传输数据的方式之一,通过手机app和智能设备进行连接,获取设备上的测量数据,我们生活中随处可见的比如蓝牙智能手环,蓝牙电子秤,蓝牙心电测量设备等等。...本篇我将紧接着上篇结尾所写,一起来看下手机之间如何通过蓝牙实现文字聊天。 先贴出上篇的一些demo; ?...; intent.putExtra(EXTRA_DEVICE_ADDRESS, address); setResult(Activity.RESULT_OK, intent); finish(); 此蓝牙聊天工具最后实现的效果是这样的...,所以他们互为主机和从机,主要思路以及步骤如下: 1.开一个线程获取socket去连接蓝牙; 2.开一个线程获监听蓝牙传入的连接,如果连接被接受的话,再开启第三个线程去处理所有传入和传出的数据;...= null) { mAcceptThread.cancel(); mAcceptThread = null; } } 相信看完本篇文章,在安卓蓝牙连接这块应该问题不大了(spp协议)。

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

Android实现蓝牙(BlueTooth)设备检测连接

为了解决这种邻近传输文件的问题,蓝牙技术应运而生。蓝牙技术是一种无线技术标准,可实现设备之间的短距离数据交换。...Android为蓝牙技术提供了4个工具类,分别是蓝牙适配器BluetoothAdapter、蓝牙设备BluetoothDevice、蓝牙服务端套接字BluetoothServerSocket和蓝牙客户端套接字...getDefaultAdapter:静态方法,获取默认的蓝牙适配器对象; enable:打开蓝牙功能; disable:关闭蓝牙功能; isEnable:判断蓝牙功能是否打开; startDiscovery...:设置本机的蓝牙名称; getName:获取本机的蓝牙名称; getAddress:获取本机的蓝牙地址; getRemoteDevice:根据蓝牙地址获取远程的蓝牙设备; getState:获取本地蓝牙适配器的状态...accept:监听外部的蓝牙连接请求; close:关闭服务端的蓝牙监听。

2.8K30

如何使用蓝牙实现OTA固件升级

作为一种低成本的近距离无线连接协议,蓝牙在现实生活中的应用非常广泛,各种嵌入式、物联网设备随处可见。基于这一特性,我们今天讲一下如何使用蓝牙实现OTA固件升级。...只要是通过无线通信方式实现DFU的,都可以叫OTA,比如2G/3G/4G/WiFi/蓝牙/NFC/Zigbee,他们都支持OTA。...四、DFU升级步骤 4.1 安全式蓝牙空中升级步骤 Nordic SDK已经提供了DFU例子,下面我们一步一步给大家讲解如何通过Nordic SDK来实现无按键式蓝牙空中升级。...Python方式安装nrfutil步骤如下所示: 安装Python2.7或者Python3.7,下载地址:https://www.python.org/downloads/,安装成功后请确保Windows...环境变量包含Python目录。

2.9K20

蓝牙协议栈开发板 STM32F1 跑蓝牙协议栈 –传统蓝牙搜索演示以及实现原理

声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍。...第二篇:Transport层介绍,主要介绍蓝牙协议栈跟蓝牙芯片之前的硬件传输协议,比如基于UART的H4,H5,BCSP,基于USB的H2等 第三篇:传统蓝牙controller介绍,主要介绍传统蓝牙芯片的介绍...STM32蓝牙协议栈封装使用AT command实现搜索 使用步骤操作如下: 步骤 1)准备好代码,从github下载下来最新的代码(在上面有介绍Github连接) 步骤 2)连接好硬件(把模组插好,ST-LINK...(此步骤跟AT 命令BT_START一样的效果,就是实现蓝牙初始化) 步骤 3) 等待初始化完成点击搜索按钮,你就发现可以搜索到蓝牙了 另外:使用上位机的时候注意几点: ① mcu_bt_tool.exe...,RX我们用串口空闲中断+DMA的方式来实现接受串口工具以及上位机的发送指令,然后串口中断的实现原理是这样: /*********************************************

1K30

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

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

4.2K20

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

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

2.4K20

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

蓝牙协议分析(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技术... 经典蓝牙是正宗的蓝牙技术。

6.3K11

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.蓝牙通信发送文件

1.9K20

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

最近在做蓝牙开发,刚接触时傻傻的分不清经典蓝牙和低功耗蓝牙的区别,一直用开发低功耗蓝牙的方法去连接经典蓝牙设备,最后当然是一直连接不上了。在此记录下经典蓝牙和低功耗蓝牙的区别和联系。...Android中的蓝牙 说到Android中的蓝牙,大家听到的可能有蓝牙1.0、蓝牙2.0、蓝牙3.0、蓝牙4.0之类的以数字结尾的蓝牙版本号,而实际上,在最新的标准中,已经不再使用数字版本号作为蓝牙版本的区分了...主设备作为发现方,调用发现设备的方法,通过BluetoothAdapter的startLeScan()方法实现。从设备则作为被发现方,发出广播,以供发现。...低功耗蓝牙:想要实现主设备对从设备的数据发送,则需要直接读取获取到的从设备的Characteristic,而Characteristic又是Service下面的一层,所以操作顺序是: (1)通过BLE从设备相应的...可以看到,想要实现BLE的数据通信,步骤相当繁琐,这里只是做一个简单的概念理解,如果想要获取到BLE从设备的返回值,还需要设置Notification,然后调用BluetoothGatt的readCharacteristic

4.3K20

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

低功耗蓝牙官方文档 本文章是参考官网,然后加入自己实践中的理解完成!没有看上一篇的读者,可以先阅读一下前一篇,这是一个系列。...(API 18 )引入了低功耗蓝牙,应用可以查询周围设备、查询设备的服务、传输信息。...设备可以实现多个配置文件。例如,设备可以包含心率监测器和电池水平检测器。 定义规范的 属性协议(ATT Attribute Protocol) GATT 是建立在属性协议(ATT)之上的。...确定了两个设备建立连接后如何进行相互通信 BLE 权限 应用在使用蓝牙设备的时候必须要声明蓝牙权限 BLUETOOTH 需要这个权限才可以进行蓝牙通信,例如:请求连接、接受连接、和传输数据。...如果还需要发现或者操作蓝牙设置,则需要声明 BLUETOOTH_ADMIN 权限。使用这个权限的前提是要有 BLUETOOTH 权限。

2.2K10

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

一:注意事项 1:android6.0使用蓝牙时,需要开启gps定位权限,不然无法搜索其它蓝牙设备。 二:权限 1:权限配置 <!...而是安卓6.0的bug,凡是遇到蓝牙适配问题的,请同时打开蓝牙和定位,再去配对,基本90%都没有问题了。...,如下图,但我想实现的是,匹配其中一方,不能手动点击配对,因为发起蓝牙连接的设备是android设备,是不能触摸的,所以就要通过程序来解决这个问题,特别声明:(测试的android设备,版本为5.x,并且已经...root,没有root的设备,或者不是android5.x不清楚能否实现自动匹配,因为我只有这个测试设备)。...,以及动态权限,蓝牙的打开,关闭,搜索,以及自动配对(特别声明:(自动配对的android设备,版本为5.x,并且已经root,没有root的设备,或者不是android5.x不清楚能否实现自动匹配,因为我只有这个测试设备

3K31

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

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

2.1K20

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

第一篇文章 Android 蓝牙开发(1) 主要是介绍了普通的蓝牙在 Android 开发中的运用。 第二篇文章 Android 蓝牙开发(2) 主要是介绍了低功耗蓝牙的开发。...这篇文章主要介绍的是蓝牙的历史和一些关于蓝牙的通用知识,还有广播包的知识。要想彻底了解蓝牙开发,这些基础的知识也是需要的,就像网络协议一样,这些都是基础的内容。...蓝牙协议栈.png 图片来自网络 从下到上分别为:控制器(Controller)-->主机(host)-->应用(Application) 控制器:协议栈的底层的实现,直接和硬件相关,由芯片厂商实现,包括物理层...主机:协议栈的上层实现是硬件的抽象,与具体的硬件厂商没有关系。 应用层:使用主机层提供的 API 开发的应用。...例如:iBeacon,通过这种设备我们可以实现室内定位。 其实这些设备的角色可以即使广播者又是观察者。接收到广播后作出了处理,然后又发送广播。

2.1K10

蓝牙API介绍及基本功能实现

蓝牙设备类,用于描述蓝牙设备类型 BluetoothDevice:远程蓝牙设备类 BluetoothSocket:与tcpSocket类似,进行蓝牙连接 BluetoothServerSocket:与...有两种方案, 首先第一种实现,简单但对可检测时间有限制 Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE)...intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300); startActivity(intent); 第二种实现方案...,就是Android源码中的实现方案,可以任意规定可检测时长,甚至永不超时均可(参考Android4.42源码) /** *mode有三种取值 *BluetoothAdapter.SCAN_MODE_CONNECTABLE...BluetoothDiscoverableTimeoutReceiver.setDiscoverableAlarm(mContext, endTimestamp); 这是源码中的实现方案,但是BluetoothAdapter.setScanMode

1.3K10
领券