安卓蓝牙搜索

1 前言

  蓝牙:是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换。蓝牙的波段为2400–2483.5MHz。其特点是低成本/传输距离近和低功耗。
  蓝牙技术发展到现在,其应用领域十分广泛。随着手机的日益普及,大部分可穿戴设备以及医疗设备都需要与手机进行通信,将设备中的数据上传至手机中供用户查看。由于蓝牙技术的便捷性,大多数厂家在选择通信方式时采用了蓝牙通信方式。

2 添加权限

  安卓系统对于蓝牙开发设置了系统权限,因此首先在AndroidManifest.xml文件中添加权限。

<!-- 蓝牙权限 -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

  为适配安卓6.0以及以上版本需要添加一个模糊定位的权限

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

  在设置手机权限管理中允许此权限,否则会出现无法搜索到设备的情况。也可以在代码中使用动态申请权限的方式,申请代码如下:

ActivityCompat.requestPermissions(
        this,
        new String[] {
                 Manifest.permission.ACCESS_COARSE_LOCATION
        },
        MY_PERMISSION_REQUEST_CODE
    );

3 打开蓝牙

  在执行蓝牙搜索设备之前,需要询问打开手机蓝牙,申请打开手机蓝牙的关键代码如下:

```
//获取系统蓝牙适配器管理类
private BluetoothAdapter mBluetoothAdapter = BluetoothAdapter
.getDefaultAdapter();

//如果手机支持蓝牙,并且蓝牙处于关闭状态则 询问打开蓝牙
//isEnabled()方法判断蓝牙是否处于打开状态
if (mBluetoothAdapter != null && !mBluetoothAdapter.isEnabled()) {
Intent enableBtIntent = new Intent(
BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, 1);
}

// 申请打开蓝牙请求的回调
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
if (resultCode == RESULT_OK) {
Toast.makeText(this, "蓝牙已经开启", Toast.LENGTH_SHORT).show();
} else if (resultCode == RESULT_CANCELED) {
Toast.makeText(this, "没有蓝牙权限", Toast.LENGTH_SHORT).show();
finish();

top Created with Sketch.