我正在寻找一种无需用户干预即可通过蓝牙连接到 Android 设备的方法(假设至少在设备上设置为“可发现”)。从 2.0 开始,设备似乎会在首次相互连接时提示输入随机 PIN 码。我已经尝试了一些蓝牙项目,但似乎都无法正常工作,因为底层蓝牙适配器代码总是会启动。
有什么办法解决这个问题吗?谢谢。
最佳答案
正如 Janusz 所解释的,不可能自动与不同的设备配对,但可以在不配对的情况下与其他设备通信。从 API 级别 10 开始,BluetoothDevice.createInsecureRfcommSocketToServiceRecord方法与搭配BluetoothAdapter.listenUsingInsecureRfcommWithServiceRecord方法允许您创建一个“不安全”的 RFCOMM channel 来连接两个设备,而无需将它们配对。这个 channel 很容易受到中间人攻击:任何其他设备都可能拦截连接,允许它读取每条消息并用自己的消息替换消息。这对您的应用程序来说可能是问题,也可能不是问题。另请注意,这仅允许您以这种方式建立 RFCOMM channel :它不允许您在不配对的情况下连接到(例如)耳机。
如果您已经知道其他设备的地址,则可以在不发现任何设备的情况下执行此操作。
关于Android:有什么方法可以通过蓝牙自动配对另一台设备而不提示输入密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2513720/