我正在开发一个与硬件设备连接的BLE(蓝牙LE)应用程序。我能够发现并连接到设备,从设备读取数据,将数据写入设备。
我在苹果的BLE文档中找不到的是,当你靠近一台设备时,当应用程序关闭时,如何获得通知。
我知道如何注册到特征通知,但此通知仅在应用程序位于后台时发生。
我知道iBeacon
可以在应用程序关闭时检测蓝牙,并发送通知,但我想在设备发现具有UUID
的特定BLE时收到通知。
iBeacon正在将BLE与UUID、major和minor字段一起使用,我不需要/不想要这些字段。我只想从BLE注册到某个UUID的通知。
我这样做了,没有任何回应:
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
[self initRegion];
- (void)initRegion
{
NSUUID *uuid = [[NSUUID alloc] initWithUUIDString:@"4AD3FADF-F179-4343-0000-000000000000"];
self.beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:uuid identifier:@"BLE-NAME"];
[self.locationManager startMonitoringForRegion:self.beaconRegion];
}
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
[self.locationManager startRangingBeaconsInRegion:self.beaconRegion];
NSLog(@"ENTER");
}
-(void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region {
[self.locationManager stopRangingBeaconsInRegion:self.beaconRegion];
NSLog(@"EXIT");
}
虽然iBeacon和通用BLE外围设备都使用蓝牙,但在iOS中的处理方式不同。
核心定位框架支持iBeacons(根据您问题中的代码),而实现GATT配置文件的BLE外围设备由核心蓝牙框架支持。
《核心蓝牙编程指南》介绍了如何查找和连接到BLE外围设备。本指南还包括关于后台处理的一节。
基本上,您可以向目标外围设备发出“连接”,当看到外围设备时,iOS将完成连接,即使您的应用程序在后台,也会调用您的委托方法来通知您连接。
但是,虽然许多iBeacon可以配置相同的UUID,但外设的UUID是唯一的,因此除非您之前发现了外设,否则您可能无法发出连接。
您可以在后台扫描正在广告特定服务的外围设备,并使用此功能发现和连接到外围设备
我拥有一个极地H10胸带,它以蓝牙低能量运行,并提供心率和心率变化。 我想用Android应用程序读取这些值。由于官方BLE教程中的帮助,我能够连接到设备。现在的问题是从设备中读取心率和心率变异性值。每次设备上有新值可用时,我都要读取该值(并且至少每秒都有新值)。 我找到了以下代码: 假设我与设备有连接,我如何使用它来提取心率和r-r间隔(节拍到节拍间隔)?如果有人能举个简短的例子,我会很高兴。此
在获得血压服务的所有特征(uuid:00002a35-0000-1000-8000-00805f9b34fb)后,我无法获得这些值(血压测量机的收缩、舒张和脉搏),而且我也不了解所有这些特征和描述符的意义。所以请大家帮我解决这个问题。
如何在objective C或swift中获取设备的MAC地址。有没有办法从“标识符”字段获取MAC地址。
我正在尝试使用Android Studio作为IDE和Java作为编程语言与温度计BLE设备进行交互。使用智能手机上的应用程序,我发现了该设备在运行过程中暴露的服务:有很多通用服务/特性和一个自定义服务。 首先,我试着阅读 健康温度计服务(UUID=00001809-0000-1000-8000-00805F9B34FB) 从服务列表中恢复特征并访问其描述符: 在这种情况下,我可以看到测量的结果在
我是新来的JavaScript,所以我可能有一些非常规的编程方式。也就是说,我正在做一个项目,我需要读写数据到自定义BLE设备。我使用gatt服务器协议进行连接。我能够与设备连接,但现在我试图从寄存器中读取数据。 我看了从谷歌以及网络蓝牙github的网络样本,但我无法理解它。下面的代码是我目前试图打破这一点。早期的尝试让我陷入了这样一个事实,即我得到的值是一个对象或一个promise对象。
我有3台Android设备,三星Galaxy S3手机,三星Tab4和Verizon OEM平板电脑。Verizon OEM平板电脑不支持BLE、API 17。我从android开发者网站安装了“BLE设备扫描”,并在Galaxy S3上运行。它只显示Verizon平板电脑是找到的设备。当我在三星Tab4上运行相同的应用程序时,它只显示Galaxy S3作为找到的设备。如果我只看Galaxy S3