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

我必须创build一个应用程序,将iOS和Android设备(iPhone 5,iPad 3,Galaxy S3,Nexus 7都使用蓝牙4.0)配对,然后将数据发送给对方。

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

我已经完成了使用CoreBluetooth的2个iOS设备和来自Apple BTLE_Transfer的示例代码之间的配对和发送数据

据我所知,外设(服务器)可以发布到中央(客户端)。 该中心正在扫描自己,然后尝试通过查找所宣传的服务的UUID来查找服务器。

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

  • 那么有没有可能让android服务器像iOS上的外设一样做广告?
  • 或者,也许我的iPhone客户端连接使用服务器的MAC地址的可能性?

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

蓝牙低功耗并未针对发送大量数据进行优化,也不针对stream式传输进行优化。 它更适合定期发送小块数据(如温度读数,时间等)。 请看这个答案 ,了解BLE传输与传统蓝牙的区别。 这就是说,您仍然可以通过BLE发送大量数据,而且数据量是无限的。 但是,这可能最终会变得不可靠和相对缓慢。

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

作为一个服务器/客户端是一个完全不同于周边/中央的东西:

外设/中央决定如何连接。 中央设备应该启动连接。 外围设备应该公布并等待连接请求。

客户端/服务器决定数据的分配方式。 GATT服务器保存数据。 GATT客户端可以读取,写入或通知(获得连续的读数)这些数据。 在大多数情况下,服务器也是外设,但这不是强制性的。

所以要回答你的问题,是的,服务器可以像iOS上的外设一样做广告。 但是,对于Android,此function尚不可用,并将成为下一个版本(Android L)版本的一部分。 请参阅此答案以获取更多信息。

问:或者也许我的iPhone客户端使用服务器的mac地址连接的可能性?

据我所知,在coreBluetooth你需要UUID,而不是MAC地址,外设连接到它。 您不需要知道从外围设备广告的服务。 你最好的办法是扫描外围设备,然后连接到UUID和/或你知道属于你的外设的广告数据。

我希望这有帮助。

我不确定。 蓝牙LE不是传输大文件的好主意。 在一个请求电话中,你只有18个字节。

Nexus 7蓝牙芯片有一些缺陷 – 无法正常工作。

尝试免费的应用程序的iPhone – 浅蓝色。

所以…

第一个问题:是的。

第二:是的,但这不是个好主意。 Iphone的MAc地址每10分钟交替一次,全部打开/closures蓝牙。

一般来说,发送大文件最好使用互联网连接(通过云),有许多框架可以减less你的开销。

但是,主要的问题仍然是如何发现你想要发送数据的设备。

可以有多种方式来自己做,比如使用BLE甚至声音。

说实话,它的很多工作,所以如果你的应用程序是最终用户驱动的,我会build议使用一个框架,可以跨平台发现你,如: http : //p2pkit.io或谷歌附近。

免责声明:我为Uepaa为iOS和Android开发p2pkit工作