Android基于蓝牙串口编程实现HC-05通讯

本文介绍了在Android上使用蓝牙串口编程实现与HC-05的通讯,涉及SPP协议、UUID查询、连接管理及权限设置。项目源码可在GitHub找到。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android基于蓝牙串口编程实现HC-05通讯

最近接了个工程自动化的项目,需求是实时接收从单片机传过来的数据,并进行数据分析处理再进行显示,在查阅大量的相关博客和自己踩了不少的坑后,想说把自己的一些经验分享出来给后来人做个参考www

先介绍下蓝牙串口的定义

蓝牙串口是基于SPP协议(Serial Port Profile),能在蓝牙设备之间创建串口进行数据传输的一种设备。蓝牙串口的目的是针对如何在两个不同设备(通信的两端)上的应用之间保证一条完整的通信路径。

目前应用商店可以下载到的蓝牙串口app就是基于SPP协议,而有一些蓝牙搜索app搜索不到HC-05就是由于没有实现蓝牙串口服务。要想要在自己的app内实现SPP协议需要服务对应的UUID,蓝牙串口服务的UUID为:

SerialPortServiceClass_UUID = '{00001101-0000-1000-8000-00805F9B34FB}' 

更多的手机蓝牙各类服务对应的UUID,可以通过下面这个网站进行查询:
https://www.douban.com/group/topic/20009323/

顺便讲下蓝牙串口app的使用,首先需要在系统设置里,连接上HC-05的蓝牙,默认配对密码为1234,默认波特率为9600,默认名为HC-05。最好在连接后再看一下对应的MAC地址,因为我做的是单一连接,单片机同一时间只能接入一个蓝牙设备,所以需求对更改连接蓝牙模块需求要求不大,如果用户不在创建项目时更改设备MAC地址,则使用的就是默认的MAC地址,所以也没有做选择蓝牙设备的模块。

博客附本项目截图以及项目源码地址。

需要的权限

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<!-- 6.0以上需要加的额外权限 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

获取蓝牙适配器

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

不支持蓝牙时

// If the adapter is null, then Bluetooth is not supported
if (mBluetoothAdapter == null) {
   
	Toast.makeText(this, "Bluetooth is not available", Toast.LENGTH_LONG).show();
	finish();
}

绑定蓝牙设备

// String MACAddr = "xx:xx:xx:xx:xx:xx";
BluetoothDevice bluetoothDevice = mBluetoothAdapter.getRemoteDevice(MACAddr);

*如果检测到蓝牙没打开,调用系统蓝牙设置(可选)

Intent intent = new Intent(Settings.ACTION_BLUETOOTH_SETTINGS);
startActivity(intent);

连接设备,开启蓝牙连接线程

public void connect(BluetoothDevice device) {
   
		printLog("connect to: " + device);
		// Start the thread to connect with the given device
		mConnectThread =
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值