- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试将 coreBluetooth 集成到我的应用程序中。这是我的代码:
@interface Central() <CBCentralManagerDelegate>
@property (strong, nonatomic) CBPeripheral * activePeripheral;
@property (strong, nonatomic) CBCentralManager * centralManager;
@end
@implementation Central
- (id) init
{
self = [super init];
if (self)
{
NSDictionary *options = @{CBCentralManagerOptionShowPowerAlertKey: @YES};
self.centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:defaultGlobalQueue options:options];
}
return self;
}
- (void) startScanning:(NSInteger)timeout
{
self.activePeripheral = nil;
[self.centralManager scanForPeripheralsWithServices:@[[CBUUID UUIDWithString:@"A65eBB2D-3D30-4981-9DB2-1996D88118A0"]] options:nil];
}
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{
if (self.activePeripheral != nil)
{
return;
}
self.activePeripheral = peripheral;
[self.centralManager connectPeripheral:peripheral options:nil];
}
- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral
{
[self.activePeripheral discoverServices:@[[CBUUID UUIDWithString:@"A65eBB2D-3D30-4981-9DB2-1996D88118A0"]]];
}
- (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error
{
// dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Disconnected from peripheral : %@",peripheral);
if (error)
{
NSLog(@"Error disconnecting peripheral: %@", error.localizedDescription);
//[self didErrorDelegateWithPeripheral:peripheral andError:error andCode:BLE_FAILED_TO_CONNECT];
}
}
- (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error
{
//Logic here
}
我在 viewcontroller
中调用 startScanning,它总是进入 (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)错误
调用[self.activePeripheral discoverServices:@[[CBUUID UUIDWithString:@"A65eBB2D-3D30-4981-9DB2-1996D88118A0"]]];
这是我经常看到的错误:
Error Domain=CBErrorDomain Code=7 "The specified device has disconnected from us." UserInfo=0x175b8810 {NSLocalizedDescription=The specified device has disconnected from us.}
有人知道我错过了什么吗?
感谢您的帮助。
最佳答案
我终于想通了问题,我们需要在尝试发现服务之前设置发现的外设的委托(delegate)
- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral
{
peripheral.delegate = self;
[self.activePeripheral discoverServices:@[[CBUUID UUIDWithString:@"A65eBB2D-3D30-4981-9DB2-1996D88118A0"]]];
}
关于ios - CBPeripheral 连接在调用 discoverServices 后保持断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24614159/
大多数时候,这在我的应用程序中正常工作。不幸的是,有时它在调用 discoverservice 后从未被触发。 我的代码是: - (void)centralManager:(CBCentralMana
我正在尝试将 coreBluetooth 集成到我的应用程序中。这是我的代码: @interface Central() @property (strong, nonatomic) CBPeriph
在为 iOS 开发 BLE 应用程序时,我在调用 discoverServices 后立即断开连接。我正在使用 4 个完全相同的 BLE 设备 (OEM) 进行测试,并且我一直在完全相同的两个设备上断
我正在为 network service discovery 使用 WiFi P2P ,并且我正在按照开发人员指南中概述的说明进行操作。这是我的服务类中的相关代码: public void onCre
我正在开发一个应用程序,该应用程序使用 UPNP 通过 UPNP 发现电视机顶盒,以便将在设备上拍摄的照片显示在电视上。 在 onCreate 中,我获取管理器并初始化 channel 。 prote
over here (GitHub link)我正在尝试在 Swift 中“跟踪/重现” HearthRateMonitor 示例。一切都很好,直到“discoverServices(nil)”没有调
当您在 Wi-Fi Direct 中调用 discoverPeers 时,它会将对等点列表返回给 PeerListListener 中的 onPeersAvailable 方法(一旦您调用 reque
TLDR:是否预期服务发现结果是通过 discoverServices() 产生的?会根据底层传输(LE 与 BR/EDR)而有所不同吗? 我有一个混合模式蓝牙配件,它提供了作为蓝牙经典设备和蓝牙 L
我是一名优秀的程序员,十分优秀!