原则上,Android 设备是不是可以通过蓝牙/GameKit 与 iPhone 交互?

Posted

技术标签:

【中文标题】原则上,Android 设备是不是可以通过蓝牙/GameKit 与 iPhone 交互?【英文标题】:Is it possible, in principle, for an Android device to interface with an iPhone over Bluetooth/GameKit?原则上,Android 设备是否可以通过蓝牙/GameKit 与 iPhone 交互? 【发布时间】:2010-01-17 10:16:47 【问题描述】:

(我对纯理论不感兴趣,但作为一种实用的近期或中期可能性,比如在 12-24 个月内。)

作为一个熟悉(但不专攻)两个主要智能手机平台的开发人员,我是否应该期待一个 android 库的出现,它可以将自己欺骗到 iPhone 应用的基于 GameKit 的网络上。平台之间的蓝牙接口可能会为开发有用的应用程序创造机会,这似乎是合理的,就像调制解调器通过梅特卡夫定律使 PC/Mac 平台受益一样。

我正在寻找两个答案之一:

    这显然不太可能(例如,因为加密)?如果是这样,原因是什么?原则上是否可行,但需要多年的逆向工程(如 SMB/CIFS/Samba)?或者它是一个不费吹灰之力的,只是时间问题?请提供证据支持你的理由。

    除了 GameKit 之外,还有其他方法可以直接进行点对点网络吗?例如,使用蓝牙或 ad-hoc WiFi 的手动网络?将 Android 设备欺骗到现有的 iPhone 应用程序中会很好,但我的主要问题是,这些设备是否可以相互通信!

【问题讨论】:

那太酷了……您现在可能可以做到了,基于网络。 (使用两者共同的网络语言) 是的,互联网是一种可能的后备方案,但它与蓝牙的低延迟有根本的不同。此外,GPS 还不够准确,无法真正判断用户之间是否非常接近,但使用 GameKit 很容易。 这个问题大约有 20 个月的历史。如果一个项目(开源或专有)具有这个有价值的特性,它似乎很可能是不可能的。因此,我正在更改正确答案。 到底有没有可能?我看到赏金被授予一个说明这是可能的答案。阿洛斯在这里***.com/questions/8707753/… 他们说这是可能的。请分享您的发现。谢谢。 您有带宽要求吗?当前答案使用 BLE,但这并不能为您提供高带宽连接。 【参考方案1】:

是的,这是可能的。 GameKit 是一种通过 BNEP 蓝牙连接使用 TCP 和/或 UDP 的协议。它还使用蓝牙 2.1+ 中的扩展查询机制来识别其他 ios 设备。

我能够模拟 EIR 响应,现在,有人需要对 GameKit 协议进行逆向工程。这不需要蓝牙,因为它也用于通过 WLAN 连接 GameKit。

如果有人可以为 WLAN 连接重新实现 GameKit,我可以完成蓝牙版本。

【讨论】:

您可以直接使用蓝牙 Bonjour,而不是使用 GameKit。关于我的相关问题的更多详细信息:***.com/questions/8070998/… 和我在其他地方发布的这个答案:***.com/a/8273661/39974。您能否详细说明/发布有关如何连接设备的代码?您能否发布更多关于 EIR 是什么以及如何使用它的详细信息? 这方面有进展吗?你能更新我们mringwal吗?你对这个伊万做了更多的工作吗? @yourfriendzak 我所做的很少的工作并没有导致成功的 Ubuntu 到 iPad 连接。我没有进一步挖掘。一个可能的原因是我在 VM 中运行 Ubuntu,另一个可能是 iOS 使用了我在 Ubuntu 中没有设置的蓝牙功能。【参考方案2】:

不,它不会很快出现,甚至根本不会出现……Apple 以其安全功能而自豪,蓝牙连接可以访问私人数据。在两家公司达成一致之前,可能不会有任何跨平台蓝牙框架。

前面的回答者所说的Bump使用远程服务器,并且传输的数据不是通过BT。

【讨论】:

blog.moritzhaarmann.de/blog/2014/04/27/sorry-state-of-p2p 这篇文章(写于 2014 年)建议可以通过蓝牙 LE。适用于 Android 4.3+ 和 iOS6+【参考方案3】:

GameKit 是 Bonjour,因此 Android 上通过蓝牙的 Bonjour(在 IP 上)应该可以工作。

【讨论】:

【参考方案4】:

这应该是可能的,因为蓝牙能够设置 tcp/ip 网络。虽然我对 iPhone SDK 一无所知,但 Android 确实有用于 TCP 连接的 BluetoothSocket 和 BluetoothServerSocket。

【讨论】:

谢谢,雪花夫人。我正在寻找可以准确证实这一假设的证据(文档、现有应用程序)。【参考方案5】:

这篇文章http://blog.moritzhaarmann.de/blog/2014/04/27/sorry-state-of-p2p/ 写于 2014 年,建议可以通过蓝牙 LE。适用于 Android 4.3+iOS6+

两个问题:

根据 Android Dashboard,只有大约 30% 的 Android 设备支持蓝牙 LE https://developer.android.com/about/dashboards/index.html?utm_source=ausdroid.net Android 到 Android 之间的通信必须使用其他方法完成(这不是一个大问题),因为 Android 设备不能充当 B LE 连接的服务器。

【讨论】:

好指点!实际上,最大的问题是 Android 手机上的蓝牙不稳定,以及所有 Android 设备都缺乏 BLE 外设支持。这需要使用其他方法的混合实现,以获得正确的 Android Android 支持。我碰巧在一家做这件事的公司工作:p2pkit.io,也许它可以帮助...【参考方案6】:

iPhone 上的 Bounjour 让您可以完全访问所有蓝牙协议,因此您不必使用 GameKit。至于何时有人会提供一个易于使用的 iPhone 到 Android GameKit 之类的框架 - 很难说。

如今,iPhone 已经可以使用 Bonjour 与任何其他蓝牙设备通信。

-t

【讨论】:

要成为可行的替代品,两个设备都必须支持 ad-hoc WiFi。是这样吗?我的快速调查表明它不是。 蒂姆,这令人鼓舞。我认为 iPhone 已经完全锁定了蓝牙访问。否则,有人可以编写一个桌面蓝牙应用程序来系绳。但我很想知道更多。 这个答案完全是错误的:少数可用的标准蓝牙协议由操作系统处理,自定义应用程序不可用。 我相信 rpetrich 是正确的。 iPhone 的开发者 SDK 不提供对蓝牙堆栈的访问。 Bump 与服务器通信以交换数据。它不是点对点的。【参考方案7】:

绝对有可能!事实上,我很惊讶有更多的人没有这样做!

理论:

蓝牙只是一个无线套接字,您可以将数据推送到另一端,就像 tcp/ip 一样。

练习:

http://www.techcrunch.com/2009/11/11/bump-goes-cross-platform-with-new-android-app-upgrades-iphone-version-too/

更好的是,Bump 是跨平台的,这意味着您可以将 Android 手机与 iPhone 碰撞,并且应该可以无缝运行。

【讨论】:

谢谢,这表明您可以编写跨平台的蓝牙应用程序!不过,我想知道他们是使用 GameKit 还是推出了自己的。 我猜在这种情况下,您自己滚动实际上会更容易,因此您可以完全控制发送的内容以及发送方式。 将此作为已接受的答案。无论您是否可以专门欺骗 GameKit,我希望有一种或另一种方式的文档。然而,令人鼓舞的是,至少,跨平台蓝牙是可能的。 Bump 不会欺骗 Gamekit,也不会使用蓝牙。它会回到云端并使用 GPS 来协调您在同一位置

以上是关于原则上,Android 设备是不是可以通过蓝牙/GameKit 与 iPhone 交互?的主要内容,如果未能解决你的问题,请参考以下文章

Android 蓝牙开发-打开蓝牙后能不能立即连接固定地址的蓝牙设备??还是需要进行判断啥的?

android中怎样判断蓝牙是不是连接

iOS 和 Android 无需连接即可访问的蓝牙设备是不是有唯一标识符?

Android开发之蓝牙(Bluetooth)操作--修改本机蓝牙设备的可见性,并扫描周围可用的蓝牙设备

Android 蓝牙 API 连接到多个设备

使用android-beacon-library检测蓝牙设备