Android蓝牙开发

Android - 蓝牙开发 文章目录科普SIG类型制式编程Classic BluetoothBluetooth Low Energy蓝牙的UUID是什么?有什么用? 科普 https://zh.wikipedia.org/wiki/%E8%97%8D%E7%89%99 蓝牙(英语:Bluetooth),一种无线通讯技术标准,用来让固定与移动设备,在短距离间交换资料,以形成个人局域网(PAN)。其使用短波特高频(UHF)无线电波,经由 2.4 至 2.485 GHz 的 ISM(工业、科学、医疗)频段来进行通信。1994 年由电信商 阅读详情

Android蓝牙开发

最近做蓝牙小车,需要Android端来控制小车的运动,以此文记录开发过程。使用HC-06无线蓝牙串口透传模块。对于其他的蓝牙设备本文同样适用。

蓝牙开发的流程:

获取本地蓝牙适配器    ——>     打开蓝牙    ——>    搜索设备  ——>   连接设备  ——>   发送信息

首先为了避免以往我们先写入蓝牙权限:

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

要用到的蓝牙对象:

private BluetoothAdapter adapter = null;//用于获取蓝牙适配器
private BluetoothDevice mBtDevice = null;//用于获取蓝牙设备
private BluetoothSocket mBtSocket = null;//用于建立通信


获取蓝牙适配器:


adapter = BluetoothAdapter.getDefaultAdapter();


打开蓝牙:

boolean enabled = adapter.enable();
if(!enabled){
        adapter.enable();
}

搜索设备:


adapter.startDiscovery();


搜索到的设备会以广播的形式返回,所以我们需要定义一个广播接收器:

private BroadcastReceiver blueRevever = new BroadcastReceiver(){

			@Override
			public void onReceive(Context context, Intent intent) {
				// TODO Auto-generated method stub
				String action = intent.getAction();
				if(action.equals(BluetoothDevice.ACTION_FOUND)){
					BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
					if(device.getBondState()!=BluetoothDevice.BOND_BONDED){
						//获取未配对的设备名称和MAC地址
						//根据搜索到的蓝牙设备的MAC地址,得到该设备
						mBtDevice = adapter.getRemoteDevice(device.getAddress());  
						//如果设备名称是指定的设备则给出提示
						if(device.getName().equals("HC-06")){
							Toast.makeText(MainActivity.this,device.getName(),Toast.LENGTH_LONG).show();
						}
					}
					else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {

						Toast.makeText(MainActivity.this,"检测完毕",Toast.LENGTH_LONG).show();
					}
				}}};

广播返回不同设备及其所处的状态,getAction()方法用于获取状态,BOND_BONDED表示是已经配对的状态。(注意配对和连接是两个完全不同的概念,配对成功并不是连接成功,仅仅配对成功不能够发送信息)

当然是用广播机制要注意注册广播:
 IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);

	    registerReceiver(blueRevever, filter);

	    filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);

	    registerReceiver(blueRevever, filter);


连接设备:


因为阻塞连接会阻塞线程,所以我们需要重开一个新的线程用于建立连接:


private class clientThread extends Thread{
  		public void run(){
  			try {
  				//取消搜索设备的动作,否则接下来的设备连接会失败
  				adapter.cancelDiscovery();
  				//根据device获取socket
  				mBtSocket = mBtDevice.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
  				//连接socket
  				mBtSocket.connect();
  			} catch (IOException e) {
  				// TODO Auto-generated catch block
  				e.printStackTrace();
  				Toast.makeText(MainActivity.this,"连接失败!!!!!!!!!",Toast.LENGTH_LONG).show();
  			}
  		}
  	}

此处的UUID用于连接HC-06是可行的,其他的设备未测试
想使用时只需创建一个clientThread对象,然后执行其run()方法即可,如下:

//创建连接的进程
Thread mBtClientConnectThread = new clientThread();  
//开启进程
mBtClientConnectThread.start();  

发送信息:


public void sendMessageHandle(String msg)   
  	    {         
  	        if (mBtSocket == null)    
  	        {  
  	        	Toast.makeText(MainActivity.this,"没有连接!!",Toast.LENGTH_LONG).show();
  	                return;  
  	        }  
  	          
  	        try {  
  	            OutputStream os = mBtSocket.getOutputStream();   
  	            os.write(msg.getBytes()); //发送出去的值为:msg  
  	            Toast.makeText(MainActivity.this,"发送成功!!",Toast.LENGTH_LONG).show();
  	        } catch (IOException e) {  
  	            // TODO Auto-generated catch block  
  	            e.printStackTrace();  
  	            Toast.makeText(MainActivity.this,"发送失败!!!!!!!!!",Toast.LENGTH_LONG).show();
  	        }             
  	    }






此处的UUID用于连接HC-06是可行的,其他的设备未测试
Android蓝牙开发 — 经典蓝牙&BLE蓝牙 一,前期基础知识储备 1)蓝牙是一种支持设备之间短距离通信的无线电技术(其他还包括红外,WIFI); 支持移动电话、笔记本电脑、无线耳机等设备之间进行信息的交换; Android支持的蓝牙协议栈:Bluz,BlueDroid,BLE; Bluz是Linux推出的,目前使用最广泛; BlueDroid是Android4.0之后推出来的,简化了Bluz的操作; BLE是最新的低功耗协议,传输效率和传输速率都是很高的; 2)蓝牙开发技术一共分为两种: 经典蓝牙,3.0版本以下的蓝牙,功耗高,传输 阅读详情

相关推荐

安卓基于BLE的蓝牙开发入门

BLE蓝牙开发简单入门BLE背景介绍引言BLE简介Gatt协议以及必备知识蓝牙开发涉及的API介绍BLE蓝牙开发准备 BLE背景介绍 引言 如今,蓝牙的使用在生活中是越来越常见了,各色各样的运动手环、体脂称以及无线耳机都用到了蓝牙功能,稍稍有些好奇如今火热的keep、小米运动等app是如何通过手环简单的蓝牙连接进行交互的,通过本博客对安卓的蓝牙开发部分做一个简单的入门 BLE简介 蓝牙低能耗(Bluetooth Low Energy,或称Bluetooth LE、BLE,旧商标Bluetooth Smart

Takitohru的博客 1510

Android 蓝牙开发(一)

蓝牙是一种短距离无线通信技术,我们相对熟悉的移动端设备短距离通信技术有NFC红外蓝牙;NFC:主要应用于操作简单,即时相应的刷卡红外:主要应用于需要按键控制,例如家电遥控蓝牙:主要用于两部设备之间复杂且大量的数据传输(这里又分为低功耗蓝牙和经典蓝牙)今天小编给大家分享的是经典蓝牙。

Ai1114的博客 1万+

安卓经典蓝牙开发,包括自动连接开发板蓝牙并通信

安卓经典蓝牙开发,包括自动连接开发板蓝牙并通信蓝牙开发首先弄清楚两点:手机蓝牙连接手机蓝牙与手机蓝牙连接外设蓝牙(比如开发板上的蓝牙),这两者连接方式要区分开来,前者需要两个手机同时安装开发的APP,APP里面的代码指定了唯一的UUID用于通信,而后者只能在手机APP里面通过反射的方式获取外设蓝牙的UUID,然后连接通信。本文是使用后者。第二是要知道经典蓝牙开发与低功耗蓝牙开发(即Ble)二者是不...

Crook的专栏 4428

Android蓝牙功能开发(低功耗与经典)

Android 蓝牙开发,很多项目会使用到,自己去摸索封装或者引用其他框架,也能解决部分问题。为何说是部分问题,Android蓝牙分为低功耗版与经典版,经典版是可以直接选择即可实现链接,低功耗版是需要配置uuid。故推荐一个框架,下面来分享使用教程。分两部分第一部分是直接使用框架,第二部分是修改框架源码,使用哪一种方式可以结合自己的需要。Android开发建议使用Android蓝牙调试工具app初步调试使用,这里推荐BLE调试助手app,各大应用市场都可以下载。BLE调试助手首页展示。

shi450561200的博客 7180

安卓基于BLE的蓝牙开发入门,Android外包是如何转正华为的

//回调 //扫描回调 public BluetoothAdapter.LeScanCallback callback = new BluetoothAdapter.LeScanCallback() { @Override public void onLeScan(final BluetoothDevice bluetoothDevice, int i, byte[] bytes) { //重复过滤方法,列表中包含不该设备才加入列表中,并刷新列表 if (!deviceList.contains(bluet

m0_66265052的博客 1059

Android之BLE(低功耗)蓝牙开发,kotlin开发安卓

} return bleUtil; } public void startBle() { if (!isStandByBle) { Toast.makeText(context, “该设备不支持蓝牙功能”, Toast.LENGTH_SHORT).show(); return; } bleDevices = new ArrayList<>(); BleScanRuleConfig scanRuleConfig = new BleScanRuleConfig.Builder() //

m0_64319242的博客 1241

Android经典蓝牙开发全流程

一、基本介绍   所谓蓝牙(Bluetooth)技术,实际上是一种短距离无线电技术,最初是由爱立信公司公司发明的。技术始于爱立信公司 1994 方案,它是研究在移动电话和其他配件间进行低功耗、低成本无线通信连接的方法。发明者希望为设备间的通讯创造一组统一规则(标准化协议)用来解决用户间相互不兼容的移动电子设备。   1998年5月20日,索尼以立信、国际商业机器、英特尔、诺基亚及东芝公司等业界龙头创立“特别兴趣小组”(Special Interest Group SIG),即蓝牙技术联盟的前身,目标是开发一

weixin_56291477的博客 2万+

Android 蓝牙——基础开发(三)

蓝牙开发这部分主要以 APP 端调用功能接口为开始,到 Framework 端的调用流程,最后到调用状态机结束,不涉及蓝牙协议栈的开发分析。

小旭的专栏 1747

基于经典蓝牙的安卓蓝牙APP开发(基于蓝牙2.0开发,例:HC-05)

基于经典蓝牙的安卓蓝牙开发-串口 一、展现广播的三种方式 1、通知; 2、对话框; 3、消息提示框 2、在使用Android蓝牙适配器中的startDiscovery需要先打开定位服务 3、在连接蓝牙之前,还要先取消蓝牙设备的扫描,否则容易连接失败 前段时间自己学做了一个基于安卓经典蓝牙的app,也遇到不少坑,在网上相对与BLE低功耗蓝牙来说,它的资料方面都是比较缺少的,而且网上经典蓝牙源码大部分都很长,对于入门的同学来说,看没两分钟就产生放弃的念头了。 第一步:在AndroidManifest中添加:

morecrazylove的博客 1万+

Android 蓝牙——概述(一)

Profiles (蓝牙应用规范),它从应用场景的角度为蓝牙技术的使用制定了不同的规范。这也是和大众日常生活接触最多的一部分。蓝牙支持很多Profiles:MAP:(MessageAccessProfile),短信访问协议,允许设备间的信息交换,短信。使用场景:智能车载中同步短信等信息。HFP:(Hands-free Profile),电话免提协议,让蓝牙设备(如蓝牙耳机/车机)可以控制电话,如接听、挂断、拒接等。

小旭的专栏 3492

安卓蓝牙通信程序开发实战

是Android蓝牙通信的核心,它提供了控制蓝牙适配器的方法,包括开启和关闭蓝牙,以及配对设备等。获取蓝牙适配器实例检查蓝牙是否开启// 蓝牙已开启} else {// 蓝牙未开启,请求用户开启蓝牙打开蓝牙设置界面代表远程蓝牙设备,通常通过搜索或配对获得。以下是如何使用该类的示例:从Intent获取远程设备通过MAC地址获取设备用于在两个蓝牙设备之间建立连接。以下是如何使用该类建立连接:通过设备创建连接数据流的通信。

weixin_35238815的博客 774

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

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

zqf_888的博客 5万+

Anthropic三件套重构AI工作流:Claude Code、Design与桌面宠物实战指南

AI协作已从单点工具迈入系统化工作流阶段。理解AI作为‘协作者’而非‘执行器’的本质,是提升工程效率的关键前提;其核心在于对任务调度、自适应推理与人机交互边界的重新定义。Claude Code的xhigh effort机制体现了分层推理的工程智慧,Claude Design以HTML为原生设计语言实现设计-代码一体化,而桌面宠物则将抽象的token消耗具象为可感知的硬件反馈。这些能力共同指向一个趋势:AI工作流正从prompt调参走向契约式委派、从界面割裂走向跨模态统一。本文结合Opus 4.7最新实践,解

a4512138的专栏 484

android ble蓝牙接收不到数据_安卓蓝牙开发基础知识

蓝牙4.0分为标准蓝牙和低功耗蓝牙(BLE),标准蓝牙就是手机上用的那种,低功耗蓝牙由于其具有最大化的待机时间、快速连接和低峰值的发送和接收特性,被广泛用于智能手表、智能手环等可穿戴设备上。在安卓4.3之前,安卓平台上的BLE开发相当难搞,好在谷歌在4.3之后发布了官方的API。在安卓5.0之后又引入了新的API,原来的API已经被废弃。在新的系统里采用旧API开发的APP仍可使用,但采用新API...

weixin_30873127的博客 1432

Synopsys AXI VIP 从环境搭建到首个验证场景运行

本文详细介绍了Synopsys AXI VIP从环境搭建到首个验证场景运行的全过程,包括VIP安装、示例工程生成、验证环境解析、仿真调试技巧及进阶优化。特别针对AXI协议验证中的常见问题提供了实用解决方案,帮助工程师快速掌握这一SoC验证必备工具。

weixin_29185493的博客 340

DPI — 业务识别技术

目录 文章目录目录DPI 的业务识别技术类型特征识别Protocol 特征Payload 特征关联识别行为识别 DPI 的业务识别技术类型 DPI 的关键技术是能够高效的识别出网络上的各种应用类型。 浅报文检测是通过端口号来识别应用类型的。如:检测到端口号为 80 时,则认为是 HTTP 协议。但实际上,为了应用的安全性考虑通常不会使用默认端口来暴露业务能力。此时采用 L2 ~ L4 层的传统检测方法已无能为力了。 而 DPI 技术与我们熟知的防病毒软件在某些方面比较类似,即:其能识别的应用类型必须是系统已

烟云的计算 3516

Qt for Android 安卓低功耗蓝牙(BLE)开发环境搭建

因为涉及到低功耗蓝牙(BLE),搭建能自动弹框获取定位权限的Qt6 for Android开发环境。

abc6781的专栏 2129

18-XLINX的XC7A100T的BANK0引脚说明

DXP_0和 DXN_0是纯输入引脚,Xilinx Artix-7 FPGA 内部集成的一个片上监控模数转换器​ 的差分模拟输入对,模数转换器​的模拟信号输入端,将外部的模拟电压​ 采样并转换为内部的数字值,是一个单向的信号采集过程。它是与 VCCADC配对的关键引脚,共同为内部的精密模数转换器提供一个纯净、安静、独立的参考地平面。多FPGA同步配置: 在多FPGA系统中,主FPGA配置完成后,可以拉低从FPGA的 INIT_B使其等待,等所有FPGA都准备好后,再同时释放,实现同步启动。

weixin_44479192的博客 232

Android蓝牙开发全面总结

基本概念 安卓平台提供对蓝牙的通讯栈的支持,允许设别和其他的设备进行无线传输数据。应用程序层通过安卓API来调用蓝牙的相关功能,这些API使程序无线连接到蓝牙设备,并拥有P2P或者多端无线连接的特性。 蓝牙的功能: 1、扫描其他蓝牙设备 2、为可配对的蓝牙设备查询蓝牙适配器 3、建立RFCOMM通道(其实就是尼玛的认证) 4、通过服务搜索来链接其他的设备

Android小码农的博客 3万+

SAP 基于生产订单行项目外部加工创建采购申请时的一个增强需求

摘要 本文介绍在SAP系统中实现生产订单外协工序自动生成采购申请(PR)时,将指定文本写入PR抬头文本的技术方案。关键点包括: 业务背景:通过CO02事务码将工序标记为外部加工,系统自动生成PR,需在生成时自动写入抬头文本。 技术难点: PR抬头文本存储在STXH/STXL而非EBAN表 标准增强点ME_PROCESS_REQ_CUST在外协场景可能不触发 推荐方案: 使用BAdI ME_REQ_POSTED,在PR过账时点执行 通过Text Object EBANH和Text ID(如B01)写入文本 实

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 623

YOLOv11改进策略【卷积层】| SPD-Conv 针对小目标和低分辨率图像的检测任务

SPD-Conv是一种新的 CNN 构建模块,用于替代传统 CNN 架构中使用的步长卷积(strided convolution)和池化(pooling)层,它由空间到深度(Space-to-depth,SPD)层和非步长卷积(non - strided convolution)层组成。

Limiiiing的博客 4972

安卓通讯开发——蓝牙

通讯(Connectivity) 除了提供标准的网络连接外,Android还提供API,让您的应用程序能够使用蓝牙、NFC、Wi-Fi、P2P、USB和SIP等协议与其他设备进行连接和交互。 In addition to providing standard network connectivity, Android provides APIs to let your app connect ...

旧日灯塔 9647

关节电机技术全解析:原理、双编码器、控制方法与硬件选型

关于关机电机的组成,技术原理,特点以及选型等方面的详细介绍,可以帮助快速学习关节电机相关内容!

start_up_go的博客 692

Android(安卓)干货分享——安卓BLE 蓝牙开发

1 前言 BLE蓝牙的兴起主要因为近年来可穿戴设备的流行。由于传统蓝牙功耗高不能满足可穿戴设备对于续航的要求。所以大部分可穿戴设备采用蓝牙4.0,即BLE蓝牙技术。BLE(Bluetooth Low Energy)低功耗蓝牙,主要特点是快速搜索,快速连接,超低功耗保持连接和数据传输。   缺点:BLE蓝牙数据传输速率低,特别是在安卓开发过程,BLE蓝牙一包数据最多为20字节,因此安卓系统下最好不要使用BLE蓝牙传输大量数据。 2 申请权限 安卓手机涉及蓝牙权限问题,蓝牙开发需要在AndroidManifes

tangjianing的博客 1182

【读论文】ASR大模型动态热词新方案

大型语言模型(LLMs)以其卓越的通用知识和推理能力重塑了 AI 领域,但它们在处理特定领域或用户的专有词汇(即“热词”)时,往往表现出“选择性失忆”。传统的 RAG 或 Prompting 方案在实时性和准确性上存在瓶颈。阿里的《Hotword Model for Large Models》论文提出了一种“神经插件”方案,它能够在不修改基座模型权重的前提下,动态、精准地将热词能力注入到生成过程中。本文将从架构设计、训练范式到推理逻辑,全方位拆解这一技术的内核,并探讨其在工业级应用中的价值。

kakaZhui的博客 291

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: 形态学:对象计数
下一篇: Arduino:L298N模块使用
cassiePython
博客等级 码龄12年 303粉丝 135原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值