蓝牙 4.0
蓝牙4.0集成了传统蓝牙和低功耗蓝牙两个标准,所以蓝牙4.0有双模和单模之分。双模即传统蓝牙部分+低功耗蓝牙部分,单模即是单纯的低功耗蓝牙部分(BLE)。
蓝牙操作流程
蓝牙开发之前需要在 AndroidManifest.xml
中申请蓝牙相关权限
<!-- 蓝牙相关权限 -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-feature
android:name="android.hardware.bluetooth.le"
android:required="true" />
<!-- Android 6.0 需要申请位置权限 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
蓝牙操作基本可以分为五步:
- 打开蓝牙
- 扫描设备
- 连接设备
- 控制设备
- 接收数据
Android BLE 相关功能及 API
说明
- 服务:每个蓝牙设备,都有多个服务,每个服务都有不同的作用,我们可以根据蓝牙协议提供的 service uuid 找出 相应的service。
- 特征值:蓝牙数据传输的载体。每个服务里包含多个特征值,每个特征值都有自己的特性(读、写或通知等)。
1、判断蓝牙是否打开
bluetoothAdapter.isEnabled()
,true 蓝牙已打开;false 蓝牙未打开,需要跳转到设置页面打开蓝牙。跳转蓝牙设置页面,打开蓝牙
Intent intent = new Intent(Settings.ACTION_BLUETOOTH_SETTINGS); startActivity(intent);
2、获取 bluetoothAdapter 并扫描蓝牙
蓝牙打开后,我们首先需要获取蓝牙适配器 bluetoothAdapter,获取蓝牙适配器后,就可以进行蓝牙扫描操作。
- 获取 bluetoothAdapter
public void openBle() {
if (null != mBtAdapter) {
return;
}
BluetoothManager manager = (BluetoothManager) mContext.getSystemService(BLUETOOTH_SERVICE);
if (null != manager) {
mBtAdapter = manager.getAdapter();
}
if (null == mBtAdapter) {
mBtAdapter = BluetoothAdapter.getDefaultAdapter();
}
//设备不支持蓝牙功能
if (mBtAdapter ==