我正在开发一个简单的原型,其中 Android 应用程序充当外围设备(广告)并从中央设备(扫描)接收连接。 GATT 定义了一个单一的“加密”特征(当中央试图从中读取时,它会触发绑定)。
理论上到目前为止一切顺利。为了进行测试,我已经移除了两部手机的绑定。干净的状态。 iPhone BLE(真实)mac 地址:8C:7A:AA:81:4E:5B。 现在我将 iPhone (iOS 16) 应用程序连接到 Android (S10 / Android 12):
17:17:21.554 connected; status: success; address: 58:34:47:11:A1:F7
>> iPhone (central) tries to read 'encrypted' characteristic
17:18:09.039 state changed: bonding; deviceAddress: 58:34:47:11:A1:F7
>> pairing pop up is accepted on both phones
17:18:12.141 read request; Address: 58:34:47:11:A1:F7;
17:18:12.151 state changed: bonding; deviceAddress: 8C:7A:AA:81:4E:5B
17:18:12.709 state changed: bonded; deviceAddress: 58:34:47:11:A1:F7
17:18:18.096 state changed: bonded; deviceAddress: 8C:7A:AA:81:4E:5B
检查 BluetoothAdapter.bondedDevices:
device [0]: address: 58:34:47:11:A1:F7, state: bonded
device [1]: address: 8C:7A:AA:81:4E:5B, state: bonded
基本上,连接的设备 mac:58:34:47:11:A1:F7,然后绑定发生在 '58:34:47:11:A1:F7' 和 '8C:7A:AA:81:4E:5B '.这真的很奇怪! 8C... 是真实的 iPhone mac 地址。但是我怎么知道呢?据我所知,连接的设备是 58:34:47:11:A1:F7 ....
我的问题/其他观察:
至于实现,很简单:
这可能是实现错误吗?几乎没有其他我可以检查...