BLE广告包获取频率变得非常低

Posted

技术标签:

【中文标题】BLE广告包获取频率变得非常低【英文标题】:The BLE advertisement package getting frequency become very low 【发布时间】:2016-09-07 03:54:56 【问题描述】:

我的项目需要接收 BLE 广告包,并在不连接 BLE 设备的情况下处理 kCBAdvDataManufacturerData。BLE 设备每秒发送 1 次广告包。在空视图控制器中,我每秒接收 1 次广告包,但在我的我显示 BLE 广告包数据的控制器,我接收广告包的频率减少到 1 次/4 秒或更低。在这个控制器中,我发送一些 http 请求并使用 NSTimer 更新 UI 每秒 1 次。我在 dispatch_sync 中处理 kCBAdvDataManufacturerData (dispatch_get_global_queue(0, 0),并在 mainqueue 中更新 UI。 有没有人想提高接收BLE广告包的频率?

【问题讨论】:

【参考方案1】:

-1。首先你需要开始发现。

-(void)startDiscovery

if (self.mBtmanager == nil) 
  _mScanState = false;
    self.mBtmanager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
    self.mBtmanager.delegate = self;
    
if (self.mBtmanager.state != CBCentralManagerStatePoweredOn) 
    _mScanState = true;

    NSDictionary *scanOption = @CBCentralManagerScanOptionAllowDuplicatesKey:@YES;
[self.mBtmanager scanForPeripheralsWithServices:[[NSArray alloc] initWithObjects:[CBUUID UUIDWithString:JAALEE_ADV_SERVICE_UUID_STRING], nil] options:scanOption];

- 2. 你需要连接到 Beacon。

-(void)startConnectDevice:(CBPeripheral*)peripheral

peripheral.delegate = self;
[self.mBtmanager connectPeripheral:peripheral options:nil];
 

-3。然后使用 writeServicesUUID 更改广播间隔

 [peripheral writeValue:value forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse];

-最后 CONFIGURE_BROADCAST_INTERVAL_CHARACTERISTIC_ 会帮助你。

【讨论】:

我解决了这个问题,还是谢谢你的关注。

以上是关于BLE广告包获取频率变得非常低的主要内容,如果未能解决你的问题,请参考以下文章

BLE物理层特性

是否有可能改变Android中蓝牙传输的频率?也许通过NDK?

低功耗蓝牙BLE之连接事件连接参数和更新方法

声音到 3 个主要频率(低、中、高)

gpu占用低和内存频率有关系吗

如何看GPU频率