Android 低功耗蓝牙(BLE)开发(4)-- 蓝牙扫描和连接

本文详细介绍了Android低功耗蓝牙(BLE)的扫描和连接过程。包括添加权限、判断设备是否支持BLE、开启蓝牙、扫描BLE设备以及获取扫描结果。扫描时需要注意减少功耗,找到设备后及时停止扫描。连接GATT Server时,通过BluetoothDevice的connectGatt方法,创建BluetoothGatt对象以进行后续操作。文章提供了完整的实现代码。
摘要由CSDN通过智能技术生成

在了解了API里面的常用类和方法后,现在来看蓝牙打开和扫描的实现

蓝牙扫描

蓝牙扫描实现的基本步骤如下:

1.添加权限
2.判断设备是否支持BLE
3.判断蓝牙是否开启,如果未开启,则弹出开启窗口
4.开启后,开始进行蓝牙扫描
5.通过BluetoothAdapter.LeScanCallback获取扫描结果

下面具体来实现蓝牙的扫描过程

1.权限的添加

在AndroidManifest.xml文件里面添加:

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

除了蓝牙权限外,如果需要BLE feature则还需要声明uses-feature:

<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>

required为true时,则应用只能在支持BLE的Android设备上安装运行;required为false时,Android设备均可正常安装运行,需要在代码运行时判断设备是否支持BLE feature

2.判断设备是否支持BLE

因为在Api18(4.3)以下是不支持BLE的,如果系统版本小于4.3,则不会再进行下一步操作,在4.3以上的系统中,则去获取BluetoothAdapter, BluetoothAdapter是从系统服务获取到的,全系统就一个,获取到BluetoothAdapter,我们才能进行下一步操作,具体实现代码如下:

/**
 * 判断是否支持蓝牙设备
 * @return
 */
public  boolean isBluetoothValid(){
    if(Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN_MR1 ||
            !mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)){
        return false;
    }
    BluetoothManager bluetoothManager = (BluetoothManager) mContext.getSystemService(Context.BLUETOOTH_SERVICE);
    mAdapter = bluetoothManager.getAdapter();
    if(mAdapter == null){
        return false ;
    }
    return true ;
}

3.判断蓝牙是否开启

上面已经获取到了BluetoothAdapter,通过

/**
* 判断蓝牙是否打开
* @return
*/
private boolean isBluetoothOpen() {
//        BluetoothManager bManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
//        BluetoothAdapter mAdapter = bManager.getAdapter();
    return mAdapter.isEnabled();
}

就可以获取蓝牙是否开启,如果没开启,则开启蓝牙

private void enableBluetooth(){
       if(!mAdapter.isEnabled()){
            mAdapter.enable();
       }
 }

整个判断过程如下:

if(isBluetoothValid()){ //判断设备是否支持Ble蓝牙
        if(isBluetoothOpen()){ //蓝牙已经打开,则开始进行蓝牙搜索
            scanDevice();
        }else{ //如果蓝牙没有打开,则弹出Dialog窗口提示用户进行打开,此
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值