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

基于QT的安卓手机蓝牙APP开发 最近做项目,需要开发安卓应用,实现串口的收发,目测CH340G在安卓手机上非常麻烦,而且驱动都是Java版本的, 就没选择,博主在大二的时候学习过Java SE基本的语法,写过一些小程序就放弃了Java的道路。最后选择了蓝牙无线透传模块,实现串口通信。现在Qt跨平台支持安卓,是在是令人欣喜。在网上找资料,用Qt on Android做蓝牙驱动的几乎没有,也没有相关例程,所以准备撰写此文,献给广大嵌入式程序员们。 一、软硬件平台 1.1 硬件平台 1、蓝牙:HC-05,(淘宝上有卖),它的接口就是跟串口一样的 阅读详情

蓝牙通信是我们日常生活中比较方便的一种通信技术,Android从2.0版本的SDK就开始支持蓝牙。对开发人员来说,应用程序中蓝牙还是一种用来创建点对点连接通信的简单而高效的方式。

蓝牙通信功能的实现的基本流程大致分为蓝牙设备搜索、蓝牙设备连接和蓝牙通信三个阶段,之前我们已经学习了前面两个阶段,今天把最后的蓝牙通信搞定!

Android模拟器还不支持蓝牙,因此要测试使用蓝牙功能,必须使用至少两台Android设备。

(1)基于I/O流的蓝牙通信

当两台蓝牙设备建立好连接之后,就可以进行数据传输了。蓝牙通信的数据传输方式是通过流形式进行的。而要获取传输流,就要使用到BluetoothSocket:BluetoothSocket.getInptuStream()[获取输入流]、BluetoothSocket.getOutputStream()[获取输出流]。

  • 写出数据(OutputStream)
private static final UUID UUID_CLIENT = UUID.fromString("2b21619a-e2d4-4108-aab5-b64c48906552");

BluetoothDevice device;     //连接的蓝牙设备
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(UUID_CLIENT);
socket.connect();   //线程阻塞
OutputStream writer = socket.getOutputStream();     //获取蓝牙连接输出流
writer.write(("***").getBytes());   //发送"***"到服务器
  • 读入数据(InptuStream)
private static final UUID UUID_SERVER = UUID.fromString("2b21619a-e2d4-4108-aab5-b64c48906552");
private BluetoothAdapter bAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {

    //...

    bAdapter = BluetoothAdapter.getDefaultAdapter();

    new ServerStart().start();  //开启蓝牙服务器
}

class ServerStart extends Thread {

        @Override
        public void run() {
            try {
                BluetoothServerSocket serverSocket = bAdapter.listenUsingRfcommWithServiceRecord("Server", UUID_SERVER);

                //服务器打开成功
                //...

                while (true) {
                    BluetoothSocket socket = serverSocket.accept();      //服务器等待客户端访问,线程阻塞

                    //客户端接入访问成功
                    //...

                    new ServerReceive(socket).start();          //进行蓝牙通信
                }

            } catch (Exception e) {

            }
        }
    }

class ServerReceive extends Thread {

    BluetoothSocket socket;

    public ServerReceive(BluetoothSocket s) {
        socket = s;
    }

    @Override
    public void run() {
        try {
            InputStream reader = socket.getInputStream();
            byte[] buffer = new byte[1024];
            while (true) {
                int n = reader.read(buffer);        //监听输入流
                //客户端发送数据
                if(n != -1) {
                    byte[] text = new byte[n];
                    for (int i = 0; i < n; i ++) {
                        text[i] = buffer[i];
                    }
                    String s = new String(text);    //接收到的数据

                    //判断断开条件,断开连接
                    if (***) {
                        socket.close();
                        break;
                    }
                }
            }
        } catch (Exception e) {

        }

    }
}

(2)运行结果

客户端和服务器端连接

服务器端接收到来自不同客户端的数据

客户端断开连接


BluetoothDemo下载

Android 蓝牙开发(一)蓝牙通信 随着可穿戴设备的流行,研究蓝牙是必不可少的一门技术了。 总结了下蓝牙开发使用的一些东西分享一下。 首先需要AndroidManifest.xml文件中添加操作蓝牙的权限。 <uses-permissionandroid:name="android.permission.BLUETOOTH" /> 允许程序连接到已配对的蓝牙设备。 <uses-permissionandro 阅读详情

相关推荐

Android基于Modbus RTU协议通过蓝牙与蓝牙串口开发板通信

Android基于ModbusRtu协议通过蓝牙与蓝牙串口通信实现开发板读写前言实现原理代码实现 前言 最近接到一位老师的项目,他们公司要求利用Android基于ModbusRtu协议通过蓝牙与蓝牙串口通信实现开发板读写,然后通过开发板控制硬件设备从而实现Android移动设备与硬件交互。所以今天我给大家分享下Android基于ModbusRtu协议的蓝牙通信。当然Android也可以直接通过串口利用ModbusRtu协议与开发板通信,或者基于Modbus TCP通信。至于非蓝牙非Modbus协议通信,大家

weixin_42644340的博客 7359

Android 蓝牙通信

Android 蓝牙通信一、现在的无线通信方案及差别二、蓝牙传输功能开发1、准备阶段1)权限2)蓝牙的开启/关闭/状态判断设备是支持蓝牙获取蓝牙状态启动/关闭2、查找设备1) 让设备可见2) 查找设备首先启动查找设备然后是通过广播来获取到查找的结果。3) 绑定设备对于已经绑定的设备对于未绑定的设备3、通讯过程通讯的两个设备蓝牙一定要绑定的吗?总结 一、现在的无线通信方案及差别 上图是2018年甚至是更老的时候的方案 除以上之外还有 红外线传输 但是红外线是直线的传输方式(单向传输?)不适应无线通讯 二、蓝

csdn_pun的博客 3316

Android 蓝牙通信及WiFi开发

在我们正常的Android蓝牙功能开发步骤中,一般要经过系统权限和蓝牙开关状态监测、设备扫描、设备连接、蓝牙数据通信这几个过程。 在Android 4.3系统之后,我们可以使用蓝牙4.0(低功耗蓝牙),它最主要的特点是低功耗,普及率高。现在所说的蓝牙设备,大部分都是在说4.0设备,ble也特指4.0设备。 在4.0之前重要的版本有2.1版本-基本速率/增强数据率(BR/EDR)和3.0 高速蓝牙版

Bug不知所起,一往而深。 5565

Android蓝牙通信

Android 平台包含蓝牙网络堆栈支持,此支持能让设备以无线方式与其他蓝牙设备交换数据。应用框架提供通过 Android Bluetooth API 访问蓝牙功能的权限。这些 API 允许应用以无线方式连接到其他蓝牙设备,从而实现点到点和多点无线功能。 使用蓝牙进行通信的四大必需任务:设置蓝牙、查找局部区域内的配对设备或可用设备、连接设备,以及在设备之间传输数据。 为了让支持蓝牙的设备能够在彼此之间传输数据,它们必须先通过配对过程形成通信通道。其中一台设备(可检测到的设备)需将自身设置为可接收传入的连接请

qq_51771271的博客 5063

基于Android的蓝牙聊天应用开发实战(BluetoothChat)

字段长度类型说明Length4int载荷长度Timestamp8long时间戳Type1byte消息类型(0=文本,1=心跳)PayloadNbyte[]实际内容打包函数:接收端先读13字节头部,再根据Length读取完整载荷,完美解决粘包问题。经过这一整套流程,你会发现:✅经典蓝牙仍然是实时通信的最佳选择✅。

weixin_42601702的博客 766

蓝牙通信 Android开发实现手机间通过蓝牙传输文件

通过Android开发实现手机间通过蓝牙传输文件 实验小作业,详细分析 安卓平台提供对蓝牙的通讯栈的支持,允许设备和其他的设备进行无线传输数据。应用程序层通过安卓API来调用蓝牙的相关功能,这些API使程序无线连接到蓝牙设备,并拥有P2P或者多端无线连接的特性。 蓝牙(Bluetooth)是一种短距离的无线通信技术标准。蓝牙协议分为4层,即核心协议层、电缆替代协议层、电话控制协议层和采纳的其它协议层。这4种协议中最重要的是核心协议。蓝牙的核心协议包括基带、链路管理、逻辑链路控制和适应协议四部分。其中链路管理(LMP)负责蓝牙组件间连接的建立。逻辑链路控制与适应协议(L2CAP)位于基带协议层上,属于数据链路层,是一个为高层传输和应用层协议屏蔽基带协议的适配协议。 1、扫描其他蓝牙设备 2、为可配对的蓝牙设备查询蓝牙适配器 3、建立RFCOMM通道(其实就是认证) 4、通过服务搜索来链接其他的设备 5、与其他的设备进行数据传输

安卓BLE蓝牙通讯

正常情况下,当触发触发onConnectSuccess回调时,设备已经连上的蓝牙的GATT,此时可认为蓝牙已连接,此时中心设备是无法和外围设备通讯的,还需根据蓝牙协议绑定指定的特征UUID,一般中心设备接收数据的为NOTIFY_CHARACTERISTIC_UUID,向外围设备发送消息的为WRITE_CHARACTERISTIC_UUID,大部分外设备还有描述符,例如接收数据需要的描述符NOTIFY_DESCRIPTOR_UUID等。断开设备后,进行重新扫描,再次连接时,可接收到Notify的消息。

weixin_41119184的博客 2830

Ubuntu 22.04下Nvidia显卡驱动安装全攻略:从PPA源到避坑指南

本文详细介绍了在Ubuntu 22.04系统下安装Nvidia显卡驱动的完整流程,包括PPA源的使用、旧驱动清理、安装后验证及常见问题解决方案。特别针对机器学习开发者和图形设计师,提供了从基础安装到性能调优的全方位指南,帮助用户避免常见安装陷阱并优化GPU性能。

weixin_29213655的博客 382

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

上篇文章:https://blog.youkuaiyun.com/huangliniqng/article/details/82187966 上篇文章我们讲解了,蓝牙配对和蓝牙连接相关知识,还没有了解的朋友可先移步上篇文章。 1.蓝牙通信简介 无论是做Java还是Android开发的朋友肯定都比较熟悉Socket的连接,在java中通信用的是Socket,同样的蓝牙之间通信(这里说的是经典蓝牙)方式...

黄林晴 2万+

Python爬虫案例:从39问医生网爬取口腔科的在线问答记录(单轮问答)

本次实验爬取39问医生网中口腔科分类下的所有在线单轮问答记录,每页32条,共100页,总数据量为3200条,最终结果以excel格式保存。

JieBao11的博客 1643

【YOLOv8实战】从零构建番茄成熟度智能检测GUI系统【附完整工程】

本文详细介绍了从零构建基于YOLOv8的番茄成熟度智能检测GUI系统的完整实战流程。内容涵盖环境搭建、数据集准备、模型训练调优,并重点讲解如何使用PyQt5开发图形界面,最终将项目打包为可执行文件,实现AI模型从训练到桌面应用落地的完整工程闭环。

xxx12的博客 821

Android开发之蓝牙通信(三)

接着上篇蓝牙通信往下写,若有不对还请指出,大家共同进步。Android开发之蓝牙通信(一)Android开发之蓝牙通信(二)前两篇提到了蓝牙开发的基本使用流程以及通信框架BluetoothKit,博主的蓝牙通信项目已经迭代了几个版本了,决定最后来做一个总结,主要是蓝牙通信协议相关,蓝牙通信一次限制传输字节大小,虽然蓝牙支持增量,但并不能保证成功率(可能硬件并没有增量),最好的解决办法就是切片,这里博

AnalyzeSystem的博客 1978

Linux系统搭建OpenClaw(原Clawdbot)全流程指南 最新版

工具定位:开源个人 AI 助手,支持文件读取、命令执行、多渠道交互(Telegram / 本地终端等);系统要求:主流 Linux 发行版(Ubuntu/Debian/CentOS 等),Node.js ≥22(核心依赖);安全提示:OpenClaw 为测试版,具备高权限操作能力,建议使用非主力机,配置权限白名单,避免接触敏感数据。

AI时代老码农的第二春 6560

【安卓可穿戴设备APP开发】BLE蓝牙、MySQL数据库、websocket网络通信的综合应用案例

本部分将详细介绍每个功能类的具体使用和功能实现,由于代码量较大,部分代码请参阅者自行对照源码查看~

weixin_45743645的博客 1169

从零实现地震波场模拟:交错网格有限差分法核心代码精讲

本文详细介绍了从零实现地震波场模拟的核心技术,重点讲解了交错网格有限差分法的实现过程。通过速度-应力弹性波方程的离散化处理,结合代码实例演示了应力与速度更新的关键步骤,并分享了震源加载、稳定性条件等实用技巧,为计算地球物理学研究提供实践指导。

weixin_42556197的博客 410

同源策略与跨域

前言:最近业务上前端同学多次联系说访问腾讯云cos资源的时候因为跨域的问题访问不到。大致看了下腾讯云关于设置跨域访问的教程,按照前端同学给的域名等选项就给配了,而且测试下来也是好的。但是呢一直不知道什么是跨域这里就做一个简单的学习记录。 一、同源策略 同源策略(Same Origin Policy)是一种约定,它是浏览器最核心也是最基本的安全功能。同源策略会阻止一个域的javascrip脚本和另一个域的内容进行交互,是用于隔离潜在恶意文件的关键安全机制;关于这一点我们后面会举例说明。...

mijichui2153的博客 1万+

android 传统蓝牙开发(三):蓝牙设备连接及通信

蓝牙设备连接及通信 1.设备连接,服务器端开启线程一直等待连接,客户端点击某个目标设备,关闭服务器线程监听,并开启线程,发出连接请求。 注意:客户端连接前,一定cancelDiscovery() // 蓝牙已开启 if (bluetoothAdapter.isEnabled()) { showBondDevice(); // 默认开启服务线程监听 if (serverThre...

lumingzhang的博客 1610

IFRS 9与CECL对比解析:跨国企业财务必须掌握的两种信用损失模型

本文深度解析IFRS 9与CECL两种信用损失模型的差异,帮助跨国企业应对财务合规挑战。从基础架构、数据治理到监管策略,详细对比三阶段模型与单一阶段模型的核心区别,并提供实施双轨制的实务建议,助力企业优化资本管理和税务筹划。

3c4x5z6v7b的博客 668

android编译51单片机,GitHub - whaoming/SCMAndroidCommunicate: Android与51单片机的信息交互...

SCMAndroidCommunicateAndroid与51单片机的通信前言本篇文章将围绕App与单片机的蓝牙通信来说说lz最近进行开发的一些方案与思考此文分为三部分:单片机的PWM与串口通信Android的蓝牙开发单片机与Android App的通信方案预览视频观看:环境单片机单片机:STC89C52c语言编写环境:Keil uVision4烧录:stc-isp-15xx-v6.82Andro...

weixin_42493720的博客 718

MATLAB 开发项目实例 1000 例专栏之第37例:基于Simulink的无人机飞行控制系统设计

通过上述项目实例,我们成功地使用Simulink设计和仿真了一个无人机的飞行控制系统。这个项目展示了从无人机建模、路径规划、控制器设计到仿真验证的完整流程。Simulink的可视化和模块化特性使得系统的建模和仿真更加直观和高效。

xiaoheshang_123的博客 163

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Android 蓝牙开发详解与实战:基于 BluetoothChat 示例的完整解析

本文深入解析 Android SDK 中的经典蓝牙通信示例 BluetoothChat,从项目结构、核心代码到布局文件进行完整剖析。通过主界面 Activity、后台服务、设备列表、权限配置等模块的详细讲解,帮助开发者快速掌握 Android 蓝牙开发的核心流程与关键技术,实现设备间的稳定数据传输

xingfuyisheng的专栏 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Android开发之蓝牙(二)——基于BLE协议蓝牙模块通信

介绍 基本概念 Android蓝牙开发流程 app是ble与spp选择连接蓝牙模块,关于spp的可以看 介绍摘要:蓝牙4.0——BLE是近年来应用比较广泛的profile,与传统蓝牙相比,其低功耗的特征最为显著,在蓝牙模块中(CC2540),一块纽扣电池可供电半年到一年之间。

zh1豪的博客 9538

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Android蓝牙开发—经典蓝牙详细开发流程

       Android蓝牙开发前,首先要区分是经典蓝牙开发还是BLE(低功耗)蓝牙开发,它们的开发是有区别的,如果还分不清经典蓝牙和BLE(低功耗)蓝牙的小伙伴,可以先看Android蓝牙开发—经典蓝牙和BLE(低功耗)蓝牙的区别 本文是针对经典蓝牙开发的,如果是BLE(低功耗)蓝牙开发,可以看Android蓝牙开发—BLE(低功耗)蓝牙详细开发流程 开发流程 开启蓝牙 扫描蓝牙 ...

zqf_888的博客 5万+

Android 蓝牙开发之搜索、配对、连接、通信大全

蓝牙( Bluetooth®):是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换(使用2.4—2.485GHz的ISM波段的UHF无线电波)。蓝牙设备最多可以同时和7个其它蓝牙设备建立连接,进行通信,当然并不是每一个蓝牙都可以达到最大值。下面,我们从蓝牙的基本概念开始,一步一步开始了解蓝牙。(尊重劳动成果,转载请注明出处http://blog....

weixin_33686714的博客 5972
上一篇: Android 蓝牙通信开发(二) 创建蓝牙连接
下一篇: Oracle 设置主键自增长
magic__Coder
博客等级 码龄11年 41粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值