前段时间公司让帮忙做一个控制蓝牙设备的Android程序,主要就是给设备发一些命令。以前没接触过蓝牙相关的开发,所以查阅了大量的资料,最终鼓捣出来了,在此记录下
在这里蓝牙设备是服务端,因此程序只需要实现客户端连接蓝牙设备就行了
1.首先申请相关权限
前面两个是蓝牙相关的权限,后面两个是定位相关的权限,定位权限必须要给,否则会扫描不到蓝牙设备
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-feature android:name="android.hardware.location.gps" />
2 检测蓝牙是否开启,若未开启则去开启
BluetoothManager bluetoothManager =
(BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
mBluetoothAdapter = bluetoothManager.getAdapter();
if (!mBluetoothAdapter.isEnabled()) {
//去开启蓝牙
Intent enabler = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enabler, 205);
} else {
//开始扫描蓝牙设备
}
3 开始扫描设备
mLeScanCallback = new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(BluetoothDevice bluetoothDevice, int i, byte[] bytes) {//bluetoothDevice 就是扫描到的蓝牙设备,这里将扫描到的设备实时展示出来
if (bluetoothDevices==null){
bluetoothDevices=new ArrayList<>();
}
if (bluetoothDevice != null) {
boolean isSame=false;
for (BluetoothDevice device : bluetoothDevices) {
if (bluetoothDevice.getAddress().equals(device.getAddress())){
isSame=true;
}
}