- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我使用 Nexus 4(4.4 kitkat)作为中心,iPad 作为外围设备。外围设备有一项广告服务。广告数据包有一些数据(22 字节)+ 服务 UUID。当我尝试扫描外围设备时发现了 Android、iPad 外围设备。但是,当我尝试从回调中的 scanRecord 参数获取服务 UUID 时,我找不到它。我得到的只是外围设备正在发送的 20 字节数据。当我尝试扫描设备时UUID 我无法发现那些外围设备。
以下是广告服务的iOS代码。使用的服务ID是“0000192f-0000-1000-8000-00805f9b34fb”
CBUUID *serviceUuid = [CBUUID UUIDWithString:TRANSFER_SERVICE_UUID];
[self.peripheralManager startAdvertising:@{CBAdvertisementDataServiceUUIDsKey : @[serviceUuid],
CBAdvertisementDataLocalNameKey:[[BTLEConfigs sharedBTLEConfig] getAdvertizingUUID]}];
当我在没有服务 UUID 的情况下扫描时发现设备。
// Device scan callback.
private BluetoothAdapter.LeScanCallback mLeScanCallback =
new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device, int rssi, final byte[] scanRecord) {
runOnUiThread(new Runnable() {
@Override
public void run() {
//-- how to retrieve the service id from scanRecord
}
});
}
};
服务是在两个 iOS 设备之间发现的,但在 Android 设备和 iOS 外围设备之间它不工作。如何扫描具有 16 位服务 UUID 的外围设备?感谢任何帮助。
最佳答案
扫描记录字节数组包含 EIR 格式的数据。查看Bluetooth Core Specification第 8 节。
扫描记录包含一个或多个顺序的 EIR 条目,其格式如下:
<entry length (1 byte)> <data type (1 byte)> <data (length - 1 bytes)>
您正在查找类型为 0x02 或 0x03 的 EIR 条目(参见 Bluetooth Core Specification 第 18.2 节)。条目的数据将包含一个或多个 Little Endian 格式的 UUID。
示例扫描记录:
02011a0303b4540a094c69676874426c7565
可以分解为:
02 01 1a Flags - 1a
03 03 b454 16-bit service UUID - 54b4
0a 09 4c69676874426c7565 Local name - LightBlue
关于安卓蓝牙 : Retrieve service UUID in onLeScan() callback when advertised from iOS Peripheral,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20352200/
我的任务很简单,就是编写连接 2 台 Android 设备并添加通信的应用程序。我发现了什么? Android BLE 不支持“外设”角色。 1) 那就是说我不能通过特殊的 UUID 将一个 andr
我想从蓝牙读取超过20字节的数据到树莓派3b+。我重写 DefaultDelegate 和 handleNotification(cHandle, data),并从 handleNotificatio
我正在创建一个 Xamarin.Ios 蓝牙应用程序,我的问题如下: 有没有办法一次性发现外设中所有服务的特征。我的意思是说如果我有三个服务(a、b、c)并且我调用 peripheral.discov
我只想获得附近蓝牙设备名称的列表。但是,peripheral.name 始终为 nil。广告包中的名称也始终为零。我附近有 7 台设备。我能看到他们,但看不到他们的名字。 我正在使用以下代码: [se
我一直在使用 CoreBlueTooth 框架在 BTLE iOS 设备之间进行通信,但我看到了一个奇怪的行为。这是我正在做的: iOS 设备 1(外围设备):公开可写特性。 iOS 设备 2(中央)
我使用下面的代码 [centralManager scanForPeripheralsWithServices:serviceUUIDArray options:[NSDiction
我的应用程序与外围设备的蓝牙通信有关。从发现到连接,每个功能都工作正常。在断开外围设备与应用程序的连接时,我编写了这样的代码 -(void) disconnect { if (_selecte
连接到广播我感兴趣的特定服务的 BLE 设备后,为了发现此服务,我正在调用: [self.peripheral discoverServices:@[[self.class serviceUUID]]
这是我的场景: 我连接了两个外围设备,将我的应用程序置于后台模式并开始使用外围设备,直到它们与我的应用程序失去连接。回来时,他们在触手可及时不会再次连接。 当我在应用程序在前台运行时执行相同的实验时,
我正在以前使用 MFi 设备的项目中使用 BLE。 目标是实现一种串行连接。 使用 EAaccessory,我有一个弹出框,要求连接设备并且工作正常。 使用 CB,我添加了一个 View ,我调用它来
当外围设备有配对信息时,如何强制 iPhone 与未配对的外围设备配对。 最佳答案 Core Bluetooth 中没有用于响应绑定(bind)过程的 API。 如果外围设备不需要加密,则当 iOS
我已经编写了一些 CoreBluetooth 代码,我可以发现设备,但我似乎无法发现我发现的外围设备的特征。谁有好的示例代码可供我用来验证我的代码? 这是我写的: #import "ViewContr
如果 iOS 应用程序已经与退出广告模式的 BLE 外围设备配对,它能否仅使用设备特定的 UUID、retrievePeripherals 进行连接,以及连接外设? 如果不是,是否只有一种模式可以让外
我刚开始使用 BLE,目前正在尝试制作一个可以连接到我的自定义 BLE 设备的简单应用程序。我能够发现 BLE 设备,但由于某种原因我无法连接到它。我尝试使用“浅蓝色”对其进行检查,它显示我的设备可连
我正尝试在 Central 中启动 BLE和 Peripheral模式。为了简单起见,现在使用硬编码变量。 我想我已经根据文档实现了所有内容。 我可以使用 Android 智能手机检查外设模式是否正常
在我们的系统中,我们有一个使用 BlueZ 5.50 的 BLE 外设(在本例中,在 RPi4 上运行)。 我们有一个 iOS 应用程序,它作为一个中心连接到这个外设。 这个连接可以在 btmon 中
我正在开发一个 iPhone 应用程序和一个 Mac 应用程序,它们通过蓝牙 LE 相互通信。 iPhone是中心,Mac是外围。我希望 iPhone 应用程序能够在重新启动后重新连接到 Mac 应用
在我目前正在从事的项目中,我正在使用单例类来处理所有与蓝牙相关的任务。它是 CBCentralManager对象处理与多个外围设备的连接。当CBPeripherals被发现,我让用户选择外围设备并连接
我正在开发 BLE 应用程序。我已经完成了在移动应用程序(CENTRAL - BluetoothGattClient)和外围设备(GATT SERVER)之间建立通信,尽管不是很顺利。 PERIPHE
开发 corebluetooth 应用程序并在与外围设备通信等几个方面感到困惑。为了从中检索信息,我对编写要观看的命令感到困惑。请在下面找到我的代码 int sendcommand[6]; s
我是一名优秀的程序员,十分优秀!