gpt4 book ai didi

android - 如何让我的应用程序通过 NFC 发送蓝牙配对请求

转载 作者:行者123 更新时间:2023-12-05 00:06:53 25 4
gpt4 key购买 nike

我正在尝试让两台 Android 设备 (M & O) 通过 NFC 进行蓝牙配对,经过数周的谷歌搜索、反复试验和更多谷歌搜索后,现在才设法让它部分工作。目前,当发送以下 NDEF 消息时,我已经让设备成功配对:

// Kotlin code where the 0x7F's are replaced with the sender's BT MAC in little-endian order
val msg = NdefMessage(NdefRecord.createMime("application/vnd.bluetooth.ep.oob", byteArrayOf(0x08, 0x00, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F)));

这之所以有效,是因为我在 NDEF 记录中硬编码了 BT MAC 地址。在 M 设备上,我可以通过编程方式获取 MAC,但这对 O 设备不利。此外,此方法需要用户许可,我认为以前的工作示例完全绕过了用户

无论如何,我的问题是:

  • 有没有办法让 Android 代表我生成配对请求,因为它知道蓝牙 MAC 地址但我不知道(或者至少不会在我自己以外的设备上)
  • 如果是,这是否意味着不再要求用户确认配对?

如果我无法让 Android 发送 MAC,那么整个练习就毫无意义,因为无论如何我都无法在野外获取 O 设备的 MAC 地址。另外,如果我不能在没有征得用户许可的情况下让它配对,那有什么意义呢?只需打开一个已知 BT MAC 地址的套接字即可自动启动配对过程,并且(假设我什至知道它)可以通过任意/专有的 NFC 消息发送

任何帮助将不胜感激,因为 Android NFC 文档在这一点上绝对没有用,而且我设法找到的每个在线示例都是古老的或假设 BluetoothAdapter.getAddress() 仍然返回有效地址

最佳答案

Android 9+ 不允许获取本地蓝牙适配器 MAC 地址(愚蠢,真的,完全没有意义,这里的安全/隐私 yield 微乎其微,用户体验受到严重伤害),因此,您可以在不对 MAC 地址进行硬编码的情况下执行经典的 NFC 到 BT 切换 (SSP),这意味着您无法执行此操作。

这是谷歌的一个糟糕举动,这让他们也放弃了“Android Beam”(因为它也是这样做的,NFC > BT 通过 NDEF SSP 切换)。

谷歌现在推出了“NearBy Share”应用来取代“Anrdoid Beam”,但由于它依赖于极慢的 Android“NearBy”API,它也非常慢(发现和连接需要 10 秒!)。

与仅需 3-4 秒的 Apple AirDrop 相比,这是一场灾难,Google 可能有一天会发现这一点并恢复这一民粹主义决定。

关于android - 如何让我的应用程序通过 NFC 发送蓝牙配对请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50058311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com