源码地址 https://gitee.com/xzw421771880/bluetooth
# Bluetooth
#### 介绍
安卓经典蓝牙
#### 软件架构
java语言
Android Studio 4.1.2
先了解一下BluetoothAdapter
1. 该类仅继承了Object类;
2. BluetoothAdapter代表了移动设备的本地的蓝牙适配器, 通过该蓝牙适配器可以对蓝牙进行基本操作, 例如 : 启动设备发现(startDiscovery), 获取已配对设备(getBoundedDevices), 通过mac蓝牙地址获取蓝牙设备(getRemoteDevice), 从其它设备创建一个监听连接(listenUsingRfcommWithServiceRecord);
#### 使用说明
1.BluetoothAdapter.getDefaultAdapter()该静态方法可以获取该适配器对象.
2. 权限(可以和1放在一起)
main中添加
<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" />
//开启系统定位
if (Build.VERSION.SDK_INT >= 23&& !isLocationOpen()) {
Intent enableLocate = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(enableLocate,1);
}else {
}
// 申请打开蓝牙
if (!mBluetoothAdapter.isEnabled()) {
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, 1);
return;
}
//开启应用位置权限
ActivityCompat.requestPermissions(this,
new String[]{
Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.WRITE_CONTACTS, Manifest.permission.ACCESS_FINE_LOCATION},
0);
3.扫描 参考源码中public void startBluetoothDevicesDiscovery()方法
4.连接 参考源码中 public void getConnectedBlutooth(String address)方法
5.下发数据 public void writeData()
#### 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request
#### 特技
1. 研究过蓝牙的同学应该知道蓝牙下发速度是有瓶颈的
源码中使用ZLibUtils来实现数据压缩能够一定范围的实现数据量介绍,从而增加下发的速度