• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

鸿蒙OS BLE扫描和广播

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

场景介绍

通过 BLE 扫描和广播提供的开放能力,可以根据指定状态获取外围设备、启动或停止 BLE 扫描、广播。

接口说明

接口名 功能描述
startScan(List<BleScanFilter> filters) 进行 BLE 蓝牙扫描,并使用 filters 对结果进行过滤。
stopScan() 停止 BLE 蓝牙扫描。
getDevicesByStates(int[] states) 根据状态获取连接的外围设备。
BleCentralManager(BleCentralManagerCallback callback) 获取中心设备管理对象。
接口名 功能描述
onScanCallback(BleScanResult result) 扫描到 BLE 设备的结果回调。
onStartScanFailed(int resultCode) 启动扫描失败的回调。
接口名 功能描述
BleAdvertiser(Context context, BleAdvertiseCallback callback) 用于获取广播操作对象。
startAdvertising(BleAdvertiseSettings settings, BleAdvertiseData advData, BleAdvertiseData scanResponse) 进行 BLE 广播,第一个参数为广播参数,第二个为广播数据,第三个参数是扫描和广播数据参数的响应。
stopAdvertising() 停止 BLE 广播。
startResultEvent(int result) 广播回调结果。

中心设备进行 BLE 扫描

  1. 进行 BLE 扫描之前先要继承 BleCentralManagerCallback 类实现 onScanCallback 和 onStartScanFailed 回调函数,用于接收扫描结果。

  1. 调用BleCentralManager(BleCentralManagerCallback callback)接口获取中设备管理对象。

  1. 获取扫描过滤器,过滤器为空时为不使用过滤器扫描,然后调用 startScan()开始扫描 BLE 设备,在回调中获取扫描到的 BLE 设备。

   // 实现扫描回调
   public class ScanCallback implements BleCentralManagerCallback{
       List<BleScanResult>results = new ArrayList<BleScanResult>();
       @Override
       public void onScanCallback(BleScanResult var1) {
           // 对扫描结果进行处理
           results.add(var1);
       }
       @Override    
       public void onStartScanFailed(int var1) {        
           HiLog.info(TAG,"Start Scan failed,Code:" + var1);    
       }
   }
   // 获取中心设备管理对象
   private ScanCallback centralManagerCallback = new ScanCallback();
   private BleCentralManager centralManager = new BleCentralManager(centralManagerCallback);
   // 创建扫描过滤器然后开始扫描
   List<BleScanFilter> filters = new ArrayList<BleScanFilter>();
   centralManager.startScan(filters);

外围设备进行 BLE 广播

  1. 进行 BLE 广播前需要先继承 advertiseCallback 类实现 startResultEvent 回调,用于获取广播结果。

  1. 调用接口 BleAdvertiser(Context context, BleAdvertiseCallback callback)获取广播对象,构造广播参数和广播数据。

  1. 调用 startAdvertising(BleAdvertiseSettings settings, BleAdvertiseData advData, BleAdvertiseData scanResponse) 接口开始 BLE 广播。

   // 实现 BLE 广播回调
   private BleAdvertiseCallback advertiseCallback = new BleAdvertiseCallback() {
       @Override    
       public void startResultEvent(int result) {
           if(result == BleAdvertiseCallback.RESULT_SUCC){
               // 开始 BLE 广播成功
           }
           else {
               // 开始 BLE 广播失败
           }
       }
   };
   // 获取 BLE 广播对象
   private BleAdvertiser advertiser = new BleAdvertiser(this,advertiseCallback);
   // 创建 BLE 广播参数和数据
   private BleAdvertiseData data = new BleAdvertiseData.Builder()           
                           .addServiceUuid(SequenceUuid.uuidFromString(Server_UUID))      // 添加服务的 UUID                  
                           .addServiceData(SequenceUuid.uuidFromString(Server_UUID),new byte[]{0x11})    // 添加广播数据内容
                           .build();
   private BleAdvertiseSettings advertiseSettings = new BleAdvertiseSettings.Builder()                        
                          .setConnectable(true)                 // 设置是否可连接广播
                          .setInterval(BleAdvertiseSettings.INTERVAL_SLOT_DEFAULT)     // 设置广播间隔
                          .setTxPower(BleAdvertiseSettings.TX_POWER_DEFAULT)        // 设置广播功率
                          .build();
   // 开始广播
   advertiser.startAdvertising(advertiseSettings,data,null);

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
鸿蒙OS WLAN发布时间:2022-02-02
下一篇:
鸿蒙OS 传统蓝牙远端设备操作发布时间:2022-02-02
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap