- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我最近在 iOS 和 Android 上开发处理蓝牙 BLE 设备的原生应用。
对于 iOS,我使用 CoreBluetooth 和 Android BluetoothDevice
当找到 BLE 设备时,可以在 Android 上使用 MAC 地址识别它,在 iOS 上使用设备的 UUID 识别它。
同一设备返回的示例包如下:
iOS
CBPeripheral: 0x1700ff880,
identifier = A3D26155-414C-4940-8EB9-C754AD202B64, //UUID
name = DEVICE01,
state = disconnected
安卓
mDevice=00:18:31:84:37:E5, //MAC ADDRESS
mScanRecord=ScanRecord [mAdvertiseFlags=6,
mServiceUuids=[0000fff0-0000-1000-8000-00805f9b34fb],
mManufacturerSpecificData={}, mServiceData={},
mTxPowerLevel=-2147483648, mDeviceName=DEVICE01],
mRssi=-58,
mTimestampNanos=5196365700642
问题是我无法在两个平台之间识别同一设备,因为在 iOS 中标识符是 UUID,而在 Android 中标识符是 MAC 地址。
我一直在看如何在 iOS 上访问 MAC ADDRESS,说安全问题不允许,而 Android 上的 UUID 没有类似于 iOS 的值。
是否有可能在两个平台之间访问一些公共(public)数据?
注意:很明显,设备名称在所有设备上都是重复的,不是用作标识符的变量。
最佳答案
没有。您需要让外设通告除蓝牙设备地址之外的一些自定义唯一标识符。
例如,您可以让每个设备都有一个唯一的名称,或者使用服务数据或制造商特定的数据字段。
关于android - 在 iOS 和 Android 中查找蓝牙外围设备的共享标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46352713/
我有一个基于 Java 的应用程序 (Android),我希望能够在后台执行可能长时间的操作。 AsyncTask 上的 Android 文档建议不要将它们用于可能运行时间超过几秒的任务(这是为什么?
所以我有外围 BLE 设备,我需要一些标识符以便稍后与另一部 iPhone 共享。示例我将 iPhone 'A' 连接到外围设备。 iPhone 'A' 将外围设备的标识符保存到数据库中,稍后我可以轻
当我指定这样的服务时: centralManager.scanForPeripherals(withServices:[BEAN_SERVICE_UUID],选项:[CBCentralManagerS
我是一名优秀的程序员,十分优秀!