创新互联鸿蒙OS教程:鸿蒙OSBLE扫描和广播

场景介绍

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、网络空间、营销软件、网站建设、细河网站维护、网站推广。

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

接口说明

接口名 功能描述
startScan(List 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{
       Listresults = new ArrayList();
       @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 filters = new ArrayList();
   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);

网站标题:创新互联鸿蒙OS教程:鸿蒙OSBLE扫描和广播
当前路径:http://www.shufengxianlan.com/qtweb/news3/296653.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联