说明:本人因需要做一个APP,通过蓝牙与单片机进行通信,但所参阅的教程不够具体,版本也很乱,用了很长时间才搞定,现将经验分享出来,给大家提供参考
开发环境 Android 5.0 (最低)
IDE Android Studio2.3
蓝牙模块 JDY-08/JDY-10
android是从android4.3版本才开始支持BLE的,到android5.0以后谷歌把扫描单独做成一个对象了(BluetoothLeScanner),本教程只介绍Android5.0部分
- 一个低功耗蓝牙(ble)可以包括多个Profile
- 一个Profile中有多个Service(每个Service对应一个UUID)
- 一个Service中有多个Characteristic(每个Characteristic对应一个UUID)
- 一个Characteristic中包括一个value和零个或一个或多个Descriper(每个Descriper对应一个UUID)
- 通过UUID可直接找到对应的Service(服务) /Characteristic(特征)/Descriper(描述符)
- 例如 假设有一个智能手表 他的BLE具有很多Service,其中一个是心跳监测服务,一个服务有很多Descriper,其中有一个Descriper是心跳速率,他有一个value(我们假设他为速度值),还有很多Descriper(时间或者其他什么的),我们的串口通信只需要设置和读取Characteristic的Value值就好了。
建立一个空Activity,添加botten listView
一、添加权限
在mainifests->Androidmainifest.xml中加入以下代码
<uses-permission android:name="android.permission.BLUETOOTH"/><!--声明蓝牙使用权限-->
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/><!--声明蓝牙开启权限-->
<uses-feature android:name="android.bluetooth_le" android:required="true"/><!--声明应用只为具有蓝牙的设备提供-->
<uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION"/><!--兼容android 6.0-->
二、开启蓝牙
//声明变量
private BluetoothManager bluetoothManager;
private BluetoothAdapter bluetoothAdapter;
//获取buletoothAdapter并打开蓝牙
mBluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
mBluetoothAdapter = mBluetoothManager.getAdapter();
if (!mBluetoothAdapter.isEnabled()) {
startActivityForResult(new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE), 0); // 弹对话框的形式提示用户开启蓝牙
}