背景:
本文的内容是针对单片机蓝牙模块(HC-42)开发的手机App。在这之前,我想先声明一点,手机与手机间的蓝牙连接方式”与“手机与HC间的蓝牙连接方式”是不一样的。原因就是手机搭配的是“经典蓝牙”模块,HC等蓝牙属于“低功耗蓝牙”模块。(二者的区别想了解的话建议你去看看其他朋友的文章),我在这里只想简单说一下这二者在功能代码实现上可以说是完全不一样的。这就解释了有一些朋友制作的软件明明可以与手机,平板等设备配对连接,却一直与HC蓝牙配对失败。
前言:
本文的内容只讲如何实现手机与HC蓝牙的配对,如果想了解一下手机与手机,手机与平板间的“经典蓝牙”通信方式,可以看我往期的博文,这篇博文讲的是如何制作一个基于蓝牙通信的聊天软件(类似于微信功能),也是一个挺有意思的项目(Android Studio制作蓝牙聊天通讯软件)
本文内容简介:
制作一个手机APP,无线连接HC蓝牙模块,将手机端数据发送给HC,从而控制STM32,文末会有资源分享。
简单通讯原理图:
如何制作这样一个App?
首先看一下本次的效果图:
一、软件UI界面部分的设计实现
可以看 软件UI界面设计的实现 这篇博文,先实现界面设计后,再完成接下来的功能代码实现。
二、功能代码的实现。
1、在AndroidManifest.xml中添加依赖:
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"
2、新建文件BlueToothController .java,完整代码及其解析如下:
package BluetoothPackage;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothGatt;
import android.bluetooth.BluetoothGattCallback;
import android.bluetooth.le.BluetoothLeScanner;
import android.bluetooth.le.ScanCallback;
import android.content.Context;
import android.content.Intent;
import java.util.ArrayList;
import java.util.List;
/**
* Created by WYB on 2023/4/28.
*/
public class BluetoothController {
private BluetoothAdapter mAdapter;//本手机的蓝牙适配器
private BluetoothLeScanner mLeScanner;//本手机蓝牙适配器上的扫描硬件
private Activity mActivity;
public static final int REQUEST_CODE_ENABLE_BLUETOOTH = 0;
public BluetoothController(Activity activity){
mAdapter = BluetoothAdapter.getDefaultAdapter();//获取本机蓝牙适配器
mLeScanner = mAdapter.getBluetoothLeScanner();//获取本机蓝牙扫描器
mActivity = activity;
}
public BluetoothAdapter getAdapter() {
return mAdapter;
}
public BluetoothLeScanner getmLeScanner(){
return mLeScanner;
}
/*
打开蓝牙设备
*/
public void turnO