使用蓝牙连接iOS和Android设备是否可行?

4

我需要制作一个应用程序来配对iOS和Android设备(iPhone 5,iPad 3,Galaxy S3,Nexus 7都使用蓝牙4.0),然后彼此发送数据。

  • 这种数据的数量是否有限制?我们可以发送像照片或PDF之类的东西吗?

我已经使用CoreBluetooth和Apple的示例代码BTLE_Transfer在2个iOS设备之间完成了配对和数据传输。

据我所知,外围设备(服务器)可以向中央设备(客户端)进行广告推送。中央设备在周围进行扫描,然后通过查找服务广告的UUID来尝试找到服务器。

当我在Android上创建一个服务器时,它正在等待连接(监听),我知道我的服务器的UUID和MAC地址。但是当我使用iPhone扫描(当然要扫描相同的UUID)时,我找不到服务器。

  • 那么,安卓服务器是否有可能像iOS上的外围设备一样进行广告推送?
  • 或者,我的iPhone客户端是否有可能使用服务器的MAC地址进行连接?

你正在使用哪个Android开源框架进行BLE开发? 如果你没有搜索限制性外设列表,那么你能在iPhone上看到它吗? 由于TexasInstruments已经提供了通过BLE进行固件OTA更新的主要步骤,因此它应该可以处理大文件(我听说你需要实现某种通知)。 - Larme
3个回答

10

问:这个数据量有限制吗?我们能发送像照片或PDF这样的东西吗?

Bluetooth Low Energy并非为发送大量数据而优化,也不适用于流媒体。它更适合定期发送小块数据(例如温度读数、时间等)。请查看此答案以了解BLE传输与经典蓝牙的区别。尽管如此,您仍然可以通过BLE发送大量数据,且数据量是无限的。但是,这可能会变得不可靠和相对较慢。

问:那么Android服务器是否有可能像iOS上的外设一样进行广告呢?

作为服务器/客户端与外设/中央完全不同:-

外设/中央决定了如何建立连接。中央设备应发起连接。外围设备应进行广告并等待连接请求。

客户端/服务器决定了数据如何分配。Gatt服务器保存数据。Gatt客户端可以读取、写入或被通知(获取连续的读数流)这些数据。在大多数情况下,服务器也是外设,但这并非强制性要求。

因此,回答您的问题,是的,服务器可以像iOS上的外设一样进行广告。但是,对于Android,此功能尚不可用,并将成为下一个版本(Android L)发布的一部分。请参见此答案以获取更多信息。

问:或者我的iPhone客户端是否可以使用服务器的MAC地址进行连接呢?

据我所知,在 coreBluetooth 中,您需要使用外设设备的 UUID 而不是 MAC 地址来连接它。您不需要知道外设设备正在广告的服务。最好的方法是扫描外设设备,然后连接到具有您已知 UUID 和/或广告数据的外设设备。
希望这可以帮到您。

0

我不确定。蓝牙低功耗不适合传输大文件。在一个请求中,手机只有18个字节。

Nexus 7的蓝牙芯片存在一些缺陷-不能正常工作。

尝试iPhone上的免费应用程序-Light Blue。

所以...

第一个问题:是的。

第二个问题:是的,但这不是一个好主意。 iPhone中的MAC地址每10分钟更改一次,并且所有人都会打开/关闭蓝牙。


0

通常情况下,发送大文件最好使用互联网连接(通过云),有许多框架可以为您减少开销。

然而,主要问题仍然是如何确定要将数据发送到哪个设备。

有多种方法可以自己完成这项工作,例如使用BLE甚至声音。

说实话,这需要很多工作,因此,如果您的应用程序是面向终端用户的,则建议使用可以为您执行跨平台发现的框架,例如:http://p2pkit.io 或Google Nearby。

声明:我在Uepaa工作,开发iOS和Android的p2pkit。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接